diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-05-15 22:36:02 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-05-15 22:36:57 +0800 |
| commit | 31638f3cf6cf8266edc0c8b30f44407229f79637 (patch) | |
| tree | 147c91d6c4ad36c6ff08d339a54501bd810c8936 /mingling_core/src/program.rs | |
| parent | 6d61e0c46d33b917438386191e1e11351359abac (diff) | |
Add option to silence panic messages in stdout settings
Diffstat (limited to 'mingling_core/src/program.rs')
| -rw-r--r-- | mingling_core/src/program.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/mingling_core/src/program.rs b/mingling_core/src/program.rs index e7e9ec0..a00b2c7 100644 --- a/mingling_core/src/program.rs +++ b/mingling_core/src/program.rs @@ -193,6 +193,16 @@ where .unwrap() .downcast_ref::<Program<C>>() .unwrap(); + + #[cfg(not(panic = "abort"))] + if program.stdout_setting.silence_panic { + std::panic::set_hook(Box::new(|_| {})); + } + + #[cfg(panic = "abort")] + return Ok(f(program)); + + #[cfg(not(panic = "abort"))] match std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| f(program))) { Ok(fut) => Ok(fut.await), Err(panic_info) => { @@ -294,6 +304,16 @@ where .unwrap() .downcast_ref::<Program<C>>() .unwrap(); + + #[cfg(not(panic = "abort"))] + if program.stdout_setting.silence_panic { + std::panic::set_hook(Box::new(|_| {})); + } + + #[cfg(panic = "abort")] + return Ok(f(program)); + + #[cfg(not(panic = "abort"))] match std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| f(program))) { Ok(result) => Ok(result), Err(panic_info) => { |
