2 releases

0.1.1 Sep 18, 2021
0.1.0 Sep 18, 2021

#2900 in Rust patterns

36 downloads per month
Used in 2 crates

Apache-2.0/MIT

13KB
180 lines

soft_assert

Various macros that return early if a given condition is false. Similar to the various assert macros in std

Usage

Add the following to your Cargo.toml:

[dependencies]
soft_assert = "0.1"

License

This project is licensed under either of

at your option.


lib.rs:

A set of macros similar to the standard library's assert_* macros, but return early instead of panicking.

Example

use soft_assert::*;

fn not_twenty(x: i32) -> Option<i32> {
    // This will return `Option::default()`, which is `None`
    soft_assert_ne!(x, 20);
    Some(x)
}

fn double_if_greater_than_5(x: i32) -> i32 {
    // But here we don't want to return `i32::default()`,
    // so we specify a return value.
    soft_assert!(x > 5, x);
    x * 2
}

fn main() {
    assert!(not_twenty(10).is_some());   
    assert!(not_twenty(20).is_none());   

    let doubled = double_if_greater_than_5(13);
    assert_eq!(doubled, 26);    
    let not_doubled = double_if_greater_than_5(2);
    assert_eq!(not_doubled, 2);   
}

This crate is #![no_std]

No runtime deps