use core::fmt::Debug;
use core::hint::unreachable_unchecked;
#[derive(Debug)]
pub enum Never {}
pub trait UnwrapUnchecked<T> {
unsafe fn unwrap_unchecked_(self) -> T;
}
impl<T> UnwrapUnchecked<T> for Option<T> {
unsafe fn unwrap_unchecked_(self) -> T {
if cfg!(debug_assertions) {
self.unwrap()
} else {
match self {
Some(x) => x,
None => unreachable_unchecked(),
}
}
}
}
impl<T, E: Debug> UnwrapUnchecked<T> for Result<T, E> {
unsafe fn unwrap_unchecked_(self) -> T {
if cfg!(debug_assertions) {
self.unwrap()
} else {
match self {
Ok(x) => x,
Err(_) => unreachable_unchecked(),
}
}
}
}