blob: 9cbb6eec09d70b71cf06dd07d7e05e5eaed398ef (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
use std::io;
use std::sync::Arc;
use thiserror::Error;
#[derive(Debug, Clone, Error)]
#[error(transparent)]
pub enum Error {
IOError(Arc<io::Error>),
#[error("config does not exist")]
ConfigMissing,
#[error("JSON parsing error: {0}")]
SerdeJSONError(Arc<serde_json::Error>),
#[error("TOML parsing error: {0}")]
SerdeTOMLError(#[from] toml::de::Error),
FormatError(Arc<rust_format::Error>),
#[error("the element tree contains no matching element")]
NonExistentElement,
#[error(
"the file dialog has been closed without selecting a valid option"
)]
DialogClosed,
#[error("{0}")]
Other(String),
}
impl From<io::Error> for Error {
fn from(value: io::Error) -> Self {
Self::IOError(Arc::new(value))
}
}
impl From<serde_json::Error> for Error {
fn from(value: serde_json::Error) -> Self {
Self::SerdeJSONError(Arc::new(value))
}
}
impl From<rust_format::Error> for Error {
fn from(value: rust_format::Error) -> Self {
Self::FormatError(Arc::new(value))
}
}
impl From<&str> for Error {
fn from(value: &str) -> Self {
Self::Other(value.to_owned())
}
}
impl From<String> for Error {
fn from(value: String) -> Self {
Self::Other(value)
}
}
|