Skip to main content

Module structs

Module structs 

Source
Available on crate feature guide only.
Expand description

ยงStruct errors

You may not always need the flexibility of an enum for your error type. In those cases, you can use the familiar SNAFU attributes with a struct:

#[derive(Debug, Snafu)]
#[snafu(display("Unable to parse {value} as MyEnum"))]
struct ParseError {
    value: u8,
}

// That's all it takes! The rest is demonstration of how to use it.

#[derive(Debug)]
enum MyEnum {
    Alpha,
    Beta,
    Gamma,
}

impl TryFrom<u8> for MyEnum {
    type Error = ParseError;

    fn try_from(other: u8) -> Result<Self, Self::Error> {
        match other {
            0 => Ok(Self::Alpha),
            1 => Ok(Self::Beta),
            2 => Ok(Self::Gamma),
            value => ParseSnafu { value }.fail(),
        }
    }
}