From ec98ce36651fe08c39e09c9c50fcbdca5f2ab8bc Mon Sep 17 00:00:00 2001 From: sharnoff Date: Fri, 23 Sep 2022 16:26:10 -0700 Subject: [PATCH] Add 1-argument `ensure!($expr)` --- eyre/src/macros.rs | 5 +++++ eyre/tests/test_macros.rs | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/eyre/src/macros.rs b/eyre/src/macros.rs index 792a646..50c1dbf 100644 --- a/eyre/src/macros.rs +++ b/eyre/src/macros.rs @@ -107,6 +107,11 @@ macro_rules! bail { /// ``` #[macro_export] macro_rules! ensure { + ($cond:expr $(,)?) => { + if !$cond { + $crate::ensure!($cond, concat!("Condition failed: `", stringify!($cond), "`")) + } + }; ($cond:expr, $msg:literal $(,)?) => { if !$cond { return $crate::private::Err($crate::eyre!($msg)); diff --git a/eyre/tests/test_macros.rs b/eyre/tests/test_macros.rs index 2bcad38..41d3ddb 100644 --- a/eyre/tests/test_macros.rs +++ b/eyre/tests/test_macros.rs @@ -39,6 +39,15 @@ fn test_ensure() { Ok(()) }; assert!(f().is_err()); + + let f = || { + ensure!(v + v == 1); + Ok(()) + }; + assert_eq!( + f().unwrap_err().to_string(), + "Condition failed: `v + v == 1`", + ); } #[test]