2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2023年4月1日 |
---|---|
0.1.0 | 2023年4月1日 |
#1941 in Rust模式
每月23次下载
7KB
86 代码行
unreachable_checked!
Kixunil/dont_panic的分支,使用unreachable!代替panic!
确保代码在编译时不会panic。
示例
此代码可以编译并(不)运行得很好
let should_panic = false;
if should_panic {
unreachable_checked!("This will never execute.");
}
然而,此代码将导致链接错误
let should_panic = true;
if should_panic {
unreachable_checked!("This will never execute.");
}
注意事项
- 这仅在指定了适当的opt_level时才有效 - 可能需要发布构建。您可以使用
panic
cargo功能来代替panic - 错误消息是一个奇怪的链接错误。您不会得到行号等。
- 可能存在您知道代码不可达但编译器无法证明的情况。
lib.rs
:
此crate提供宏,看起来就像unreachable!()
,但它们不是panic,而是在其调用未被优化掉时引发链接错误。这可以用来确保编译器优化掉某些代码。
示例
#[macro_use]
extern crate unreachable_checked;
fn main() {
/*
let x = 6 * 9;
if x == 42 {
unreachable_checked!("6 * 9 == 42");
}
*/
let x = false;
if x {
unreachable_checked!("42");
}
}
使用--release
或--features=panic
编译