aboutsummaryrefslogtreecommitdiff
path: root/mingling_core/src/program/error.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-05-15 21:54:11 +0800
committer魏曹先生 <1992414357@qq.com>2026-05-15 21:54:11 +0800
commit18c5c3fd34ceb8a1631f7766b69e407cf92e1a09 (patch)
tree3c7ed9b77a2d616f736e927bcc65e0caa9b9dbf4 /mingling_core/src/program/error.rs
parent606454eacb2cf20beb60c5507a8691e13f03e2fa (diff)
Add panic catch for program execution
Diffstat (limited to 'mingling_core/src/program/error.rs')
-rw-r--r--mingling_core/src/program/error.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/mingling_core/src/program/error.rs b/mingling_core/src/program/error.rs
new file mode 100644
index 0000000..5e92a42
--- /dev/null
+++ b/mingling_core/src/program/error.rs
@@ -0,0 +1,22 @@
+use std::any::Any;
+use std::fmt;
+use thiserror::Error;
+
+/// Error type returned when a panic occurs during execution.
+#[derive(Error)]
+#[error("execution panicked: {payload:?}")]
+pub struct ProgramPanic {
+ pub payload: Box<dyn Any + Send>,
+}
+
+impl ProgramPanic {
+ pub fn new(payload: Box<dyn Any + Send>) -> Self {
+ ProgramPanic { payload }
+ }
+}
+
+impl fmt::Debug for ProgramPanic {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(f, "{:?}", self.payload)
+ }
+}