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
#[derive(Clone, Copy)] pub enum Error { InvalidChar, InvalidLength(usize), } impl ::std::fmt::Debug for Error { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { match *self { Error::InvalidLength(len) => write!(f, "Invalid input length {}", len), Error::InvalidChar => write!(f, "Invalid character"), } } } impl ::std::fmt::Display for Error { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { ::std::fmt::Debug::fmt(&self, f) } } impl ::std::error::Error for Error { fn description(&self) -> &str { match *self { Error::InvalidChar => "invalid character", Error::InvalidLength(_) => "invalid length", } } }