diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-05-15 21:54:11 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-05-15 21:54:11 +0800 |
| commit | 18c5c3fd34ceb8a1631f7766b69e407cf92e1a09 (patch) | |
| tree | 3c7ed9b77a2d616f736e927bcc65e0caa9b9dbf4 /mingling_core/src/program/error.rs | |
| parent | 606454eacb2cf20beb60c5507a8691e13f03e2fa (diff) | |
Add panic catch for program execution
Diffstat (limited to 'mingling_core/src/program/error.rs')
| -rw-r--r-- | mingling_core/src/program/error.rs | 22 |
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) + } +} |
