#never #say #never #ever #flying-pigs

never-say-never

The never type (the true one!) in stable Rust

2 stable releases

6.6.666 Jan 19, 2022

#2302 in Rust patterns

Download history 508/week @ 2023-02-01 465/week @ 2023-02-08 403/week @ 2023-02-15 444/week @ 2023-02-22 303/week @ 2023-03-01 268/week @ 2023-03-08 333/week @ 2023-03-15 350/week @ 2023-03-22 464/week @ 2023-03-29 652/week @ 2023-04-05 2073/week @ 2023-04-12 4736/week @ 2023-04-19 4605/week @ 2023-04-26 4347/week @ 2023-05-03 6853/week @ 2023-05-10 5144/week @ 2023-05-17

22,158 downloads per month
Used in 7 crates (3 directly)

Zlib OR MIT OR Apache-2.0

8KB

::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:

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!

use ::never_say_never::Never;

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

No runtime deps