#say #ever #never #flying-pigs

never-say-never

稳定 Rust 中的 never 类型(真正的那个!)

2 个稳定版本

6.6.666 2022 年 1 月 19 日

#1639Rust 模式

Download history • Rust 包仓库 15911/week @ 2024-03-13 • Rust 包仓库 14815/week @ 2024-03-20 • Rust 包仓库 10306/week @ 2024-03-27 • Rust 包仓库 14805/week @ 2024-04-03 • Rust 包仓库 14003/week @ 2024-04-10 • Rust 包仓库 18013/week @ 2024-04-17 • Rust 包仓库 17546/week @ 2024-04-24 • Rust 包仓库 16157/week @ 2024-05-01 • Rust 包仓库 15124/week @ 2024-05-08 • Rust 包仓库 19859/week @ 2024-05-15 • Rust 包仓库 19213/week @ 2024-05-22 • Rust 包仓库 21399/week @ 2024-05-29 • Rust 包仓库 17782/week @ 2024-06-05 • Rust 包仓库 16971/week @ 2024-06-12 • Rust 包仓库 18949/week @ 2024-06-19 • Rust 包仓库 21832/week @ 2024-06-26 • Rust 包仓库

79,113 每月下载量
25 个包(直接使用 6 个) 中使用

Zlib OR MIT OR Apache-2.0

8KB

::never-say-never

Repository Latest version Documentation MSRV unsafe forbidden License CI

! 类型。在稳定 Rust 中。自 1.14.0 以来。

enum Never {} 定义更好,因为 ! 类型的实例会自动转换成任何类型,而 enum EmptyEnum {} 的实例需要一个显式的 match it {}

也就是说,以下代码无法编译

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

但以下代码可以编译!

use ::never_say_never::Never;

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

无运行时依赖