//! Conversion range error use core::fmt; use crate::error; /// An error type indicating that a conversion failed because the target type could not store the /// initial value. #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct ConversionRange; impl fmt::Display for ConversionRange { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { f.write_str("Source value is out of range for the target type") } } #[cfg(feature = "std")] impl std::error::Error for ConversionRange {} impl From for crate::Error { fn from(err: ConversionRange) -> Self { Self::ConversionRange(err) } } impl TryFrom for ConversionRange { type Error = error::DifferentVariant; fn try_from(err: crate::Error) -> Result { match err { crate::Error::ConversionRange(err) => Ok(err), _ => Err(error::DifferentVariant), } } }