diff --git a/src/macros.rs b/src/macros.rs index c3147b2..ec28a49 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -47,6 +47,32 @@ macro_rules! try_send_error { }; } +/// Unwrap a `Result`, send a message if it's E. +#[macro_export] +macro_rules! try_send { + ($i:ident, $e:expr, $($arg:tt)*) => { + match $e { + Ok(r) => r, + Err(e) => { + return SendQueue(vec![($i, std::fmt::format(format_args!($($arg)*)), true)].into()); + } + } + }; +} + +/// Unwrap a `Option`, send a message if it's None. +#[macro_export] +macro_rules! option_send { + ($i:ident, $e:expr, $($arg:tt)*) => { + match $e { + Some(r) => r, + None => { + return SendQueue(vec![($i, std::fmt::format(format_args!($($arg)*)), true)].into()); + } + } + }; +} + /// Unwrap a `Result, E>`, log message if it's error or none #[macro_export] macro_rules! try_option_send_error {