eryon_rt/
error.rs

1/*
2    Appellation: error <module>
3    Contrib: @FL03
4*/
5
6pub(crate) type Result<T = ()> = core::result::Result<T, RuntimeError>;
7
8#[derive(Debug, thiserror::Error)]
9pub enum RuntimeError {
10    #[error("Node not found")]
11    NodeNotFound,
12    #[error("Task not found")]
13    TaskNotFound(usize),
14    #[error("Failed to lock mutex")]
15    LockError,
16    #[error(transparent)]
17    ActorError(#[from] crate::actors::ActorError),
18    #[error(transparent)]
19    CoreError(#[from] crate::core::Error),
20    #[error(transparent)]
21    MemError(#[from] crate::mem::MemoryError),
22    #[error(transparent)]
23    Other(#[from] anyhow::Error),
24    #[error("Unknown Error: {0}")]
25    Unknown(String),
26}
27
28impl From<&str> for RuntimeError {
29    fn from(s: &str) -> Self {
30        RuntimeError::Unknown(s.to_string())
31    }
32}
33
34impl From<String> for RuntimeError {
35    fn from(s: String) -> Self {
36        RuntimeError::Unknown(s)
37    }
38}
39
40impl From<Box<dyn std::error::Error>> for RuntimeError {
41    fn from(e: Box<dyn std::error::Error>) -> Self {
42        RuntimeError::Unknown(e.to_string())
43    }
44}
45
46impl<E> From<std::sync::PoisonError<E>> for RuntimeError {
47    fn from(_: std::sync::PoisonError<E>) -> Self {
48        RuntimeError::LockError
49    }
50}
51
52impl<E> From<std::sync::TryLockError<E>> for RuntimeError {
53    fn from(_: std::sync::TryLockError<E>) -> Self {
54        RuntimeError::LockError
55    }
56}