aboutsummaryrefslogtreecommitdiff
path: root/mingling/src/res/exit_code.rs
diff options
context:
space:
mode:
authorWeicao-CatilGrass <1992414357@qq.com>2026-05-13 07:34:45 +0800
committerWeicao-CatilGrass <1992414357@qq.com>2026-05-13 07:40:00 +0800
commit2588933ebc500f439ebef075fef1064b0c5f0bcb (patch)
tree595e55d7aa634bf7f730acaab7bcf243191c519a /mingling/src/res/exit_code.rs
parent566b43cc15fc8a0bc7f962e05908486dbf53a7d0 (diff)
Add convenient `update_exit_code` and `exit_code` helper functions
Diffstat (limited to 'mingling/src/res/exit_code.rs')
-rw-r--r--mingling/src/res/exit_code.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/mingling/src/res/exit_code.rs b/mingling/src/res/exit_code.rs
index 388a6f1..f4d4238 100644
--- a/mingling/src/res/exit_code.rs
+++ b/mingling/src/res/exit_code.rs
@@ -1,4 +1,28 @@
+use mingling_core::{ProgramCollect, this};
+
+/// Represents a program exit code.
#[derive(Debug, Default, Clone, Copy)]
pub struct ExitCode {
+ /// The numeric exit code value.
pub exit_code: i32,
}
+
+/// Updates the globally stored exit code for the given `ProgramCollect` type.
+pub fn update_exit_code<C>(exit_code: i32)
+where
+ C: ProgramCollect<Enum = C> + 'static,
+{
+ this::<C>().modify_res(|e: &mut ExitCode| e.exit_code = exit_code);
+}
+
+/// Retrieves the globally stored exit code for the given `ProgramCollect` type.
+/// Returns `0` if no exit code has been set.
+pub fn exit_code<C>() -> i32
+where
+ C: ProgramCollect<Enum = C> + 'static,
+{
+ match this::<C>().res::<ExitCode>() {
+ Some(e) => e.exit_code,
+ None => 0,
+ }
+}