podo_core_driver/
error.rs

1use 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}