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
use std::{error, fmt}; use crate::Signature; #[derive(Debug)] pub enum VariantError { ExcessData, IncorrectType, IncorrectValue, InvalidUtf8, InsufficientData, UnsupportedType(Signature), } impl error::Error for VariantError { fn source(&self) -> Option<&(dyn error::Error + 'static)> { None } } impl fmt::Display for VariantError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { VariantError::ExcessData => write!(f, "excess data"), VariantError::IncorrectType => write!(f, "incorrect type"), VariantError::IncorrectValue => write!(f, "incorrect value"), VariantError::InvalidUtf8 => write!(f, "invalid UTF-8"), VariantError::InsufficientData => write!(f, "insufficient data"), VariantError::UnsupportedType(s) => { write!(f, "unsupported type (signature: \"{}\")", s.as_str()) } } } }