podo_core_driver/
error.rs1use std::error::Error;
2use std::fmt::Debug;
3
4#[derive(Debug)]
5pub struct RuntimeError(pub Box<dyn Debug + Send>);
6
7impl RuntimeError {
8 #[inline]
9 pub fn expect<T>(message: &'static str) -> Result<T, Self> {
10 Err(Self(Box::new(message)))
11 }
12
13 #[inline]
14 pub fn expect_os<T>(message: std::ffi::OsString) -> Result<T, Self> {
15 Err(Self(Box::new(message)))
16 }
17
18 #[inline]
19 pub fn message<T>(message: String) -> Result<T, Self> {
20 Err(Self(Box::new(message)))
21 }
22
23 #[inline]
24 pub fn unexpected<T>() -> Result<T, Self> {
25 Self::expect("Unexpected error")
26 }
27
28 #[inline]
29 pub fn unreachable<T>() -> Result<T, Self> {
30 Self::expect("Unreachable code")
31 }
32
33 #[inline]
34 pub fn unimplemented<T>() -> Result<T, Self> {
35 Self::expect("Unimplemented yet")
36 }
37}
38
39impl<E> From<E> for RuntimeError
40where
41 E: Error + Send + 'static,
42{
43 #[inline]
44 fn from(error: E) -> Self {
45 Self(Box::new(error))
46 }
47}