summaryrefslogtreecommitdiff
path: root/src/macros.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/macros.rs')
-rw-r--r--src/macros.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/macros.rs b/src/macros.rs
new file mode 100644
index 00000000..8ba32650
--- /dev/null
+++ b/src/macros.rs
@@ -0,0 +1,25 @@
+#![allow(unused)]
+
+/// Unwrap the result if it is `Ok(T)` or evaluate `$or` if it is `Err(_)`.
+/// This fits use cases the `?`-operator does not cover, like:
+/// ```
+/// try_or!(result, continue);
+/// ```
+macro_rules! try_or {
+ ($result:expr, $or:expr $(,)?) => {
+ match $result {
+ Ok(v) => v,
+ Err(_) => { $or }
+ }
+ };
+}
+
+/// Unwrap the option if it is `Some(T)` or evaluate `$or` if it is `None`.
+macro_rules! try_opt_or {
+ ($option:expr, $or:expr $(,)?) => {
+ match $option {
+ Some(v) => v,
+ None => { $or }
+ }
+ };
+}