26 lines
673 B
Rust
26 lines
673 B
Rust
pub(crate) trait ResultExt<T, E> {
|
|
unsafe fn unsafe_map<U>(self, op: unsafe fn(T) -> U) -> Result<U, E>;
|
|
}
|
|
|
|
impl<T, E> ResultExt<T, E> for Result<T, E> {
|
|
unsafe fn unsafe_map<U>(self, op: unsafe fn(T) -> U) -> Result<U, E> {
|
|
match self {
|
|
Ok(t) => Ok(unsafe { op(t) }),
|
|
Err(e) => Err(e),
|
|
}
|
|
}
|
|
}
|
|
|
|
pub(crate) trait OptionExt<T> {
|
|
unsafe fn unsafe_map<U>(self, op: unsafe fn(T) -> U) -> Option<U>;
|
|
}
|
|
|
|
impl<T> OptionExt<T> for Option<T> {
|
|
unsafe fn unsafe_map<U>(self, op: unsafe fn(T) -> U) -> Option<U> {
|
|
match self {
|
|
Some(t) => Some(unsafe { op(t) }),
|
|
None => None,
|
|
}
|
|
}
|
|
}
|