#panic #static-assert #static-check

no-std dont_panic

panic!()-样的宏,在链接时引发错误而不是引发恐慌。可以用来静态确保某些代码不会引发恐慌。

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2017年7月6日

#4#static-assert


用于 dont_panic_slice

MITNFA 许可证

4KB
69

不要恐慌!()

确保代码在编译时不会引发恐慌。

示例

此代码可以正常编译和(不)运行

let should_panic = false;
if should_panic {
    dont_panic!("This will never execute.");
}

然而,此代码将导致链接错误

let should_panic = true;
if should_panic {
    dont_panic!("This will never execute.");
}

注意事项

  • 这仅在指定了适当的 opt_level 时才有效 - 它可能需要发布构建。
  • 错误消息是奇怪的链接错误。您不会得到行号等。
  • 可能存在您知道代码不可达但编译器无法证明的情况。

lib.rs:

此软件包提供与 panic!() 看起来非常相似的宏,但如果它们的调用没有被优化掉,它们将引发链接错误。这可以用来确保编译器优化掉某些代码。

示例

#[macro_use]
extern crate dont_panic;

fn main() {
/*
    let x = 6 * 9;
    if x == 42 {
        dont_panic!("6 * 9 == 42");
    }
*/
let x = false;
if x {
    dont_panic!("42");
}
}

使用 --release--features=panic 编译

无运行时依赖项

功能