1pub type Result<T = ()> = core::result::Result<T, Error>;
8
9#[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}