#macro #utility

soft_assert

Non-panicking assertions

2 releases

0.1.1 Sep 18, 2021
0.1.0 Sep 18, 2021

#2740 in Rust patterns

Download history 10/week @ 2024-07-22 117/week @ 2024-07-29 63/week @ 2024-08-05 22/week @ 2024-08-12 17/week @ 2024-08-19 43/week @ 2024-08-26 19/week @ 2024-09-02 14/week @ 2024-09-09 22/week @ 2024-09-16 55/week @ 2024-09-23 58/week @ 2024-09-30 9/week @ 2024-10-07 28/week @ 2024-10-14 25/week @ 2024-10-21 31/week @ 2024-10-28 21/week @ 2024-11-04

106 downloads per month
Used in 5 crates (4 directly)

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