diff --git a/hashes/src/lib.rs b/hashes/src/lib.rs index d2e7b850..e1381919 100644 --- a/hashes/src/lib.rs +++ b/hashes/src/lib.rs @@ -234,12 +234,19 @@ pub trait Hash: /// Attempted to create a hash from an invalid length slice. #[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] pub struct FromSliceError { expected: usize, got: usize, } +impl FromSliceError { + /// Returns the expected slice length. + pub fn expected_length(&self) -> usize { self.expected } + + /// Returns the invalid slice length. + pub fn invalid_length(&self) -> usize { self.got } +} + impl fmt::Display for FromSliceError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "invalid slice length {} (expected {})", self.got, self.expected) @@ -247,9 +254,7 @@ impl fmt::Display for FromSliceError { } #[cfg(feature = "std")] -impl std::error::Error for FromSliceError { - fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { None } -} +impl std::error::Error for FromSliceError {} #[cfg(test)] mod tests {