#slice #panic #static-assert #static-check

无 std dont_panic_slice

引发链接错误而不是恐慌的切片

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017 年 7 月 6 日

#5#static-assert

MITNFA 许可证

11KB
188

不要恐慌!() 切片

此包使用 dont_panic 包创建切片的替代品。 (还不是完全替代品。) 目标是确保代码永远不会恐慌。包的使用者必须向编译器证明恐慌代码是不可达的,通过在切片索引前检查边界。


lib.rs:

切片的非恐慌替代品。如果没有检查边界,则引发链接时间错误而不是恐慌。(还不是完全替代品。一些功能尚不齐全。)

示例

#[macro_use]
extern crate dont_panic_slice;

use dont_panic_slice::DPSlice;

fn main() {
    let arr = [0, 1, 2, 3];
    let dps = <&DPSlice<_>>::from(&arr as &[_]);
    assert_eq!(dps[0], 0);
    assert_eq!(dps[3], 3);
    // This would not compile (instead of run time panicking)
    assert_eq!(dps[42], 42);
}

您必须使用 --release 编译它。如果您不想减慢调试构建,可以使用 --features=panic 切换到正常的恐慌行为。

依赖关系