add UnwrapInfallible to Result
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -3,10 +3,11 @@ mod log_debug_err;
|
||||
mod log_err;
|
||||
mod map_expect;
|
||||
mod not_found;
|
||||
mod unwrap_infallible;
|
||||
|
||||
pub use self::{
|
||||
debug_inspect::DebugInspect, log_debug_err::LogDebugErr, log_err::LogErr, map_expect::MapExpect,
|
||||
not_found::NotFound,
|
||||
not_found::NotFound, unwrap_infallible::UnwrapInfallible,
|
||||
};
|
||||
|
||||
pub type Result<T = (), E = crate::Error> = std::result::Result<T, E>;
|
||||
|
||||
17
src/core/result/unwrap_infallible.rs
Normal file
17
src/core/result/unwrap_infallible.rs
Normal file
@@ -0,0 +1,17 @@
|
||||
use std::convert::Infallible;
|
||||
|
||||
use super::{DebugInspect, Result};
|
||||
use crate::error;
|
||||
|
||||
pub trait UnwrapInfallible<T> {
|
||||
fn unwrap_infallible(self) -> T;
|
||||
}
|
||||
|
||||
impl<T> UnwrapInfallible<T> for Result<T, Infallible> {
|
||||
#[inline]
|
||||
fn unwrap_infallible(self) -> T {
|
||||
// SAFETY: Branchless unwrap for errors that can never happen. In debug
|
||||
// mode this is asserted.
|
||||
unsafe { self.debug_inspect_err(error::infallible).unwrap_unchecked() }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user