diff --git a/src/eyreish/macros.rs b/src/eyreish/macros.rs index 90a0161..2d54ecc 100644 --- a/src/eyreish/macros.rs +++ b/src/eyreish/macros.rs @@ -105,6 +105,19 @@ macro_rules! bail { /// # Ok(()) /// # } /// ``` +/// +/// ``` +/// use miette::{ensure, Result, Severity}; +/// +/// fn divide(x: f64, y: f64) -> Result { +/// ensure!( +/// y.abs() >= 1e-3, +/// "dividing by value close to 0", +/// severity = Severity::Warning +/// ); +/// Ok(x / y) +/// } +/// ``` #[macro_export] macro_rules! ensure { ($cond:expr, $msg:literal $(,)?) => { @@ -117,6 +130,11 @@ macro_rules! ensure { return $crate::private::Err($crate::miette!($err)); } }; + ($cond:expr, $fmt:expr $(, $key:ident = $value:expr)* $(,)?) => { + if !$cond { + return $crate::private::Err($crate::miette!($fmt, $($key = $value),*)); + } + }; ($cond:expr, $fmt:expr, $($arg:tt)*) => { if !$cond { return $crate::private::Err($crate::miette!($fmt, $($arg)*));