aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/program.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-05-15 22:36:02 +0800
committer魏曹先生 <1992414357@qq.com>2026-05-15 22:36:57 +0800
commit31638f3cf6cf8266edc0c8b30f44407229f79637 (patch)
tree147c91d6c4ad36c6ff08d339a54501bd810c8936 /mingling_core/src/program.rs
parent6d61e0c46d33b917438386191e1e11351359abac (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.rs20
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) => {