summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-03-07 18:12:33 +0100
committerMatthias Beyer <mail@beyermatthias.de>2021-03-07 18:12:33 +0100
commit1fb98e5cecc740a0475d6263bb91724cc13bea03 (patch)
tree593f9e66e00d1241de21bf1d4eedfb0ff5193284
parent539527361a60ee6cdf515e85faf839629d533e34 (diff)
Add inspect variant for errors
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--src/lib.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 705fecd..9f0a28d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -38,3 +38,42 @@ impl<F, T, E> ResultInspectRef<F, T> for Result<T, E>
}
}
}
+
+
+pub trait ResultInspectErr<F, E>
+ where F: FnOnce(&E),
+ E: Sized
+{
+ fn inspect_err(self, f: F) -> Self;
+}
+
+pub trait ResultInspectErrRef<F, E>
+ where F: FnOnce(&E),
+ E: Sized
+{
+ fn inspect_err(&self, f: F);
+}
+
+impl<F, T, E> ResultInspectErr<F, E> for Result<T, E>
+ where F: FnOnce(&E),
+ E: Sized
+{
+ fn inspect_err(self, f: F) -> Self {
+ if let Err(ref e) = self.as_ref() {
+ (f)(&e);
+ }
+
+ self
+ }
+}
+
+impl<F, T, E> ResultInspectErrRef<F, E> for Result<T, E>
+ where F: FnOnce(&E),
+ E: Sized
+{
+ fn inspect_err(&self, f: F) {
+ if let Err(ref e) = self {
+ (f)(&e);
+ }
+ }
+}