0.0.2 |
|
---|
#89 in #failure
14KB
154 lines
arsert
arsert - assertions that fail very sophisticatedly
This crate allows you to write assertions like you would with a
builtin [assert
][assert], but when the assertion fails, it outputs
diagnostic information about the parameters to the assertion.
Usage
Here's a failing assertion:
use arsert::arsert;
let x = 1;
let y: i32 = 2;
arsert!(x >= y.pow(3));
This outputs:
thread 'main' panicked at 'x >= y . pow ( 3 )
x = 1
y . pow ( 3 ) = 8', arsert_failure/src/lib.rs:23:5
Here's a successful one:
use arsert::arsert;
let x = 20 as i64;
arsert!(x <= x.pow(3));
Supported operations
Right now, arsert supports "simple" assertions (very much like
assert does), unary assertions (e.g. *foo
and !foo
), and
assertions on binary operations, like ==
, >
, &&
and so on.
I'm working on more supported expressions (and maybe, once proc_macros as statements get stabilized, an extension mechanism).
The Name
Sorry for the toilet humor (everybody poops, y'all). Name improvement suggestions gladly accepted, provided the resulting name is terse and meaningful.
License: MIT
Dependencies
~2MB
~48K SLoC