benri

Crates.iobenri
lib.rsbenri
version0.1.12
sourcesrc
created_at2023-04-02 19:54:22.560861
updated_at2023-05-18 16:26:17.61302
descriptionConvenient macros wrapping the standard library
homepage
repositoryhttps://github.com/hinto-janai/benri
max_upload_size
id828572
size32,477
(hinto-janai)

documentation

https://docs.rs/benri

README

benri

Windows macOS Linux crates.io docs.rs

Convenient macros wrapping the standard library.

This library provides convenient macros!() around std functionality.

Feature flags

Flag Purpose
log Enable log usage in certain places

Example 1 - Flip a bool:

let mut a = false;
flip!(a);
assert!(a == true);
flip!(a);
assert!(a == false);

Example 2 - Get the current Instant:

let now = now!();

std::thread::sleep(std::time::Duration::from_secs(1));

assert!(now.elapsed().as_secs() >= 1);

Example 3 - Get elapsed Instant time:

let now = now!();

std::thread::sleep(std::time::Duration::from_secs(1));
assert!(secs!(now)     >= 1);
assert!(secs_f64!(now) >= 1.0);
assert!(millis!(now)   >= 1000);
assert!(micros!(now)   >= 10000);
assert!(nanos!(now)    >= 100000);

Example 4 - Sleep a thread:

let now = now!();

// This sleeps the current thread for 1 second.
sleep!(1000);

assert!(secs!(now) >= 1);

Example 5 - Exit all threads:

std::thread::spawn(|| {
    mass_panic!();
}).join().unwrap();

// The program will has already exited.
// The below statement will never be reached.
unsafe { /* do bad things */ }

Example 6 - Send/receive a channel message or mass_panic!():

This works with any channel (like crossbeam_channel) that have the same method names as the std channels since the inner macro is calling .send() and .recv().

let (tx, rx) = std::sync::mpsc::channel::<u8>();

std::thread::spawn(move || {
    send!(tx, 255);
}).join().unwrap();

assert!(recv!(rx) == 255);
Commit count: 17

cargo fmt