#![allow(dead_code, deprecated, unused_variables, unused_mut)] #![feature(hint_must_use)] use core::fmt; pub struct Error(); #[macro_export] macro_rules! make_error { ($($args:expr),*) => { core::hint::must_use({ let error = $crate::make_error(core::format_args!($($args),*)); error }) }; } #[doc(hidden)] pub fn make_error(args: fmt::Arguments<'_>) -> Error { Error() } fn demo() -> Option { if true { Some(make_error!("...")); } None } fn main() {}