pub use std::error::Error;
#[macro_export]
macro_rules! try_vm_runtime {
($e:expr) => {{
use std::panic;
let previous_hook = panic::take_hook();
panic::set_hook(Box::new(|err| {
#[cfg(debug_assertions)]
{
let trimmed = err
.to_string()
.split_ascii_whitespace()
.skip_while(|&word| word != "panicked")
.collect::<Vec<&str>>()
.join(" ");
let msg = trimmed.replacen("panicked", "VM safely halted", 1);
eprintln!("{msg}");
}
}));
let result = panic::catch_unwind(panic::AssertUnwindSafe($e));
panic::set_hook(previous_hook);
result
}};
}