1use std::time::{Duration, Instant};
9
10pub trait UncheckedOptionExt<T> {
12 unsafe fn unchecked_unwrap(self) -> T;
13}
14
15impl<T> UncheckedOptionExt<T> for Option<T> {
16 #[inline]
17 unsafe fn unchecked_unwrap(self) -> T {
18 match self {
19 Some(x) => x,
20 None => unreachable(),
21 }
22 }
23}
24
25#[inline]
27unsafe fn unreachable() -> ! {
28 if cfg!(debug_assertions) {
29 unreachable!();
30 } else {
31 core::hint::unreachable_unchecked()
32 }
33}
34
35#[inline]
36pub fn to_deadline(timeout: Duration) -> Option<Instant> {
37 Instant::now().checked_add(timeout)
38}