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