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
use walkdir::Error;
use diagnostic::FileID;
use crate::{IOError, QError, QErrorKind, RuntimeError};
impl From<Error> for QError {
fn from(value: Error) -> Self {
match value.io_error() {
Some(s) => {
let file = match value.path() {
Some(s) => match FileID::try_from(s) {
Ok(o) => o,
Err(_) => Default::default(),
},
None => Default::default(),
};
let io = IOError { message: s.to_string(), file };
return QError {
error: Box::new(QErrorKind::IO(io)),
level: Default::default(),
source: Some(Box::new(value)),
};
}
None => {}
}
let runtime = RuntimeError { message: value.to_string() };
QError { error: Box::new(QErrorKind::Runtime(runtime)), level: Default::default(), source: Some(Box::new(value)) }
}
}