arsert

Crates.ioarsert
lib.rsarsert
version0.0.2
sourcesrc
created_at2019-01-12 22:11:55.118082
updated_at2019-01-12 22:11:55.118082
descriptionAssertions that provide more sophisticated failure messages
homepage
repositoryhttps://github.com/antifuchs/arsert
max_upload_size
id108225
size19,786
Andreas Fuchs (antifuchs)

documentation

https://docs.rs/arsert

README

Build Status

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

Commit count: 37

cargo fmt