Macro itron_solid_fmp3::time::timeout [−][src]
pub macro timeout {
($kind : tt : $value : literal) => { ... },
(s : $value : expr) => { ... },
(ms : $value : expr) => { ... },
(us : $value : expr) => { ... },
(μs : $value : expr) => { ... },
(ns : $value : expr) => { ... },
(infinity) => { ... },
(0) => { ... },
}
This is supported on crate features
unstable
and nightly
only.Expand description
Construct a Timeout
value in a concise syntax. Panics if the specified
duration cannot be represented by Timeout
.
Examples
use itron::time::{timeout, Timeout};
assert_eq!(Timeout::ZERO, timeout!(0));
assert_eq!(Timeout::FOREVER, timeout!(infinity));
assert_eq!(Timeout::from_millis(42).unwrap(), timeout!(ms: 42));
Panics if the value is out of range:
ⓘ
let _ = timeout!(s: 0x7ffffffffffffff * 2);
Once inline_const
lands, it will be possible to do the check at
compile-time:
ⓘ
#![feature(inline_const)]
let _ = const { timeout!(s: 0x7ffffffffffffff * 2) };
Literal values are validated at compile-time regardless of whether
const { ... }
is used or not:
ⓘ
let _ = timeout!(s: 0xfffffffffffffff);
ⓘ
// Wrap the expression with `( ... )` to avoid the above behavior and
// cause a runtime panic.
let _ = timeout!(s: (0xfffffffffffffff));