1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, CharonError>;
7
8#[derive(Error, Debug)]
10pub enum CharonError {
11 #[error("Audio error: {0}")]
12 Audio(String),
13
14 #[error("IO error: {0}")]
15 Io(#[from] std::io::Error),
16
17 #[error("Model error: {0}")]
18 Model(String),
19
20 #[cfg(feature = "ort-backend")]
21 #[error("ONNX Runtime error: {0}")]
22 Ort(#[from] ort::Error),
23
24 #[cfg(feature = "candle-backend")]
25 #[error("Candle error: {0}")]
26 Candle(#[from] candle_core::Error),
27
28 #[error("Resampling error: {0}")]
29 Resampling(String),
30
31 #[error("Invalid audio format: {0}")]
32 InvalidFormat(String),
33
34 #[error("Invalid configuration: {0}")]
35 InvalidConfig(String),
36
37 #[error("Processing error: {0}")]
38 Processing(String),
39
40 #[error("Not supported: {0}")]
41 NotSupported(String),
42
43 #[error("Unknown error: {0}")]
44 Unknown(String),
45}
46
47impl From<String> for CharonError {
48 fn from(s: String) -> Self {
49 CharonError::Unknown(s)
50 }
51}
52
53impl From<&str> for CharonError {
54 fn from(s: &str) -> Self {
55 CharonError::Unknown(s.to_string())
56 }
57}