diff --git a/Cargo.toml b/Cargo.toml index 0f9df82..ef19d64 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bp3d-util" -version = "2.2.0" +version = "2.3.0" authors = ["Yuri Edward "] edition = "2021" description = "OS independant Rust language utilities." diff --git a/src/result.rs b/src/result.rs index 5050579..f0e7108 100644 --- a/src/result.rs +++ b/src/result.rs @@ -80,3 +80,20 @@ macro_rules! try_opt { } }; } + +/// Generates a match block which returns an exist status code on error. +/// +/// This is to be used when some cleanup code below must be called before [exit](std::process:exit) +/// is called. +#[macro_export] +macro_rules! expect_return { + ($expr: expr => ($msg: literal, $code: literal)) => { + match $expr { + Ok(v) => v, + Err(e) => { + eprintln!("{}: {}", $msg, e); + return $code; + } + } + }; +}