Skip to main content

Body

Enum Body 

Source
pub enum Body {
    Children(Vec<Node>),
    Variable {
        k: u8,
        children: Vec<Node>,
    },
    MultiKeys {
        k: u8,
        indices: Vec<u8>,
    },
    Tr {
        is_nums: bool,
        key_index: u8,
        tree: Option<Box<Node>>,
    },
    KeyArg {
        index: u8,
    },
    Hash256Body([u8; 32]),
    Hash160Body([u8; 20]),
    Timelock(u32),
    Empty,
}
Expand description

Body shape for a Node, determined by its Tag.

Variants§

§

Children(Vec<Node>)

No body fields beyond N child nodes (Class 1 fixed-arity).

§

Variable

Variable-arity body for Tag::Thresh only (post-v0.30 Phase C). Encodes k + N child Nodes. Multi-family tags use Body::MultiKeys per SPEC v0.30 §4.

Fields

§k: u8

Threshold k.

§children: Vec<Node>

Child nodes; n = children.len().

§

MultiKeys

Multi-family body (Tag::Multi, SortedMulti, MultiA, SortedMultiA): k-of-n with raw kiw-width key indices, NOT full child Nodes. Per SPEC v0.30 §4: wire layout is tag | (k-1)(5) | (n-1)(5) | n × index(kiw).

Fields

§k: u8

Threshold k.

§indices: Vec<u8>

Placeholder indices @i; n = indices.len(). Each entry is emitted as kiw bits.

§

Tr

Tr’s body: NUMS flag, key index, optional tap-script-tree root. Per SPEC v0.30 §7: wire shape is Tag::Tr | is_nums(1) | [key_index(kiw) iff !is_nums] | has_tree(1) | [tree iff has_tree]. When is_nums = true, the internal key is the BIP-341 NUMS H-point 50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0 and key_index is unused on the wire (encoder writes 0 by convention; decoder ignores). When is_nums = false, key_index is a 0..n placeholder index encoded at kiw bits.

Fields

§is_nums: bool

true iff the internal key is the BIP-341 NUMS H-point.

§key_index: u8

Internal-key index into the descriptor’s key table. Unused when is_nums = true (no wire representation).

§tree: Option<Box<Node>>

Optional tap-script-tree root.

§

KeyArg

Single key-arg (Pkh, Wpkh, PkK, PkH, multi-family children). Wire bit-width for index is determined by the parent Descriptor’s key_index_width(); not carried in the AST.

Fields

§index: u8

Key index into the descriptor’s key table.

§

Hash256Body([u8; 32])

256-bit hash literal (Sha256, Hash256).

§

Hash160Body([u8; 20])

160-bit hash literal (Hash160, Ripemd160, RawPkH).

§

Timelock(u32)

32-bit Bitcoin-native u32 (After, Older).

§

Empty

No body (False, True).

Trait Implementations§

Source§

impl Clone for Body

Source§

fn clone(&self) -> Body

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Body

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Body

Source§

fn eq(&self, other: &Body) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Body

Source§

impl StructuralPartialEq for Body

Auto Trait Implementations§

§

impl Freeze for Body

§

impl RefUnwindSafe for Body

§

impl Send for Body

§

impl Sync for Body

§

impl Unpin for Body

§

impl UnsafeUnpin for Body

§

impl UnwindSafe for Body

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.