diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 2 | ||||
| -rw-r--r-- | src/result.rs | 26 |
2 files changed, 28 insertions, 0 deletions
@@ -8,6 +8,8 @@ extern crate alloc; mod exun; #[cfg(feature = "alloc")] +mod result; +#[cfg(feature = "alloc")] mod unexpected; pub use exun::*; diff --git a/src/result.rs b/src/result.rs new file mode 100644 index 0000000..d5de01b --- /dev/null +++ b/src/result.rs @@ -0,0 +1,26 @@ +#[cfg(feature = "std")] +use std::error::Error; + +use crate::{unexpected::Errorable, UnexpectedError}; + +#[cfg(feature = "std")] +trait ResultErrorExt<T> { + fn unexpect(self) -> Result<T, UnexpectedError>; +} + +#[cfg(feature = "std")] +impl<T, E: Error + Send + Sync + 'static> ResultErrorExt<T> for Result<T, E> { + fn unexpect(self) -> Result<T, UnexpectedError> { + self.map_err(UnexpectedError::new) + } +} + +trait ResultMsgExt<T> { + fn unexpect_msg(self) -> Result<T, UnexpectedError>; +} + +impl<T, E: Errorable + 'static> ResultMsgExt<T> for Result<T, E> { + fn unexpect_msg(self) -> Result<T, UnexpectedError> { + self.map_err(UnexpectedError::msg) + } +} |
