5 个版本
0.1.5 | 2021 年 12 月 6 日 |
---|---|
0.1.4 | 2020 年 11 月 25 日 |
0.1.3 | 2020 年 11 月 25 日 |
0.1.1 | 2020 年 11 月 25 日 |
0.1.0 | 2020 年 11 月 25 日 |
#496 in 调试
32 每月下载量
7KB
69 行
env_assert
env_assert
是一个极其简单的 Rust 库,允许您在设置 RUST_ENV_ASSERT
环境变量为 true
时才运行 assert!
。
例如
use env_assert::env_assert;
fn main() {
let res = expensive_func_that_should_return_positive();
env_assert!(res.is_positive()); // "sanity check"
println!("We got here because the environmental variable was not set!");
}
fn expensive_func_that_should_return_positive() -> i8 {
// do some really hard things here
// oh no! our expensive function messed up and is going to return a negative value
-42
}
$ cargo run
We got here because the environmental variable was not set!
现在让我们设置我们的变量,然后运行
$ RUST_ENV_ASSERT=true cargo run
thread 'main' panicked at 'assertion failed: res.is_positive()', src/main.rs:4:5
这解决了什么问题?
有时,发布模式下的性能提升非常显著,但我仍然想要断言。然而,其中一些断言在某种程度上是调试断言,并且我宁愿程序继续运行而不是在部署时崩溃。这个库让您在发布模式下拥有断言,同时不会对最终用户的性能产生负面影响。
我应该使用这个吗?
嗯,可能不是。这个 crate 对简单的测试和宠物项目很好,但如果需要这种行为,您可能现在应该使用 Cargo 配置文件 来同时启用 debug_assert!
和优化。