env_assert

Crates.ioenv_assert
lib.rsenv_assert
version0.1.5
sourcesrc
created_at2020-11-25 06:00:39.217105
updated_at2021-12-06 16:31:42.235144
descriptionA Rust library to assert when an environmental variable is set
homepagehttps://github.com/jakevossen5/env_assert/
repositoryhttps://github.com/jakevossen5/env_assert/
max_upload_size
id316200
size7,985
Jake Vossen (jakevossen5)

documentation

README

env_assert

env_assert is a incredibly simple Rust library that allows you to only run an assert! when an the RUST_ENV_ASSERT environmental variable is set to true.

For example:

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!

Now lets set our variable and then run

$ RUST_ENV_ASSERT=true cargo run
thread 'main' panicked at 'assertion failed: res.is_positive()', src/main.rs:4:5

What problem does this solve?

Sometimes, the performance increase for running in release mode is significant, but I still want asserts. However, some of those asserts are in a sense debug asserts, and I would rather the program continue than crash when it is deployed. This library lets you have asserts while in release mode, without negatively impacting performance for end users.

Should I use this?

Eh, probably not. This crate is good for simple testing and pet projects, but if this behavior is desired you should probably now use a Cargo profile to enable debug_assert!() and optimizations at the same time.

Commit count: 11

cargo fmt