#macro #stdlib #lib #std #convenient

benri

Convenient macros wrapping the standard library

13 releases

0.1.12 May 18, 2023
0.1.11 May 15, 2023
0.1.5 Apr 27, 2023

#511 in Rust patterns

Download history 84/week @ 2024-01-04 57/week @ 2024-01-11 4/week @ 2024-01-18 2/week @ 2024-01-25 6/week @ 2024-02-08 105/week @ 2024-02-15 33/week @ 2024-02-22 14/week @ 2024-02-29 15/week @ 2024-03-07 15/week @ 2024-03-14 39/week @ 2024-03-21 39/week @ 2024-03-28 28/week @ 2024-04-04 20/week @ 2024-04-11 8/week @ 2024-04-18

110 downloads per month

MIT license

29KB
532 lines

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);

Dependencies

~22KB