eryon_core/
error.rs

1/*
2    Appellation: error <module>
3    Contrib: @FL03
4*/
5
6/// A type alias for a [Result] with the crate-specific error type [Error]
7pub type Result<T = ()> = core::result::Result<T, Error>;
8
9/// The error type for this crate
10#[derive(Debug, thiserror::Error)]
11pub enum Error {
12    #[error("Driver Error: {0}")]
13    DriverError(String),
14    #[error("Invalid Critical Point")]
15    InvalidCriticalPoint,
16    #[error("Invalid Parameter")]
17    InvalidParameter,
18    #[error("Invalid Operation")]
19    InvalidOperation,
20    #[error("Invalid State: {0}")]
21    InvalidState(String),
22    #[error("Invalid Symbol: {0}")]
23    InvalidSymbol(String),
24    #[error("Infinite loop detected")]
25    InfiniteLoop,
26    #[error("Generative Error: {0}")]
27    GenerativeError(String),
28    #[error("Parse Error: {0}")]
29    ParseError(String),
30    #[error("Lock Error")]
31    LockError,
32    #[error("Node not found")]
33    NodeNotFound,
34    #[error("Transformation Error")]
35    TransformationError,
36    #[error(transparent)]
37    IOError(#[from] std::io::Error),
38    #[cfg(feature = "json")]
39    #[error(transparent)]
40    JsonError(#[from] serde_json::Error),
41    #[error(transparent)]
42    MusicError(#[from] crate::nrt::MusicError),
43    #[error(transparent)]
44    TuringError(#[from] rstm::Error),
45    #[error(transparent)]
46    Other(#[from] anyhow::Error),
47    #[error("Unknown Error: {0}")]
48    Unknown(String),
49}
50
51impl From<&str> for Error {
52    fn from(s: &str) -> Self {
53        Error::Unknown(s.to_string())
54    }
55}
56
57impl From<String> for Error {
58    fn from(s: String) -> Self {
59        Error::Unknown(s)
60    }
61}
62
63impl From<Box<dyn std::error::Error>> for Error {
64    fn from(e: Box<dyn std::error::Error>) -> Self {
65        Error::Unknown(e.to_string())
66    }
67}
68
69impl<E> From<std::sync::PoisonError<E>> for Error {
70    fn from(_: std::sync::PoisonError<E>) -> Self {
71        Error::LockError
72    }
73}
74
75impl<E> From<std::sync::TryLockError<E>> for Error {
76    fn from(_: std::sync::TryLockError<E>) -> Self {
77        Error::LockError
78    }
79}