summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib.rs2
-rw-r--r--src/result.rs26
2 files changed, 28 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 8364300..20d9580 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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)
+ }
+}