Macro delay

Source
macro_rules! delay {
    (0) => { ... };
    ($amount:tt ns) => { ... };
    ($amount:tt nsec) => { ... };
    ($amount:tt nsecs) => { ... };
    ($amount:tt us) => { ... };
    ($amount:tt usec) => { ... };
    ($amount:tt usecs) => { ... };
    ($amount:tt ms) => { ... };
    ($amount:tt msec) => { ... };
    ($amount:tt msecs) => { ... };
    ($amount:tt s) => { ... };
    ($amount:tt sec) => { ... };
    ($amount:tt secs) => { ... };
    ($amount:tt second) => { ... };
    ($amount:tt seconds) => { ... };
    ($amount:tt min) => { ... };
    ($amount:tt mins) => { ... };
    ($amount:tt minute) => { ... };
    ($amount:tt minutes) => { ... };
    ($amount:tt h) => { ... };
    ($amount:tt hour) => { ... };
    ($amount:tt hours) => { ... };
    ($amount:tt d) => { ... };
    ($amount:tt day) => { ... };
    ($amount:tt days) => { ... };
    ($amount:tt week) => { ... };
    ($amount:tt weeks) => { ... };
    ($amount:tt $i:ident) => { ... };
}
Expand description

Creates a Duration value using the same syntax as in LF.

use std::time::Duration;
use reactor_rt::delay;

assert_eq!(delay!(10 ns), Duration::from_nanos(10));
assert_eq!(delay!(10 ms), delay!(10 msec));
assert_eq!(delay!(10 msec), Duration::from_millis(10));
assert_eq!(delay!(10 sec), Duration::from_secs(10));
assert_eq!(delay!(2 min), delay!(120 s));
assert_eq!(delay!(0), Duration::from_secs(0));

let x = 2;
assert_eq!(delay!(x min), delay!(120 s));
assert_eq!(delay!((1+2) min), delay!(180 s));

// more verbose aliases
assert_eq!(delay!(2 min), delay!(2 minutes));
assert_eq!(delay!(2 h), delay!(2 hours));
assert_eq!(delay!(1 week), delay!(7 days));