devela/work/process/thread/sleep/
macros.rs

1// devela::work::process::thread::sleep::macros
2
3/// A more compact [`Thread::sleep`][crate::Thread#method.sleep].
4///
5/// Sleeps for `$ns` seconds + `$ms` milliseconds + `$us` microseconds + `$ns` nanoseconds
6///
7/// # Examples
8/// ```
9/// # use devela::sleep4;
10/// sleep4![1, 0, 500]; // sleeps for 1 second + 500 microseconds
11/// ```
12#[macro_export]
13#[cfg(feature = "std")]
14#[cfg_attr(feature = "nightly_doc", doc(cfg(feature = "std")))]
15#[cfg_attr(cargo_primary_package, doc(hidden))]
16macro_rules! sleep4 {
17    ($s:expr) => {
18        std::thread::sleep(core::time::Duration::from_secs($s));
19    };
20    ($s:expr, $ms:expr) => {
21        std::thread::sleep(core::time::Duration::from_millis($s * 1000 + $ms));
22    };
23    ($s:expr, $ms:expr, $us:expr) => {
24        std::thread::sleep(core::time::Duration::from_micros($s * 1_000_000 + $ms * 1_000 + $us));
25    };
26    ($s:expr, $ms:expr, $us:expr, $ns:expr) => {
27        std::thread::sleep(core::time::Duration::from_nanos(
28            $s * 1_000_000_000 + $ms * 1_000_000 + $us * 1_000 + $ns,
29        ));
30    };
31}
32#[cfg(feature = "std")]
33#[doc(inline)]
34pub use sleep4;