13 releases
0.1.12 | May 18, 2023 |
---|---|
0.1.11 | May 15, 2023 |
0.1.5 | Apr 27, 2023 |
#534 in Rust patterns
870 downloads per month
29KB
532 lines
benri
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
~23KB