Enum bitcoin::address::WitnessVersion
pub enum WitnessVersion {
Show 17 variants
V0,
V1,
V2,
V3,
V4,
V5,
V6,
V7,
V8,
V9,
V10,
V11,
V12,
V13,
V14,
V15,
V16,
}
Expand description
Version of the witness program.
Helps limit possible versions of the witness according to the specification. If a plain u8
type was used instead it would mean that the version may be > 16, which would be incorrect.
First byte of scriptPubkey
in transaction output for transactions starting with opcodes
ranging from 0 to 16 (inclusive).
Variants§
V0
Initial version of witness program. Used for P2WPKH and P2WPK outputs
V1
Version of witness program used for Taproot P2TR outputs.
V2
Future (unsupported) version of witness program.
V3
Future (unsupported) version of witness program.
V4
Future (unsupported) version of witness program.
V5
Future (unsupported) version of witness program.
V6
Future (unsupported) version of witness program.
V7
Future (unsupported) version of witness program.
V8
Future (unsupported) version of witness program.
V9
Future (unsupported) version of witness program.
V10
Future (unsupported) version of witness program.
V11
Future (unsupported) version of witness program.
V12
Future (unsupported) version of witness program.
V13
Future (unsupported) version of witness program.
V14
Future (unsupported) version of witness program.
V15
Future (unsupported) version of witness program.
V16
Future (unsupported) version of witness program.
Implementations§
§impl WitnessVersion
impl WitnessVersion
pub fn to_num(self) -> u8
pub fn to_num(self) -> u8
Returns integer version number representation for a given WitnessVersion
value.
NB: this is not the same as an integer representation of the opcode signifying witness version in bitcoin script. Thus, there is no function to directly convert witness version into a byte since the conversion requires context (bitcoin script or just a version number).
pub fn bech32_variant(&self) -> Variant
pub fn bech32_variant(&self) -> Variant
Determines the checksum variant. See BIP-0350 for specification.
Trait Implementations§
§impl Clone for WitnessVersion
impl Clone for WitnessVersion
§fn clone(&self) -> WitnessVersion
fn clone(&self) -> WitnessVersion
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for WitnessVersion
impl Debug for WitnessVersion
§impl Display for WitnessVersion
impl Display for WitnessVersion
Prints WitnessVersion
number (from 0 to 16) as integer, without
any prefix or suffix.
§impl From<WitnessVersion> for All
impl From<WitnessVersion> for All
§fn from(version: WitnessVersion) -> All
fn from(version: WitnessVersion) -> All
Converts WitnessVersion
instance into corresponding Bitcoin scriptopcode (OP_0
..OP_16
).
§impl From<WitnessVersion> for u5
impl From<WitnessVersion> for u5
§fn from(version: WitnessVersion) -> u5
fn from(version: WitnessVersion) -> u5
Converts WitnessVersion
instance into corresponding Bech32(m) u5-value ([bech32::u5
]).
§impl FromStr for WitnessVersion
impl FromStr for WitnessVersion
§impl Hash for WitnessVersion
impl Hash for WitnessVersion
§impl Ord for WitnessVersion
impl Ord for WitnessVersion
§impl PartialEq<WitnessVersion> for WitnessVersion
impl PartialEq<WitnessVersion> for WitnessVersion
§fn eq(&self, other: &WitnessVersion) -> bool
fn eq(&self, other: &WitnessVersion) -> bool
self
and other
values to be equal, and is used
by ==
.§impl PartialOrd<WitnessVersion> for WitnessVersion
impl PartialOrd<WitnessVersion> for WitnessVersion
§fn partial_cmp(&self, other: &WitnessVersion) -> Option<Ordering>
fn partial_cmp(&self, other: &WitnessVersion) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more§impl TryFrom<All> for WitnessVersion
impl TryFrom<All> for WitnessVersion
§fn try_from(
opcode: All
) -> Result<WitnessVersion, <WitnessVersion as TryFrom<All>>::Error>
fn try_from( opcode: All ) -> Result<WitnessVersion, <WitnessVersion as TryFrom<All>>::Error>
Converts bitcoin script opcode into WitnessVersion
variant.
Returns
Version of the Witness program (for opcodes in range of OP_0
..OP_16
).
Errors
If the opcode does not correspond to any witness version, errors with
Error::MalformedWitnessVersion
.
§impl<'a> TryFrom<Instruction<'a>> for WitnessVersion
impl<'a> TryFrom<Instruction<'a>> for WitnessVersion
§fn try_from(
instruction: Instruction<'_>
) -> Result<WitnessVersion, <WitnessVersion as TryFrom<Instruction<'a>>>::Error>
fn try_from( instruction: Instruction<'_> ) -> Result<WitnessVersion, <WitnessVersion as TryFrom<Instruction<'a>>>::Error>
Converts bitcoin script [Instruction
] (parsed opcode) into WitnessVersion
variant.
Returns
Version of the Witness program for [Instruction::Op
] and [Instruction::PushBytes
] with
byte value within 1..=16
range.
Errors
If the opcode does not correspond to any witness version, errors with
Error::MalformedWitnessVersion
for the rest of opcodes.
§impl TryFrom<u5> for WitnessVersion
impl TryFrom<u5> for WitnessVersion
§fn try_from(
value: u5
) -> Result<WitnessVersion, <WitnessVersion as TryFrom<u5>>::Error>
fn try_from( value: u5 ) -> Result<WitnessVersion, <WitnessVersion as TryFrom<u5>>::Error>
Converts 5-bit unsigned integer value matching single symbol from Bech32(m) address encoding
([bech32::u5
]) into WitnessVersion
variant.
Returns
Version of the Witness program.
Errors
If the integer does not correspond to any witness version, errors with
Error::InvalidWitnessVersion
.
§impl TryFrom<u8> for WitnessVersion
impl TryFrom<u8> for WitnessVersion
§fn try_from(
no: u8
) -> Result<WitnessVersion, <WitnessVersion as TryFrom<u8>>::Error>
fn try_from( no: u8 ) -> Result<WitnessVersion, <WitnessVersion as TryFrom<u8>>::Error>
Converts an 8-bit unsigned integer value into WitnessVersion
variant.
Returns
Version of the Witness program.
Errors
If the integer does not correspond to any witness version, errors with
Error::InvalidWitnessVersion
.
impl Copy for WitnessVersion
impl Eq for WitnessVersion
impl StructuralEq for WitnessVersion
impl StructuralPartialEq for WitnessVersion
Auto Trait Implementations§
impl RefUnwindSafe for WitnessVersion
impl Send for WitnessVersion
impl Sync for WitnessVersion
impl Unpin for WitnessVersion
impl UnwindSafe for WitnessVersion
Blanket Implementations§
§impl<T> Conv for T
impl<T> Conv for T
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self
, then passes self.as_mut()
into the pipe
function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.