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}