error_utils/handle.rs
1// SPDX-License-Identifier: MIT
2//
3// Copyright (c) 2022 Robert Oleynik
4
5/// Shorthand to handle `Option<T>` and `Result<T, E>`
6///
7/// # Usage
8///
9/// ## Handling `Option<T>`
10///
11/// ```rust
12/// handle_err!(/* Some expression */, None => /* Some handle */);
13/// // Shorthand for
14/// let result = match /* Some expression */ {
15/// Some(result) => result,
16/// None => /* Some handle */,
17/// };
18/// ```
19///
20/// ## Handling `Result<T, E>`
21///
22/// ```rust
23/// handle_err!(/* Some expression */, err => /* Some handle */);
24/// // Shorthand for
25/// let result = match /* Some expression */ {
26/// Ok(result) => result,
27/// Err(err) => /* Some handle */,
28/// };
29/// ```
30#[macro_export]
31macro_rules! handle_err {
32 ( $e:expr, None => $handle:expr ) => {
33 match $e {
34 Some(result) => result,
35 None => $handle,
36 }
37 };
38 ( $e:expr, $err:ident => $handle:expr ) => {
39 match $e {
40 Ok(result) => result,
41 Err($err) => $handle,
42 }
43 };
44}