From ffa919c8aa0d563cedd975d95f0ed4a697bd6e8e Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 7 Mar 2022 12:41:58 -0800 Subject: [PATCH] Add must_use to value created by anyhow! macro --- src/lib.rs | 8 ++++++++ src/macros.rs | 26 +++++++++++++++----------- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 0cb1ed6..b595300 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -668,4 +668,12 @@ pub mod private { Error::msg(fmt::format(args)) } } + + #[doc(hidden)] + #[inline] + #[cold] + #[must_use] + pub fn must_use(error: Error) -> Error { + error + } } diff --git a/src/macros.rs b/src/macros.rs index 89dc4d2..e92a264 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -206,17 +206,21 @@ macro_rules! ensure { /// ``` #[macro_export] macro_rules! anyhow { - ($msg:literal $(,)?) => ({ - let error = $crate::private::format_err($crate::private::format_args!($msg)); - error - }); - ($err:expr $(,)?) => ({ - use $crate::private::kind::*; - let error = match $err { - error => (&error).anyhow_kind().new(error), - }; - error - }); + ($msg:literal $(,)?) => { + $crate::private::must_use({ + let error = $crate::private::format_err($crate::private::format_args!($msg)); + error + }) + }; + ($err:expr $(,)?) => { + $crate::private::must_use({ + use $crate::private::kind::*; + let error = match $err { + error => (&error).anyhow_kind().new(error), + }; + error + }) + }; ($fmt:expr, $($arg:tt)*) => { $crate::Error::msg($crate::private::format!($fmt, $($arg)*)) };