::never-say-never

Repository Latest version Documentation MSRV unsafe forbidden License CI

The ! type. In stable Rust. Since 1.14.0.

Better than an enum Never {} definition would be, since an instance of type ! automagically coerces to any type, whereas an instance of enum EmptyEnum {} needs an explicit match it {}.

That is, the following fails to compile:

rust ,compile_fail let x: u32 = match <u32 as TryFrom<u8>>::try_from(42) { | Ok(it) => it, | Err(unreachable) => unreachable, // Error, expected `u32`, found `Infallible` };

but the following doesn't!

```rust use ::neversaynever::Never;

let x: u32 = match Ok::<_, Never>(42) { | Ok(it) => it, | Err(unreachable) => unreachable, }; ```