What changed, and why it matters
This commit is a simple renaming of error types in the rust-bitcoin library. It changes names like FromStrError to ParseWitnessVersionError and TryFromError to InvalidWitnessVersionError to match existing naming conventions. There is no change to program logic, no bug fix, and no security relevance.
No security action required. Treat as a normal API naming cleanup.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The commit performs a pure refactor: it renames public error types in primitives::witness_version and updates all references in bitcoin/src/address/error.rs and bitcoin/src/blockdata/script/witness_version.rs. The enum/struct definitions, their fields, Display implementations, Error trait implementations, and conversion logic remain functionally identical. No behavior, validation, or parsing logic was modified.
Changed components
primitives/src/witness_version.rsbitcoin/src/blockdata/script/witness_version.rsbitcoin/src/address/error.rsInspect captured patch +28 / −28
diff --git a/bitcoin/src/address/error.rs b/bitcoin/src/address/error.rs
index fdd33c7a..c747032e 100644
--- a/bitcoin/src/address/error.rs
+++ b/bitcoin/src/address/error.rs
@@ -19,7 +19,7 @@ pub enum FromScriptError {
/// A witness program error.
WitnessProgram(witness_program::Error),
/// A witness version construction error.
- WitnessVersion(witness_version::TryFromError),
+ WitnessVersion(witness_version::InvalidWitnessVersionError),
}
impl From<Infallible> for FromScriptError {
@@ -51,8 +51,8 @@ impl From<witness_program::Error> for FromScriptError {
fn from(e: witness_program::Error) -> Self { Self::WitnessProgram(e) }
}
-impl From<witness_version::TryFromError> for FromScriptError {
- fn from(e: witness_version::TryFromError) -> Self { Self::WitnessVersion(e) }
+impl From<witness_version::InvalidWitnessVersionError> for FromScriptError {
+ fn from(e: witness_version::InvalidWitnessVersionError) -> Self { Self::WitnessVersion(e) }
}
/// Address type is either invalid or not supported in rust-bitcoin.
@@ -176,7 +176,7 @@ pub enum Bech32Error {
/// Parse SegWit Bech32 error.
ParseBech32(ParseBech32Error),
/// A witness version conversion/parsing error.
- WitnessVersion(witness_version::TryFromError),
+ WitnessVersion(witness_version::InvalidWitnessVersionError),
/// A witness program error.
WitnessProgram(witness_program::Error),
/// Tried to parse an unknown HRP.
@@ -211,8 +211,8 @@ impl std::error::Error for Bech32Error {
}
}
-impl From<witness_version::TryFromError> for Bech32Error {
- fn from(e: witness_version::TryFromError) -> Self { Self::WitnessVersion(e) }
+impl From<witness_version::InvalidWitnessVersionError> for Bech32Error {
+ fn from(e: witness_version::InvalidWitnessVersionError) -> Self { Self::WitnessVersion(e) }
}
impl From<witness_program::Error> for Bech32Error {
diff --git a/bitcoin/src/blockdata/script/witness_version.rs b/bitcoin/src/blockdata/script/witness_version.rs
index b662fa74..97c7a60c 100644
--- a/bitcoin/src/blockdata/script/witness_version.rs
+++ b/bitcoin/src/blockdata/script/witness_version.rs
@@ -11,7 +11,7 @@ use crate::script::Instruction;
#[rustfmt::skip] // Keep public re-exports separate.
#[doc(no_inline)]
-pub use self::error::{FromStrError, TryFromInstructionError, TryFromError};
+pub use self::error::{ParseWitnessVersionError, TryFromInstructionError, InvalidWitnessVersionError};
#[doc(inline)]
pub use primitives::witness_version::WitnessVersion;
@@ -37,7 +37,7 @@ pub mod error {
#[rustfmt::skip] // Keep public re-exports separate.
#[doc(no_inline)]
- pub use primitives::witness_version::error::{FromStrError, TryFromError};
+ pub use primitives::witness_version::error::{ParseWitnessVersionError, InvalidWitnessVersionError};
/// Error attempting to create a [`WitnessVersion`] from an [`Instruction`]
///
@@ -47,7 +47,7 @@ pub mod error {
#[non_exhaustive]
pub enum TryFromInstructionError {
/// Cannot convert OP to a witness version.
- TryFrom(TryFromError),
+ TryFrom(InvalidWitnessVersionError),
/// Cannot create a witness version from non-zero data push.
DataPush,
}
@@ -76,7 +76,7 @@ pub mod error {
}
}
- impl From<TryFromError> for TryFromInstructionError {
- fn from(e: TryFromError) -> Self { Self::TryFrom(e) }
+ impl From<InvalidWitnessVersionError> for TryFromInstructionError {
+ fn from(e: InvalidWitnessVersionError) -> Self { Self::TryFrom(e) }
}
}
diff --git a/primitives/src/witness_version.rs b/primitives/src/witness_version.rs
index 138bc88e..e689cb68 100644
--- a/primitives/src/witness_version.rs
+++ b/primitives/src/witness_version.rs
@@ -19,7 +19,7 @@ use crate::opcodes::{Opcode, OP_PUSHBYTES_0};
#[rustfmt::skip] // Keep public re-exports separate.
#[doc(no_inline)]
-pub use self::error::{FromStrError, TryFromError};
+pub use self::error::{ParseWitnessVersionError, InvalidWitnessVersionError};
/// Version of the segregated witness program.
///
@@ -82,16 +82,16 @@ impl fmt::Display for WitnessVersion {
}
impl FromStr for WitnessVersion {
- type Err = FromStrError;
+ type Err = ParseWitnessVersionError;
fn from_str(s: &str) -> Result<Self, Self::Err> {
- let version: u8 = parse_int::int_from_str(s).map_err(FromStrError::Unparsable)?;
- Self::try_from(version).map_err(FromStrError::Invalid)
+ let version: u8 = parse_int::int_from_str(s).map_err(ParseWitnessVersionError::Unparsable)?;
+ Self::try_from(version).map_err(ParseWitnessVersionError::Invalid)
}
}
impl TryFrom<u8> for WitnessVersion {
- type Error = TryFromError;
+ type Error = InvalidWitnessVersionError;
fn try_from(no: u8) -> Result<Self, Self::Error> {
Ok(match no {
@@ -112,20 +112,20 @@ impl TryFrom<u8> for WitnessVersion {
14 => Self::V14,
15 => Self::V15,
16 => Self::V16,
- invalid => return Err(TryFromError { invalid }),
+ invalid => return Err(InvalidWitnessVersionError { invalid }),
})
}
}
impl TryFrom<Opcode> for WitnessVersion {
- type Error = TryFromError;
+ type Error = InvalidWitnessVersionError;
fn try_from(opcode: Opcode) -> Result<Self, Self::Error> {
match opcode.to_u8() {
0 => Ok(Self::V0),
version if version >= OP_1.to_u8() && version <= OP_16.to_u8() =>
Self::try_from(version - OP_1.to_u8() + 1),
- invalid => Err(TryFromError { invalid }),
+ invalid => Err(InvalidWitnessVersionError { invalid }),
}
}
}
@@ -152,18 +152,18 @@ pub mod error {
/// [`WitnessVersion`]: super::WitnessVersion
#[derive(Clone, Debug, PartialEq, Eq)]
#[non_exhaustive]
- pub enum FromStrError {
+ pub enum ParseWitnessVersionError {
/// Unable to parse integer from string.
Unparsable(ParseIntError),
/// String contained an invalid witness version number.
- Invalid(TryFromError),
+ Invalid(InvalidWitnessVersionError),
}
- impl From<Infallible> for FromStrError {
+ impl From<Infallible> for ParseWitnessVersionError {
fn from(never: Infallible) -> Self { match never {} }
}
- impl fmt::Display for FromStrError {
+ impl fmt::Display for ParseWitnessVersionError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match *self {
Self::Unparsable(ref e) => write_err!(f, "integer parse error"; e),
@@ -173,7 +173,7 @@ pub mod error {
}
#[cfg(feature = "std")]
- impl std::error::Error for FromStrError {
+ impl std::error::Error for ParseWitnessVersionError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
match *self {
Self::Unparsable(ref e) => Some(e),
@@ -185,24 +185,24 @@ pub mod error {
///
/// [`WitnessVersion`]: super::WitnessVersion
#[derive(Clone, Debug, PartialEq, Eq)]
- pub struct TryFromError {
+ pub struct InvalidWitnessVersionError {
/// The invalid non-witness version integer.
pub(super) invalid: u8,
}
- impl TryFromError {
+ impl InvalidWitnessVersionError {
/// Returns the invalid non-witness version integer.
pub fn invalid_version(&self) -> u8 { self.invalid }
}
- impl fmt::Display for TryFromError {
+ impl fmt::Display for InvalidWitnessVersionError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "invalid witness script version: {}", self.invalid)
}
}
#[cfg(feature = "std")]
- impl std::error::Error for TryFromError {
+ impl std::error::Error for InvalidWitnessVersionError {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
let Self { invalid: _ } = self;
None
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.