1pub(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}