use std::time::Duration; #[cfg(not(feature = "wasm32_web_time"))] pub use std::time::Instant; /// WASM (browser) specific instant type. /// /// This type is only available when the `wasm32_web_time` feature is enabled. In that /// case this is an alias for [`web_time::Instant`]. #[cfg(feature = "wasm32_web_time")] pub use web_time::Instant; /// Checks if a deadline was exeeded. pub fn deadline_exceeded(deadline: Option) -> bool { #[allow(unreachable_code)] match deadline { Some(deadline) => { #[cfg(all(target_arch = "wasm32", not(feature = "wasm32_web_time")))] { return false; } Instant::now() > deadline } None => false, } } /// Converst a duration into a deadline. This can be a noop on wasm #[allow(unused)] pub fn duration_to_deadline(add: Duration) -> Option { #[allow(unreachable_code)] #[cfg(all(target_arch = "wasm32", not(feature = "wasm32_web_time")))] { return None; } Instant::now().checked_add(add) }