diff --git a/bitcoin/src/blockdata/script/witness_version.rs b/bitcoin/src/blockdata/script/witness_version.rs index a172a60d..29fa83c4 100644 --- a/bitcoin/src/blockdata/script/witness_version.rs +++ b/bitcoin/src/blockdata/script/witness_version.rs @@ -249,10 +249,14 @@ impl From for TryFromInstructionError { /// Error attempting to create a [`WitnessVersion`] from an integer. #[derive(Clone, Debug, PartialEq, Eq)] -#[non_exhaustive] pub struct TryFromError { /// The invalid non-witness version integer. - pub invalid: u8, + invalid: u8, +} + +impl TryFromError { + /// Returns the invalid non-witness version integer. + pub fn invalid_version(&self) -> u8 { self.invalid } } impl fmt::Display for TryFromError { @@ -262,6 +266,4 @@ impl fmt::Display for TryFromError { } #[cfg(feature = "std")] -impl std::error::Error for TryFromError { - fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { None } -} +impl std::error::Error for TryFromError {} diff --git a/bitcoin/src/pow.rs b/bitcoin/src/pow.rs index 3053d077..e07009e8 100644 --- a/bitcoin/src/pow.rs +++ b/bitcoin/src/pow.rs @@ -736,22 +736,6 @@ impl> From for U256 { fn from(x: T) -> Self { U256(0, x.into()) } } -/// Error from `TryFrom` implementations, occurs when input is negative. -#[derive(Debug, Clone, PartialEq, Eq)] -#[non_exhaustive] -pub struct TryFromError(i128); - -impl fmt::Display for TryFromError { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "attempt to create unsigned integer type from negative number: {}", self.0) - } -} - -#[cfg(feature = "std")] -impl std::error::Error for TryFromError { - fn source(&self) -> Option<&(dyn std::error::Error + 'static)> { None } -} - impl Add for U256 { type Output = Self; fn add(self, rhs: Self) -> Self { diff --git a/hashes/src/lib.rs b/hashes/src/lib.rs index d612493f..a7db5d21 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 {