#assert #variables #testing #env-var #environmental #set #run

env_assert

一个用于断言环境变量设置的 Rust 库

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 每月下载量

MIT 许可证

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! 和优化。

无运行时依赖