isr_macros/
error.rs

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
#[derive(thiserror::Error, Debug)]
pub enum Error {
    #[error("Failed to convert value: {0}")]
    Conversion(&'static str),

    #[error("Failed to find symbol {0}")]
    SymbolNotFound(String),

    #[error("Failed to find type {0}")]
    TypeNotFound(String),

    #[error("Failed to find field {field_name} in type {type_name}")]
    FieldNotFound {
        type_name: String,
        field_name: String,
    },
}

impl Error {
    pub fn symbol_not_found(symbol_name: impl Into<String>) -> Self {
        Self::SymbolNotFound(symbol_name.into())
    }

    pub fn type_not_found(type_name: impl Into<String>) -> Self {
        Self::TypeNotFound(type_name.into())
    }

    pub fn field_not_found(type_name: impl Into<String>, field_name: impl Into<String>) -> Self {
        Self::FieldNotFound {
            type_name: type_name.into(),
            field_name: field_name.into(),
        }
    }
}