From: github-actions Date: Thu, 23 May 2024 14:36:45 +0000 (+0000) Subject: Publish autogenerated nightly docs X-Git-Url: http://internal-gitweb-vhost/script/%22https:/database/scripts/txout.html?a=commitdiff_plain;h=8c1b40b634bbd091cc817023cd47ea6bed921d25;p=bitcoindevkit.org Publish autogenerated nightly docs --- diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/all.html index 1cc037a592..452fb32776 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Traits

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Traits

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/index.html index 4d38c40151..d4136d1fee 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/index.html @@ -1,8 +1,8 @@ -bdk_bitcoind_rpc - Rust

Crate bdk_bitcoind_rpc

source ·
Expand description

This crate is used for emitting blockchain data from the bitcoind RPC interface. It does not +bdk_bitcoind_rpc - Rust

Crate bdk_bitcoind_rpc

source ·
Expand description

This crate is used for emitting blockchain data from the bitcoind RPC interface. It does not use the wallet RPC API, so this crate can be used with wallet-disabled Bitcoin Core nodes.

-

Emitter is the main structure which sources blockchain data from [bitcoincore_rpc::Client].

+

Emitter is the main structure which sources blockchain data from [bitcoincore_rpc::Client].

To only get block updates (exclude mempool transactions), the caller can use -Emitter::next_block or/and Emitter::next_header until it returns Ok(None) (which means -the chain tip is reached). A separate method, Emitter::mempool can be used to emit the whole +Emitter::next_block or/and Emitter::next_header until it returns Ok(None) (which means +the chain tip is reached). A separate method, Emitter::mempool can be used to emit the whole mempool.

-

Re-exports

pub use bitcoincore_rpc;

Structs

A newly emitted block from Emitter.
The Emitter is used to emit data sourced from [bitcoincore_rpc::Client].

Traits

Extends [bitcoincore_rpc::Error].
\ No newline at end of file +

Re-exports§

  • pub use bitcoincore_rpc;

Structs§

Traits§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/sidebar-items.js index eb508c460d..ead5684039 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["BlockEvent","A newly emitted block from [`Emitter`]."],["Emitter","The [`Emitter`] is used to emit data sourced from [`bitcoincore_rpc::Client`]."]],"trait":[["BitcoindRpcErrorExt","Extends [`bitcoincore_rpc::Error`]."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["BlockEvent","Emitter"],"trait":["BitcoindRpcErrorExt"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/struct.BlockEvent.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/struct.BlockEvent.html index 8c40bf3c0f..6011e8c345 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/struct.BlockEvent.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/struct.BlockEvent.html @@ -1,22 +1,35 @@ -BlockEvent in bdk_bitcoind_rpc - Rust
pub struct BlockEvent<B> {
+BlockEvent in bdk_bitcoind_rpc - Rust

Struct bdk_bitcoind_rpc::BlockEvent

source ·
pub struct BlockEvent<B> {
     pub block: B,
-    pub checkpoint: CheckPoint,
-}
Expand description

A newly emitted block from Emitter.

-

Fields§

§block: B

Either a full [Block] or [Header] of the new block.

-
§checkpoint: CheckPoint

The checkpoint of the new block.

-

A CheckPoint is a node of a linked list of BlockIds. This checkpoint is linked to -all BlockIds originally passed in Emitter::new as well as emitted blocks since then. + pub checkpoint: CheckPoint, +}

Expand description

A newly emitted block from Emitter.

+

Fields§

§block: B

Either a full [Block] or [Header] of the new block.

+
§checkpoint: CheckPoint

The checkpoint of the new block.

+

A [CheckPoint] is a node of a linked list of [BlockId]s. This checkpoint is linked to +all [BlockId]s originally passed in Emitter::new as well as emitted blocks since then. These blocks are guaranteed to be of the same chain.

This is important as BDK structures require block-to-apply to be connected with another block in the original chain.

-

Implementations§

The block height of this new block.

-

The block hash of this new block.

-

The BlockId of a previous block that this block connects to.

-

This either returns a BlockId of a previously emitted block or from the chain we started -with (passed in as last_cp in Emitter::new).

-

This value is derived from BlockEvent::checkpoint.

-

Trait Implementations§

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Implementations§

source§

impl<B> BlockEvent<B>

source

pub fn block_height(&self) -> u32

The block height of this new block.

+
source

pub fn block_hash(&self) -> BlockHash

The block hash of this new block.

+
source

pub fn connected_to(&self) -> BlockId

The [BlockId] of a previous block that this block connects to.

+

This either returns a [BlockId] of a previously emitted block or from the chain we started +with (passed in as last_cp in Emitter::new).

+

This value is derived from BlockEvent::checkpoint.

+

Trait Implementations§

source§

impl<B: Debug> Debug for BlockEvent<B>

source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<B> Freeze for BlockEvent<B>
where + B: Freeze,

§

impl<B> RefUnwindSafe for BlockEvent<B>
where + B: RefUnwindSafe,

§

impl<B> Send for BlockEvent<B>
where + B: Send,

§

impl<B> Sync for BlockEvent<B>
where + B: Sync,

§

impl<B> Unpin for BlockEvent<B>
where + B: Unpin,

§

impl<B> UnwindSafe for BlockEvent<B>
where + B: UnwindSafe,

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> 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.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/struct.Emitter.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/struct.Emitter.html index aec3eeb9e3..83f1d60e54 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/struct.Emitter.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/struct.Emitter.html @@ -1,11 +1,11 @@ -Emitter in bdk_bitcoind_rpc - Rust

Struct bdk_bitcoind_rpc::Emitter

source ·
pub struct Emitter<'c, C> { /* private fields */ }
Expand description

The Emitter is used to emit data sourced from [bitcoincore_rpc::Client].

-

Refer to module-level documentation for more.

-

Implementations§

Construct a new Emitter.

+Emitter in bdk_bitcoind_rpc - Rust

Struct bdk_bitcoind_rpc::Emitter

source ·
pub struct Emitter<'c, C> { /* private fields */ }
Expand description

The Emitter is used to emit data sourced from [bitcoincore_rpc::Client].

+

Refer to module-level documentation for more.

+

Implementations§

source§

impl<'c, C: RpcApi> Emitter<'c, C>

source

pub fn new(client: &'c C, last_cp: CheckPoint, start_height: u32) -> Self

Construct a new Emitter.

last_cp informs the emitter of the chain we are starting off with. This way, the emitter can start emission from a block that connects to the original chain.

start_height starts emission from a given height (if there are no conflicts with the original chain).

-

Emit mempool transactions, alongside their first-seen unix timestamps.

+
source

pub fn mempool(&mut self) -> Result<Vec<(Transaction, u64)>, Error>

Emit mempool transactions, alongside their first-seen unix timestamps.

This method emits each transaction only once, unless we cannot guarantee the transaction’s ancestors are already emitted.

To understand why, consider a receiver which filters transactions based on whether it @@ -13,10 +13,21 @@ alters the UTXO set of tracked script pubkeys. If an emitted mempool transaction tracked UTXO which is confirmed at height h, but the receiver has only seen up to block of height h-1, we want to re-emit this transaction until the receiver has seen the block at height h.

-

Emit the next block height and header (if any).

-

Emit the next block height and block (if any).

-

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+
source

pub fn next_header(&mut self) -> Result<Option<BlockEvent<Header>>, Error>

Emit the next block height and header (if any).

+
source

pub fn next_block(&mut self) -> Result<Option<BlockEvent<Block>>, Error>

Emit the next block height and block (if any).

+

Auto Trait Implementations§

§

impl<'c, C> Freeze for Emitter<'c, C>

§

impl<'c, C> RefUnwindSafe for Emitter<'c, C>
where + C: RefUnwindSafe,

§

impl<'c, C> Send for Emitter<'c, C>
where + C: Sync,

§

impl<'c, C> Sync for Emitter<'c, C>
where + C: Sync,

§

impl<'c, C> Unpin for Emitter<'c, C>

§

impl<'c, C> UnwindSafe for Emitter<'c, C>
where + C: RefUnwindSafe,

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> 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.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.html index 188c73eaa2..c214908cdf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.html @@ -1,7 +1,8 @@ -BitcoindRpcErrorExt in bdk_bitcoind_rpc - Rust
pub trait BitcoindRpcErrorExt {
+BitcoindRpcErrorExt in bdk_bitcoind_rpc - Rust

Trait bdk_bitcoind_rpc::BitcoindRpcErrorExt

source ·
pub trait BitcoindRpcErrorExt {
+    // Required method
     fn is_not_found_error(&self) -> bool;
-}
Expand description

Extends [bitcoincore_rpc::Error].

-

Required Methods§

Returns whether the error is a “not found” error.

-

This is useful since Emitter emits Result<_, bitcoincore_rpc::Error>s as -Iterator::Item.

-

Implementations on Foreign Types§

Implementors§

\ No newline at end of file +}
Expand description

Extends [bitcoincore_rpc::Error].

+

Required Methods§

source

fn is_not_found_error(&self) -> bool

Returns whether the error is a “not found” error.

+

This is useful since Emitter emits Result<_, bitcoincore_rpc::Error>s as +Iterator::Item.

+

Implementations on Foreign Types§

source§

impl BitcoindRpcErrorExt for Error

Implementors§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html index 3f93128943..e4fa5b0ded 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.BIP32_MAX_INDEX.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.BIP32_MAX_INDEX.html index 93a4433636..9eed48b4c7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.BIP32_MAX_INDEX.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.BIP32_MAX_INDEX.html @@ -1,2 +1,2 @@ -BIP32_MAX_INDEX in bdk_chain - Rust

Constant bdk_chain::BIP32_MAX_INDEX

source ·
pub const BIP32_MAX_INDEX: u32 = _; // 2_147_483_647u32
Expand description

Maximum BIP32 derivation index.

-
\ No newline at end of file +BIP32_MAX_INDEX in bdk_chain - Rust

Constant bdk_chain::BIP32_MAX_INDEX

source ·
pub const BIP32_MAX_INDEX: u32 = _; // 2_147_483_647u32
Expand description

Maximum BIP32 derivation index.

+
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.COINBASE_MATURITY.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.COINBASE_MATURITY.html index 6032de91a2..b9e7500ac8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.COINBASE_MATURITY.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/constant.COINBASE_MATURITY.html @@ -1,2 +1,2 @@ -COINBASE_MATURITY in bdk_chain - Rust

Constant bdk_chain::COINBASE_MATURITY

source ·
pub const COINBASE_MATURITY: u32 = 100;
Expand description

How many confirmations are needed f or a coinbase output to be spent.

-
\ No newline at end of file +COINBASE_MATURITY in bdk_chain - Rust

Constant bdk_chain::COINBASE_MATURITY

source ·
pub const COINBASE_MATURITY: u32 = 100;
Expand description

How many confirmations are needed f or a coinbase output to be spent.

+
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ChainPosition.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ChainPosition.html index 2c4434544d..66a1953ed6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ChainPosition.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ChainPosition.html @@ -1,19 +1,38 @@ -ChainPosition in bdk_chain - Rust
pub enum ChainPosition<A> {
+ChainPosition in bdk_chain - Rust

Enum bdk_chain::ChainPosition

source ·
pub enum ChainPosition<A> {
     Confirmed(A),
     Unconfirmed(u64),
-}
Expand description

Represents the observed position of some chain data.

-

The generic A should be a Anchor implementation.

-

Variants§

§

Confirmed(A)

The chain data is seen as confirmed, and in anchored by A.

+}
Expand description

Represents the observed position of some chain data.

+

The generic A should be a Anchor implementation.

+

Variants§

§

Confirmed(A)

The chain data is seen as confirmed, and in anchored by A.

§

Unconfirmed(u64)

The chain data is not confirmed and last seen in the mempool at this timestamp.

-

Implementations§

Returns whether ChainPosition is confirmed or not.

-

Maps a ChainPosition<&A> into a ChainPosition<A> by cloning the contents.

-

Determines the upper bound of the confirmation height.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Converts to this type from the input type.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Implementations§

source§

impl<A> ChainPosition<A>

source

pub fn is_confirmed(&self) -> bool

Returns whether ChainPosition is confirmed or not.

+
source§

impl<A: Clone> ChainPosition<&A>

source

pub fn cloned(self) -> ChainPosition<A>

Maps a ChainPosition<&A> into a ChainPosition<A> by cloning the contents.

+
source§

impl<A: Anchor> ChainPosition<A>

source

pub fn confirmation_height_upper_bound(&self) -> Option<u32>

Determines the upper bound of the confirmation height.

+

Trait Implementations§

source§

impl<A: Clone> Clone for ChainPosition<A>

source§

fn clone(&self) -> ChainPosition<A>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<A: Debug> Debug for ChainPosition<A>

source§

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

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

impl From<ChainPosition<ConfirmationTimeHeightAnchor>> for ConfirmationTime

source§

fn from(observed_as: ChainPosition<ConfirmationTimeHeightAnchor>) -> Self

Converts to this type from the input type.
source§

impl<A: Hash> Hash for ChainPosition<A>

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<A: Ord> Ord for ChainPosition<A>

source§

fn cmp(&self, other: &ChainPosition<A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<A: PartialEq> PartialEq for ChainPosition<A>

source§

fn eq(&self, other: &ChainPosition<A>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<A: PartialOrd> PartialOrd for ChainPosition<A>

source§

fn partial_cmp(&self, other: &ChainPosition<A>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl<A: Copy> Copy for ChainPosition<A>

source§

impl<A: Eq> Eq for ChainPosition<A>

source§

impl<A> StructuralPartialEq for ChainPosition<A>

Auto Trait Implementations§

§

impl<A> Freeze for ChainPosition<A>
where + A: Freeze,

§

impl<A> RefUnwindSafe for ChainPosition<A>
where + A: RefUnwindSafe,

§

impl<A> Send for ChainPosition<A>
where + A: Send,

§

impl<A> Sync for ChainPosition<A>
where + A: Sync,

§

impl<A> Unpin for ChainPosition<A>
where + A: Unpin,

§

impl<A> UnwindSafe for ChainPosition<A>
where + A: UnwindSafe,

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ConfirmationTime.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ConfirmationTime.html index 87be5a21d2..0a8be877d8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ConfirmationTime.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/enum.ConfirmationTime.html @@ -1,4 +1,4 @@ -ConfirmationTime in bdk_chain - Rust
pub enum ConfirmationTime {
+ConfirmationTime in bdk_chain - Rust

Enum bdk_chain::ConfirmationTime

source ·
pub enum ConfirmationTime {
     Confirmed {
         height: u32,
         time: u64,
@@ -6,20 +6,36 @@
     Unconfirmed {
         last_seen: u64,
     },
-}
Expand description

Block height and timestamp at which a transaction is confirmed.

-

Variants§

§

Confirmed

Fields

§height: u32

Confirmation height.

-
§time: u64

Confirmation time in unix seconds.

-

The transaction is confirmed

-
§

Unconfirmed

Fields

§last_seen: u64

The last-seen timestamp in unix seconds.

-

The transaction is unconfirmed

-

Implementations§

Construct an unconfirmed variant using the given last_seen time in unix seconds.

-

Returns whether ConfirmationTime is the confirmed variant.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+}
Expand description

Block height and timestamp at which a transaction is confirmed.

+

Variants§

§

Confirmed

The transaction is confirmed

+

Fields

§height: u32

Confirmation height.

+
§time: u64

Confirmation time in unix seconds.

+
§

Unconfirmed

The transaction is unconfirmed

+

Fields

§last_seen: u64

The last-seen timestamp in unix seconds.

+

Implementations§

source§

impl ConfirmationTime

source

pub fn unconfirmed(last_seen: u64) -> Self

Construct an unconfirmed variant using the given last_seen time in unix seconds.

+
source

pub fn is_confirmed(&self) -> bool

Returns whether ConfirmationTime is the confirmed variant.

+

Trait Implementations§

source§

impl Clone for ConfirmationTime

source§

fn clone(&self) -> ConfirmationTime

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for ConfirmationTime

source§

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

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

impl<'de> Deserialize<'de> for ConfirmationTime

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<ChainPosition<ConfirmationTimeHeightAnchor>> for ConfirmationTime

source§

fn from(observed_as: ChainPosition<ConfirmationTimeHeightAnchor>) -> Self

Converts to this type from the input type.
source§

impl Hash for ConfirmationTime

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for ConfirmationTime

source§

fn cmp(&self, other: &ConfirmationTime) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for ConfirmationTime

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for ConfirmationTime

source§

fn partial_cmp(&self, other: &ConfirmationTime) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Serialize for ConfirmationTime

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for ConfirmationTime

source§

impl Eq for ConfirmationTime

source§

impl StructuralPartialEq for ConfirmationTime

Auto Trait Implementations§

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html index dd353c6c26..2f4f131589 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/index.html @@ -1,4 +1,4 @@ -bdk_chain - Rust

Crate bdk_chain

source ·
Expand description

This crate is a collection of core structures for Bitcoin Dev Kit.

+bdk_chain - Rust

Crate bdk_chain

source ·
Expand description

This crate is a collection of core structures for Bitcoin Dev Kit.

The goal of this crate is to give wallets the mechanisms needed to:

  1. Figure out what data they need to fetch.
  2. @@ -14,8 +14,8 @@ consistently.
  3. Data persistence agnostic – bdk_chain does not care where you cache on-chain data, what you cache or how you retrieve it from persistent storage.
-

Re-exports

pub extern crate serde_crate as serde;
pub use bitcoin;
pub use indexed_tx_graph::IndexedTxGraph;
pub use tx_graph::TxGraph;
pub use miniscript;

Modules

Contains the IndexedTxGraph and associated types. Refer to the -IndexedTxGraph documentation for more.
Module for keychain related structures.
The LocalChain is a local implementation of ChainOracle.
Helper types for spk-based blockchain clients.
Module for structures that store and traverse transactions.

Structs

A reference to a block in the canonical chain.
An Anchor implementation that also records the exact confirmation height of the transaction.
An Anchor implementation that also records the exact confirmation time and height of the -transaction.
Represents the ID of a descriptor, defined as the sha256 hash of -the descriptor string, checksum excluded.
A TxOut with as much data as we can retrieve about it
An iterator for derived script pubkeys.
An index storing TxOuts that have a script pubkey that matches those in a list.

Enums

Represents the observed position of some chain data.
Block height and timestamp at which a transaction is confirmed.

Constants

Maximum BIP32 derivation index.
How many confirmations are needed f or a coinbase output to be spent.

Traits

Trait that “anchors” blockchain data to a specific block of height and hash.
An Anchor that can be constructed from a given block, block height and transaction position -within the block.
Trait that makes an object appendable.
Represents a service that tracks the blockchain.
A trait to extend the functionality of a miniscript descriptor.
\ No newline at end of file +

Re-exports§

Modules§

Structs§

  • A reference to a block in the canonical chain.
  • An Anchor implementation that also records the exact confirmation height of the transaction.
  • An Anchor implementation that also records the exact confirmation time and height of the +transaction.
  • Represents the ID of a descriptor, defined as the sha256 hash of +the descriptor string, checksum excluded.
  • A TxOut with as much data as we can retrieve about it
  • An iterator for derived script pubkeys.
  • An index storing TxOuts that have a script pubkey that matches those in a list.

Enums§

Constants§

Traits§

  • Trait that “anchors” blockchain data to a specific block of height and hash.
  • An Anchor that can be constructed from a given block, block height and transaction position +within the block.
  • Trait that makes an object appendable.
  • Represents a service that tracks the blockchain.
  • A trait to extend the functionality of a miniscript descriptor.
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/index.html index 4e1bd05638..56ae22746a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/index.html @@ -1,3 +1,3 @@ -bdk_chain::indexed_tx_graph - Rust
Expand description

Contains the IndexedTxGraph and associated types. Refer to the -IndexedTxGraph documentation for more.

-

Structs

Represents changes to an IndexedTxGraph.
The IndexedTxGraph combines a TxGraph and an Indexer implementation.

Traits

Utilities for indexing transaction data.
\ No newline at end of file +bdk_chain::indexed_tx_graph - Rust

Module bdk_chain::indexed_tx_graph

source ·
Expand description

Contains the IndexedTxGraph and associated types. Refer to the +IndexedTxGraph documentation for more.

+

Structs§

Traits§

  • Utilities for indexing transaction data.
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/sidebar-items.js index 8c785945b0..5b1649dcf2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["ChangeSet","Represents changes to an [`IndexedTxGraph`]."],["IndexedTxGraph","The [`IndexedTxGraph`] combines a [`TxGraph`] and an [`Indexer`] implementation."]],"trait":[["Indexer","Utilities for indexing transaction data."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["ChangeSet","IndexedTxGraph"],"trait":["Indexer"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html index c1ff287b7c..7fbfe486d1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.ChangeSet.html @@ -1,13 +1,38 @@ -ChangeSet in bdk_chain::indexed_tx_graph - Rust
pub struct ChangeSet<A, IA> {
+ChangeSet in bdk_chain::indexed_tx_graph - Rust

Struct bdk_chain::indexed_tx_graph::ChangeSet

source ·
pub struct ChangeSet<A, IA> {
     pub graph: ChangeSet<A>,
     pub indexer: IA,
-}
Expand description

Represents changes to an IndexedTxGraph.

-

Fields§

§graph: ChangeSet<A>

TxGraph changeset.

-
§indexer: IA

Indexer changeset.

-

Trait Implementations§

Append another object of the same type onto self.
Returns whether the structure is considered empty.
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+}
Expand description

Represents changes to an IndexedTxGraph.

+

Fields§

§graph: ChangeSet<A>

TxGraph changeset.

+
§indexer: IA

Indexer changeset.

+

Trait Implementations§

source§

impl<A: Anchor, IA: Append> Append for ChangeSet<A, IA>

source§

fn append(&mut self, other: Self)

Append another object of the same type onto self.
source§

fn is_empty(&self) -> bool

Returns whether the structure is considered empty.
source§

impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>

source§

fn clone(&self) -> ChangeSet<A, IA>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>

source§

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

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

impl<A, IA: Default> Default for ChangeSet<A, IA>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>
where + A: Ord + Deserialize<'de>, + IA: Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>

source§

fn from(graph: ChangeSet<A>) -> Self

Converts to this type from the input type.
source§

impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>

source§

fn from(indexer: ChangeSet<K>) -> Self

Converts to this type from the input type.
source§

impl<A: PartialEq, IA: PartialEq> PartialEq for ChangeSet<A, IA>

source§

fn eq(&self, other: &ChangeSet<A, IA>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<A, IA> Serialize for ChangeSet<A, IA>
where + A: Ord + Serialize, + IA: Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>

Auto Trait Implementations§

§

impl<A, IA> Freeze for ChangeSet<A, IA>
where + IA: Freeze,

§

impl<A, IA> RefUnwindSafe for ChangeSet<A, IA>
where + IA: RefUnwindSafe, + A: RefUnwindSafe,

§

impl<A, IA> Send for ChangeSet<A, IA>
where + IA: Send, + A: Send,

§

impl<A, IA> Sync for ChangeSet<A, IA>
where + IA: Sync, + A: Sync,

§

impl<A, IA> Unpin for ChangeSet<A, IA>
where + IA: Unpin,

§

impl<A, IA> UnwindSafe for ChangeSet<A, IA>
where + IA: UnwindSafe, + A: RefUnwindSafe,

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html index 707be30174..0cf6c9b62c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.html @@ -1,48 +1,97 @@ -IndexedTxGraph in bdk_chain::indexed_tx_graph - Rust
pub struct IndexedTxGraph<A, I> {
+IndexedTxGraph in bdk_chain::indexed_tx_graph - Rust

Struct bdk_chain::indexed_tx_graph::IndexedTxGraph

source ·
pub struct IndexedTxGraph<A, I> {
     pub index: I,
-    /* private fields */
-}
Expand description

The IndexedTxGraph combines a TxGraph and an Indexer implementation.

-

It ensures that TxGraph and Indexer are updated atomically.

-

Fields§

§index: I

Transaction index.

-

Implementations§

Construct a new IndexedTxGraph with a given index.

-

Get a reference of the internal transaction graph.

-

Applies the ChangeSet to the IndexedTxGraph.

-

Determines the ChangeSet between self and an empty IndexedTxGraph.

-

Apply an update directly.

-

update is a TxGraph<A> and the resultant changes is returned as ChangeSet.

-

Insert a floating txout of given outpoint.

-

Insert and index a transaction into the graph.

-

Insert an anchor for a given transaction.

-

Insert a unix timestamp of when a transaction is seen in the mempool.

-

This is used for transaction conflict resolution in TxGraph where the transaction with + /* private fields */ +}

Expand description

The IndexedTxGraph combines a TxGraph and an Indexer implementation.

+

It ensures that TxGraph and Indexer are updated atomically.

+

Fields§

§index: I

Transaction index.

+

Implementations§

source§

impl<A, I> IndexedTxGraph<A, I>

source

pub fn new(index: I) -> Self

Construct a new IndexedTxGraph with a given index.

+
source

pub fn graph(&self) -> &TxGraph<A>

Get a reference of the internal transaction graph.

+
source§

impl<A: Anchor, I: Indexer> IndexedTxGraph<A, I>

source

pub fn apply_changeset(&mut self, changeset: ChangeSet<A, I::ChangeSet>)

Applies the ChangeSet to the IndexedTxGraph.

+
source

pub fn initial_changeset(&self) -> ChangeSet<A, I::ChangeSet>

Determines the ChangeSet between self and an empty IndexedTxGraph.

+
source§

impl<A: Anchor, I: Indexer> IndexedTxGraph<A, I>
where + I::ChangeSet: Default + Append,

source

pub fn apply_update(&mut self, update: TxGraph<A>) -> ChangeSet<A, I::ChangeSet>

Apply an update directly.

+

update is a TxGraph<A> and the resultant changes is returned as ChangeSet.

+
source

pub fn insert_txout( + &mut self, + outpoint: OutPoint, + txout: TxOut +) -> ChangeSet<A, I::ChangeSet>

Insert a floating txout of given outpoint.

+
source

pub fn insert_tx(&mut self, tx: Transaction) -> ChangeSet<A, I::ChangeSet>

Insert and index a transaction into the graph.

+
source

pub fn insert_anchor( + &mut self, + txid: Txid, + anchor: A +) -> ChangeSet<A, I::ChangeSet>

Insert an anchor for a given transaction.

+
source

pub fn insert_seen_at( + &mut self, + txid: Txid, + seen_at: u64 +) -> ChangeSet<A, I::ChangeSet>

Insert a unix timestamp of when a transaction is seen in the mempool.

+

This is used for transaction conflict resolution in TxGraph where the transaction with the later last-seen is prioritized.

-

Batch insert transactions, filtering out those that are irrelevant.

-

Relevancy is determined by the Indexer::is_tx_relevant implementation of I. Irrelevant +

source

pub fn batch_insert_relevant<'t>( + &mut self, + txs: impl IntoIterator<Item = (&'t Transaction, impl IntoIterator<Item = A>)> +) -> ChangeSet<A, I::ChangeSet>

Batch insert transactions, filtering out those that are irrelevant.

+

Relevancy is determined by the Indexer::is_tx_relevant implementation of I. Irrelevant transactions in txs will be ignored. txs do not need to be in topological order.

-

Batch insert unconfirmed transactions, filtering out those that are irrelevant.

-

Relevancy is determined by the internal Indexer::is_tx_relevant implementation of I. +

source

pub fn batch_insert_relevant_unconfirmed<'t>( + &mut self, + unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)> +) -> ChangeSet<A, I::ChangeSet>

Batch insert unconfirmed transactions, filtering out those that are irrelevant.

+

Relevancy is determined by the internal Indexer::is_tx_relevant implementation of I. Irrelevant transactions in txs will be ignored.

Items of txs are tuples containing the transaction and a last seen timestamp. The last seen communicates when the transaction is last seen in the mempool which is used for -conflict-resolution in TxGraph (refer to TxGraph::insert_seen_at for details).

-

Batch insert unconfirmed transactions.

+conflict-resolution in TxGraph (refer to TxGraph::insert_seen_at for details).

+
source

pub fn batch_insert_unconfirmed( + &mut self, + txs: impl IntoIterator<Item = (Transaction, u64)> +) -> ChangeSet<A, I::ChangeSet>

Batch insert unconfirmed transactions.

Items of txs are tuples containing the transaction and a last seen timestamp. The last seen communicates when the transaction is last seen in the mempool which is used for -conflict-resolution in TxGraph (refer to TxGraph::insert_seen_at for details).

-

To filter out irrelevant transactions, use batch_insert_relevant_unconfirmed instead.

-

Methods are available if the anchor (A) implements AnchorFromBlockPosition.

-

Batch insert all transactions of the given block of height, filtering out those that are +conflict-resolution in TxGraph (refer to TxGraph::insert_seen_at for details).

+

To filter out irrelevant transactions, use batch_insert_relevant_unconfirmed instead.

+
source§

impl<A, I: Indexer> IndexedTxGraph<A, I>

Methods are available if the anchor (A) implements AnchorFromBlockPosition.

+
source

pub fn apply_block_relevant( + &mut self, + block: &Block, + height: u32 +) -> ChangeSet<A, I::ChangeSet>

Batch insert all transactions of the given block of height, filtering out those that are irrelevant.

Each inserted transaction’s anchor will be constructed from -AnchorFromBlockPosition::from_block_position.

-

Relevancy is determined by the internal Indexer::is_tx_relevant implementation of I. +AnchorFromBlockPosition::from_block_position.

+

Relevancy is determined by the internal Indexer::is_tx_relevant implementation of I. Irrelevant transactions in txs will be ignored.

-

Batch insert all transactions of the given block of height.

+
source

pub fn apply_block( + &mut self, + block: Block, + height: u32 +) -> ChangeSet<A, I::ChangeSet>

Batch insert all transactions of the given block of height.

Each inserted transaction’s anchor will be constructed from -AnchorFromBlockPosition::from_block_position.

-

To only insert relevant transactions, use apply_block_relevant instead.

-

Trait Implementations§

Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+AnchorFromBlockPosition::from_block_position.

+

To only insert relevant transactions, use apply_block_relevant instead.

+

Trait Implementations§

source§

impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>

source§

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

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

impl<A, I: Default> Default for IndexedTxGraph<A, I>

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl<A, I> Freeze for IndexedTxGraph<A, I>
where + I: Freeze,

§

impl<A, I> RefUnwindSafe for IndexedTxGraph<A, I>
where + I: RefUnwindSafe, + A: RefUnwindSafe,

§

impl<A, I> Send for IndexedTxGraph<A, I>
where + I: Send, + A: Send,

§

impl<A, I> Sync for IndexedTxGraph<A, I>
where + I: Sync, + A: Sync,

§

impl<A, I> Unpin for IndexedTxGraph<A, I>
where + I: Unpin,

§

impl<A, I> UnwindSafe for IndexedTxGraph<A, I>
where + I: UnwindSafe, + A: RefUnwindSafe,

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> 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.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/trait.Indexer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/trait.Indexer.html index 33ec946e68..2b15aa1f6e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/trait.Indexer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/indexed_tx_graph/trait.Indexer.html @@ -1,18 +1,23 @@ -Indexer in bdk_chain::indexed_tx_graph - Rust
pub trait Indexer {
+Indexer in bdk_chain::indexed_tx_graph - Rust

Trait bdk_chain::indexed_tx_graph::Indexer

source ·
pub trait Indexer {
     type ChangeSet;
 
-    fn index_txout(
        &mut self,
        outpoint: OutPoint,
        txout: &TxOut
    ) -> Self::ChangeSet; + // Required methods + fn index_txout( + &mut self, + outpoint: OutPoint, + txout: &TxOut + ) -> Self::ChangeSet; fn index_tx(&mut self, tx: &Transaction) -> Self::ChangeSet; fn apply_changeset(&mut self, changeset: Self::ChangeSet); fn initial_changeset(&self) -> Self::ChangeSet; fn is_tx_relevant(&self, tx: &Transaction) -> bool; -}
Expand description

Utilities for indexing transaction data.

-

Types which implement this trait can be used to construct an IndexedTxGraph. +}

Expand description

Utilities for indexing transaction data.

+

Types which implement this trait can be used to construct an IndexedTxGraph. This trait’s methods should rarely be called directly.

-

Required Associated Types§

The resultant “changeset” when new transaction data is indexed.

-

Required Methods§

Scan and index the given outpoint and txout.

-

Scans a transaction for relevant outpoints, which are stored and indexed internally.

-

Apply changeset to itself.

-

Determines the ChangeSet between self and an empty Indexer.

-

Determines whether the transaction should be included in the index.

-

Implementors§

\ No newline at end of file +

Required Associated Types§

source

type ChangeSet

The resultant “changeset” when new transaction data is indexed.

+

Required Methods§

source

fn index_txout(&mut self, outpoint: OutPoint, txout: &TxOut) -> Self::ChangeSet

Scan and index the given outpoint and txout.

+
source

fn index_tx(&mut self, tx: &Transaction) -> Self::ChangeSet

Scans a transaction for relevant outpoints, which are stored and indexed internally.

+
source

fn apply_changeset(&mut self, changeset: Self::ChangeSet)

Apply changeset to itself.

+
source

fn initial_changeset(&self) -> Self::ChangeSet

Determines the ChangeSet between self and an empty Indexer.

+
source

fn is_tx_relevant(&self, tx: &Transaction) -> bool

Determines whether the transaction should be included in the index.

+

Implementors§

source§

impl<I: Clone + Ord> Indexer for SpkTxOutIndex<I>

source§

impl<K: Clone + Ord + Debug> Indexer for KeychainTxOutIndex<K>

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/index.html index f7b11f592f..acf68ba6e3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/index.html @@ -1,10 +1,10 @@ -bdk_chain::keychain - Rust

Module bdk_chain::keychain

source ·
Expand description

Module for keychain related structures.

+bdk_chain::keychain - Rust

Module bdk_chain::keychain

source ·
Expand description

Module for keychain related structures.

A keychain here is a set of application-defined indexes for a miniscript descriptor where we can derive script pubkeys at a particular derivation index. The application’s index is simply anything that implements Ord.

-

KeychainTxOutIndex indexes script pubkeys of keychains and scans in relevant outpoints (that -has a txout containing an indexed script pubkey). Internally, this uses SpkTxOutIndex, but +

KeychainTxOutIndex indexes script pubkeys of keychains and scans in relevant outpoints (that +has a txout containing an indexed script pubkey). Internally, this uses SpkTxOutIndex, but also maintains “revealed” and “lookahead” index counts per keychain.

-

Structs

Balance, differentiated into various categories.
Represents updates to the derivation index of a KeychainTxOutIndex. -It maps each keychain K to a descriptor and its last revealed index.
KeychainTxOutIndex controls how script pubkeys are revealed for multiple keychains, and -indexes [TxOut]s with them.
\ No newline at end of file +

Structs§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/sidebar-items.js index 4b01e1a408..fa5ca6e6e3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["Balance","Balance, differentiated into various categories."],["ChangeSet","Represents updates to the derivation index of a `KeychainTxOutIndex`. It maps each keychain `K` to a descriptor and its last revealed index."],["KeychainTxOutIndex","[`KeychainTxOutIndex`] controls how script pubkeys are revealed for multiple keychains, and indexes [`TxOut`]s with them."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["Balance","ChangeSet","KeychainTxOutIndex"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.Balance.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.Balance.html index a914b1787c..1b81877e50 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.Balance.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.Balance.html @@ -1,21 +1,33 @@ -Balance in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::Balance

source ·
pub struct Balance {
+Balance in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::Balance

source ·
pub struct Balance {
     pub immature: Amount,
     pub trusted_pending: Amount,
     pub untrusted_pending: Amount,
     pub confirmed: Amount,
-}
Expand description

Balance, differentiated into various categories.

-

Fields§

§immature: Amount

All coinbase outputs not yet matured

-
§trusted_pending: Amount

Unconfirmed UTXOs generated by a wallet tx

-
§untrusted_pending: Amount

Unconfirmed UTXOs received from an external wallet

-
§confirmed: Amount

Confirmed and immediately spendable balance

-

Implementations§

Get sum of trusted_pending and confirmed coins.

+}
Expand description

Balance, differentiated into various categories.

+

Fields§

§immature: Amount

All coinbase outputs not yet matured

+
§trusted_pending: Amount

Unconfirmed UTXOs generated by a wallet tx

+
§untrusted_pending: Amount

Unconfirmed UTXOs received from an external wallet

+
§confirmed: Amount

Confirmed and immediately spendable balance

+

Implementations§

source§

impl Balance

source

pub fn trusted_spendable(&self) -> Amount

Get sum of trusted_pending and confirmed coins.

This is the balance you can spend right now that shouldn’t get cancelled via another party double spending it.

-

Get the whole balance visible to the wallet.

-

Trait Implementations§

The resulting type after applying the + operator.
Performs the + operation. Read more
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+
source

pub fn total(&self) -> Amount

Get the whole balance visible to the wallet.

+

Trait Implementations§

source§

impl Add for Balance

§

type Output = Balance

The resulting type after applying the + operator.
source§

fn add(self, other: Self) -> Self

Performs the + operation. Read more
source§

impl Clone for Balance

source§

fn clone(&self) -> Balance

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for Balance

source§

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

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

impl Default for Balance

source§

fn default() -> Balance

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Balance

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Balance

source§

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

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

impl PartialEq for Balance

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Balance

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Eq for Balance

source§

impl StructuralPartialEq for Balance

Auto Trait Implementations§

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.ChangeSet.html index 6f9bc42d90..7269d51139 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.ChangeSet.html @@ -1,22 +1,39 @@ -ChangeSet in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::ChangeSet

source ·
pub struct ChangeSet<K> {
+ChangeSet in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::ChangeSet

source ·
pub struct ChangeSet<K> {
     pub keychains_added: BTreeMap<K, Descriptor<DescriptorPublicKey>>,
     pub last_revealed: BTreeMap<DescriptorId, u32>,
-}
Expand description

Represents updates to the derivation index of a KeychainTxOutIndex. +}

Expand description

Represents updates to the derivation index of a KeychainTxOutIndex. It maps each keychain K to a descriptor and its last revealed index.

-

It can be applied to KeychainTxOutIndex with apply_changeset. `ChangeSet are +

It can be applied to KeychainTxOutIndex with apply_changeset. `ChangeSet are monotone in that they will never decrease the revealed derivation index.

-

Fields§

§keychains_added: BTreeMap<K, Descriptor<DescriptorPublicKey>>

Contains the keychains that have been added and their respective descriptor

-
§last_revealed: BTreeMap<DescriptorId, u32>

Contains for each descriptor_id the last revealed index of derivation

-

Trait Implementations§

Append another ChangeSet into self.

-

For each keychain in keychains_added in the given ChangeSet: +

Fields§

§keychains_added: BTreeMap<K, Descriptor<DescriptorPublicKey>>

Contains the keychains that have been added and their respective descriptor

+
§last_revealed: BTreeMap<DescriptorId, u32>

Contains for each descriptor_id the last revealed index of derivation

+

Trait Implementations§

source§

impl<K: Ord> Append for ChangeSet<K>

source§

fn append(&mut self, other: Self)

Append another ChangeSet into self.

+

For each keychain in keychains_added in the given ChangeSet: If the keychain already exist with a different descriptor, we overwrite the old descriptor.

-

For each last_revealed in the given ChangeSet: +

For each last_revealed in the given ChangeSet: If the keychain already exists, increase the index when the other’s index > self’s index.

-

Returns whether the changeset are empty.

-
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+
source§

fn is_empty(&self) -> bool

Returns whether the changeset are empty.

+
source§

impl<K: Clone> Clone for ChangeSet<K>

source§

fn clone(&self) -> ChangeSet<K>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<K: Debug> Debug for ChangeSet<K>

source§

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

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

impl<K> Default for ChangeSet<K>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de, K> Deserialize<'de> for ChangeSet<K>
where + K: Ord + Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>

source§

fn from(indexer: ChangeSet<K>) -> Self

Converts to this type from the input type.
source§

impl<K: PartialEq> PartialEq for ChangeSet<K>

source§

fn eq(&self, other: &ChangeSet<K>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<K> Serialize for ChangeSet<K>
where + K: Ord + Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<K> StructuralPartialEq for ChangeSet<K>

Auto Trait Implementations§

§

impl<K> Freeze for ChangeSet<K>

§

impl<K> RefUnwindSafe for ChangeSet<K>
where + K: RefUnwindSafe,

§

impl<K> Send for ChangeSet<K>
where + K: Send,

§

impl<K> Sync for ChangeSet<K>
where + K: Sync,

§

impl<K> Unpin for ChangeSet<K>

§

impl<K> UnwindSafe for ChangeSet<K>
where + K: RefUnwindSafe,

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.KeychainTxOutIndex.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.KeychainTxOutIndex.html index 23a70db66f..a319716d2c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.KeychainTxOutIndex.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/keychain/struct.KeychainTxOutIndex.html @@ -1,33 +1,33 @@ -KeychainTxOutIndex in bdk_chain::keychain - Rust
pub struct KeychainTxOutIndex<K> { /* private fields */ }
Expand description

KeychainTxOutIndex controls how script pubkeys are revealed for multiple keychains, and +KeychainTxOutIndex in bdk_chain::keychain - Rust

Struct bdk_chain::keychain::KeychainTxOutIndex

source ·
pub struct KeychainTxOutIndex<K> { /* private fields */ }
Expand description

KeychainTxOutIndex controls how script pubkeys are revealed for multiple keychains, and indexes [TxOut]s with them.

A single keychain is a chain of script pubkeys derived from a single Descriptor. Keychains are identified using the K generic. Script pubkeys are identified by the keychain that they are derived from K, as well as the derivation index u32.

-

Revealed script pubkeys

+

§Revealed script pubkeys

Tracking how script pubkeys are revealed is useful for collecting chain data. For example, if the user has requested 5 script pubkeys (to receive money with), we only need to use those script pubkeys to scan for chain data.

-

Call reveal_to_target or reveal_next_spk to reveal more script pubkeys. -Call revealed_keychain_spks or revealed_spks to iterate through revealed script pubkeys.

-

Lookahead script pubkeys

+

Call reveal_to_target or reveal_next_spk to reveal more script pubkeys. +Call revealed_keychain_spks or revealed_spks to iterate through revealed script pubkeys.

+

§Lookahead script pubkeys

When an user first recovers a wallet (i.e. from a recovery phrase and/or descriptor), we will NOT have knowledge of which script pubkeys are revealed. So when we index a transaction or -txout (using index_tx/index_txout) we scan the txouts against script pubkeys derived +txout (using index_tx/index_txout) we scan the txouts against script pubkeys derived above the last revealed index. These additionally-derived script pubkeys are called the lookahead.

-

The KeychainTxOutIndex is constructed with the lookahead and cannot be altered. The -default lookahead count is 1000. Use new to set a custom lookahead.

-

Unbounded script pubkey iterator

+

The KeychainTxOutIndex is constructed with the lookahead and cannot be altered. The +default lookahead count is 1000. Use new to set a custom lookahead.

+

§Unbounded script pubkey iterator

For script-pubkey-based chain sources (such as Electrum/Esplora), an initial scan is best done by iterating though derived script pubkeys one by one and requesting transaction histories for each script pubkey. We will stop after x-number of script pubkeys have empty histories. An unbounded script pubkey iterator is useful to pass to such a chain source.

-

Call unbounded_spk_iter to get an unbounded script pubkey iterator for a given keychain. -Call all_unbounded_spk_iters to get unbounded script pubkey iterators for all keychains.

-

Change sets

-

Methods that can update the last revealed index or add keychains will return super::ChangeSet to report +

Call unbounded_spk_iter to get an unbounded script pubkey iterator for a given keychain. +Call all_unbounded_spk_iters to get unbounded script pubkey iterators for all keychains.

+

§Change sets

+

Methods that can update the last revealed index or add keychains will return super::ChangeSet to report these changes. This can be persisted for future recovery.

-

Synopsis

+

§Synopsis

use bdk_chain::keychain::KeychainTxOutIndex;
 
 // imagine our service has internal and external addresses but also addresses for users
@@ -47,57 +47,64 @@ these changes. This can be persisted for future recovery.

let _ = txout_index.insert_descriptor(MyKeychain::MyAppUser { user_id: 42 }, descriptor_42); let new_spk_for_user = txout_index.reveal_next_spk(&MyKeychain::MyAppUser{ user_id: 42 });
-

Non-recommend keychain to descriptor assignments

+

§Non-recommend keychain to descriptor assignments

A keychain (K) is used to identify a descriptor. However, the following keychain to descriptor arrangements result in behavior that is harder to reason about and is not recommended.

-

Multiple keychains identifying the same descriptor

+

§Multiple keychains identifying the same descriptor

Although a single keychain variant can only identify a single descriptor, multiple keychain variants can identify the same descriptor.

If multiple keychains identify the same descriptor:

    -
  1. Methods that take in a keychain (such as reveal_next_spk) will work normally when any +
  2. Methods that take in a keychain (such as reveal_next_spk) will work normally when any keychain (that identifies that descriptor) is passed in.
  3. -
  4. Methods that return data which associates with a descriptor (such as outpoints, -txouts, unused_spks, etc.) the method will return the highest-ranked keychain variant -that identifies the descriptor. Rank is determined by the Ord implementation of the keychain +
  5. Methods that return data which associates with a descriptor (such as outpoints, +txouts, unused_spks, etc.) the method will return the highest-ranked keychain variant +that identifies the descriptor. Rank is determined by the Ord implementation of the keychain type.

This arrangement is not recommended since some methods will return a single keychain variant even though multiple keychain variants identify the same descriptor.

-

Reassigning the descriptor of a single keychain

-

Descriptors added to KeychainTxOutIndex are never removed. However, a keychain that +

§Reassigning the descriptor of a single keychain

+

Descriptors added to KeychainTxOutIndex are never removed. However, a keychain that identifies a descriptor can be reassigned to identify a different descriptor. This may result in a situation where a descriptor has no associated keychain(s), and relevant [TxOut]s, -[OutPoint]s and [Script]s (of that descriptor) will not be return by KeychainTxOutIndex. +[OutPoint]s and [Script]s (of that descriptor) will not be return by KeychainTxOutIndex. Therefore, reassigning the descriptor of a single keychain is not recommended.

-

Implementations§

Construct a KeychainTxOutIndex with the given lookahead.

+

Implementations§

source§

impl<K> KeychainTxOutIndex<K>

source

pub fn new(lookahead: u32) -> Self

Construct a KeychainTxOutIndex with the given lookahead.

The lookahead is the number of script pubkeys to derive and cache from the internal descriptors over and above the last revealed script index. Without a lookahead the index will miss outputs you own when processing transactions whose output script pubkeys lie beyond the last revealed index. In certain situations, such as when performing an initial scan of the blockchain during wallet import, it may be uncertain or unknown what the index of the last revealed script pubkey actually is.

-

Refer to struct-level docs for more about lookahead.

-

Methods that are re-exposed from the internal SpkTxOutIndex.

-

Return a reference to the internal SpkTxOutIndex.

+

Refer to struct-level docs for more about lookahead.

+
source§

impl<K: Clone + Ord + Debug> KeychainTxOutIndex<K>

Methods that are re-exposed from the internal SpkTxOutIndex.

+
source

pub fn inner(&self) -> &SpkTxOutIndex<(DescriptorId, u32)>

Return a reference to the internal SpkTxOutIndex.

WARNING: The internal index will contain lookahead spks. Refer to -struct-level docs for more about lookahead.

-

Get the set of indexed outpoints, corresponding to tracked keychains.

-

Iterate over known txouts that spend to tracked script pubkeys.

-

Finds all txouts on a transaction that has previously been scanned and indexed.

-

Return the [TxOut] of outpoint if it has been indexed, and if it corresponds to a +struct-level docs for more about lookahead.

+
source

pub fn outpoints( + &self +) -> impl DoubleEndedIterator<Item = ((K, u32), OutPoint)> + '_

Get the set of indexed outpoints, corresponding to tracked keychains.

+
source

pub fn txouts( + &self +) -> impl DoubleEndedIterator<Item = (K, u32, OutPoint, &TxOut)> + '_

Iterate over known txouts that spend to tracked script pubkeys.

+
source

pub fn txouts_in_tx( + &self, + txid: Txid +) -> impl DoubleEndedIterator<Item = (K, u32, OutPoint, &TxOut)>

Finds all txouts on a transaction that has previously been scanned and indexed.

+
source

pub fn txout(&self, outpoint: OutPoint) -> Option<(K, u32, &TxOut)>

Return the [TxOut] of outpoint if it has been indexed, and if it corresponds to a tracked keychain.

The associated keychain and keychain index of the txout’s spk is also returned.

-

This calls SpkTxOutIndex::txout internally.

-

Return the script that exists under the given keychain’s index.

-

This calls SpkTxOutIndex::spk_at_index internally.

-

Returns the keychain and keychain index associated with the spk.

-

This calls SpkTxOutIndex::index_of_spk internally.

-

Returns whether the spk under the keychain’s index has been used.

+

This calls SpkTxOutIndex::txout internally.

+
source

pub fn spk_at_index(&self, keychain: K, index: u32) -> Option<&Script>

Return the script that exists under the given keychain’s index.

+

This calls SpkTxOutIndex::spk_at_index internally.

+
source

pub fn index_of_spk(&self, script: &Script) -> Option<(K, u32)>

Returns the keychain and keychain index associated with the spk.

+

This calls SpkTxOutIndex::index_of_spk internally.

+
source

pub fn is_used(&self, keychain: K, index: u32) -> bool

Returns whether the spk under the keychain’s index has been used.

Here, “unused” means that after the script pubkey was stored in the index, the index has never scanned a transaction output with it.

-

This calls SpkTxOutIndex::is_used internally.

-

Marks the script pubkey at index as used even though the tracker hasn’t seen an output +

This calls SpkTxOutIndex::is_used internally.

+
source

pub fn mark_used(&mut self, keychain: K, index: u32) -> bool

Marks the script pubkey at index as used even though the tracker hasn’t seen an output with it.

This only has an effect when the index had been added to self already and was unused.

Returns whether the spk under the given keychain and index is successfully @@ -105,44 +112,77 @@ marked as used. Returns false either when there is no descriptor under the given keychain, or when the spk is already marked as used.

This is useful when you want to reserve a script pubkey for something but don’t want to add the transaction output using it to the index yet. Other callers will consider index on -keychain used until you call unmark_used.

-

This calls SpkTxOutIndex::mark_used internally.

-

Undoes the effect of mark_used. Returns whether the index is inserted back into +keychain used until you call unmark_used.

+

This calls SpkTxOutIndex::mark_used internally.

+
source

pub fn unmark_used(&mut self, keychain: K, index: u32) -> bool

Undoes the effect of mark_used. Returns whether the index is inserted back into unused.

Note that if self has scanned an output with this script pubkey, then this will have no effect.

-

This calls SpkTxOutIndex::unmark_used internally.

-

Computes the total value transfer effect tx has on the script pubkeys belonging to the +

This calls SpkTxOutIndex::unmark_used internally.

+
source

pub fn sent_and_received( + &self, + tx: &Transaction, + range: impl RangeBounds<K> +) -> (Amount, Amount)

Computes the total value transfer effect tx has on the script pubkeys belonging to the keychains in range. Value is sent when a script pubkey in the range is on an input and received when it is on an output. For sent to be computed correctly, the output being spent must have already been scanned by the index. Calculating received just uses the [Transaction] outputs directly, so it will be correct even if it has not been scanned.

-

Computes the net value that this transaction gives to the script pubkeys in the index and +

source

pub fn net_value( + &self, + tx: &Transaction, + range: impl RangeBounds<K> +) -> SignedAmount

Computes the net value that this transaction gives to the script pubkeys in the index and takes from the transaction outputs in the index. Shorthand for calling -sent_and_received and subtracting sent from received.

-

This calls SpkTxOutIndex::net_value internally.

-

Return the map of the keychain to descriptors.

-

Insert a descriptor with a keychain associated to it.

+sent_and_received and subtracting sent from received.

+

This calls SpkTxOutIndex::net_value internally.

+
source§

impl<K: Clone + Ord + Debug> KeychainTxOutIndex<K>

source

pub fn keychains( + &self +) -> impl DoubleEndedIterator<Item = (&K, &Descriptor<DescriptorPublicKey>)> + ExactSizeIterator + '_

Return the map of the keychain to descriptors.

+
source

pub fn insert_descriptor( + &mut self, + keychain: K, + descriptor: Descriptor<DescriptorPublicKey> +) -> ChangeSet<K>

Insert a descriptor with a keychain associated to it.

Adding a descriptor means you will be able to derive new script pubkeys under it and the txout index will discover transaction outputs with those script pubkeys.

When trying to add a keychain that already existed under a different descriptor, or a descriptor that already existed with a different keychain, the old keychain (or descriptor) will be overwritten.

-

Gets the descriptor associated with the keychain. Returns None if the keychain doesn’t +

source

pub fn get_descriptor( + &self, + keychain: &K +) -> Option<&Descriptor<DescriptorPublicKey>>

Gets the descriptor associated with the keychain. Returns None if the keychain doesn’t have a descriptor associated with it.

-

Get the lookahead setting.

-

Refer to new for more information on the lookahead.

-

Store lookahead scripts until target_index (inclusive).

+
source

pub fn lookahead(&self) -> u32

Get the lookahead setting.

+

Refer to new for more information on the lookahead.

+
source

pub fn lookahead_to_target(&mut self, keychain: &K, target_index: u32)

Store lookahead scripts until target_index (inclusive).

This does not change the global lookahead setting.

-

Get an unbounded spk iterator over a given keychain. Returns None if the provided +

source

pub fn unbounded_spk_iter( + &self, + keychain: &K +) -> Option<SpkIterator<Descriptor<DescriptorPublicKey>>>

Get an unbounded spk iterator over a given keychain. Returns None if the provided keychain doesn’t exist

-

Get unbounded spk iterators for all keychains.

-

Iterate over revealed spks of keychains in range

-

Iterate over revealed spks of the given keychain.

-

Iterate over revealed, but unused, spks of all keychains.

-

Iterate over revealed, but unused, spks of the given keychain. +

source

pub fn all_unbounded_spk_iters( + &self +) -> BTreeMap<K, SpkIterator<Descriptor<DescriptorPublicKey>>>

Get unbounded spk iterators for all keychains.

+
source

pub fn revealed_spks( + &self, + range: impl RangeBounds<K> +) -> impl DoubleEndedIterator<Item = (&K, u32, &Script)> + Clone

Iterate over revealed spks of keychains in range

+
source

pub fn revealed_keychain_spks<'a>( + &'a self, + keychain: &'a K +) -> impl DoubleEndedIterator<Item = (u32, &Script)> + 'a

Iterate over revealed spks of the given keychain.

+
source

pub fn unused_spks( + &self +) -> impl DoubleEndedIterator<Item = (K, u32, &Script)> + Clone

Iterate over revealed, but unused, spks of all keychains.

+
source

pub fn unused_keychain_spks( + &self, + keychain: &K +) -> impl DoubleEndedIterator<Item = (u32, &Script)> + Clone

Iterate over revealed, but unused, spks of the given keychain. Returns an empty iterator if the provided keychain doesn’t exist.

-

Get the next derivation index for keychain. The next index is the index after the last revealed +

source

pub fn next_index(&self, keychain: &K) -> Option<(u32, bool)>

Get the next derivation index for keychain. The next index is the index after the last revealed derivation index.

The second field in the returned tuple represents whether the next derivation index is new. There are two scenarios where the next derivation index is reused (not new):

@@ -152,55 +192,86 @@ There are two scenarios where the next derivation index is reused (not new):

Not checking the second field of the tuple may result in address reuse.

Returns None if the provided keychain doesn’t exist.

-

Get the last derivation index that is revealed for each keychain.

-

Keychains with no revealed indices will not be included in the returned BTreeMap.

-

Get the last derivation index revealed for keychain. Returns None if the keychain doesn’t +

source

pub fn last_revealed_indices(&self) -> BTreeMap<K, u32>

Get the last derivation index that is revealed for each keychain.

+

Keychains with no revealed indices will not be included in the returned BTreeMap.

+
source

pub fn last_revealed_index(&self, keychain: &K) -> Option<u32>

Get the last derivation index revealed for keychain. Returns None if the keychain doesn’t exist, or if the keychain doesn’t have any revealed scripts.

-

Convenience method to call Self::reveal_to_target on multiple keychains.

-

Reveals script pubkeys of the keychain’s descriptor up to and including the +

source

pub fn reveal_to_target_multi( + &mut self, + keychains: &BTreeMap<K, u32> +) -> (BTreeMap<K, SpkIterator<Descriptor<DescriptorPublicKey>>>, ChangeSet<K>)

Convenience method to call Self::reveal_to_target on multiple keychains.

+
source

pub fn reveal_to_target( + &mut self, + keychain: &K, + target_index: u32 +) -> Option<(SpkIterator<Descriptor<DescriptorPublicKey>>, ChangeSet<K>)>

Reveals script pubkeys of the keychain’s descriptor up to and including the target_index.

If the target_index cannot be reached (due to the descriptor having no wildcard and/or the target_index is in the hardened index range), this method will make a best-effort and reveal up to the last possible index.

This returns an iterator of newly revealed indices (alongside their scripts) and a -super::ChangeSet, which reports updates to the latest revealed index. If no new script +super::ChangeSet, which reports updates to the latest revealed index. If no new script pubkeys are revealed, then both of these will be empty.

Returns None if the provided keychain doesn’t exist.

-

Attempts to reveal the next script pubkey for keychain.

+
source

pub fn reveal_next_spk( + &mut self, + keychain: &K +) -> Option<((u32, &Script), ChangeSet<K>)>

Attempts to reveal the next script pubkey for keychain.

Returns the derivation index of the revealed script pubkey, the revealed script pubkey and a -super::ChangeSet which represents changes in the last revealed index (if any). +super::ChangeSet which represents changes in the last revealed index (if any). Returns None if the provided keychain doesn’t exist.

When a new script cannot be revealed, we return the last revealed script and an empty -super::ChangeSet. There are two scenarios when a new script pubkey cannot be derived:

+super::ChangeSet. There are two scenarios when a new script pubkey cannot be derived:

  1. The descriptor has no wildcard and already has one script revealed.
  2. The descriptor has already revealed scripts up to the numeric bound.
  3. There is no descriptor associated with the given keychain.
-

Gets the next unused script pubkey in the keychain. I.e., the script pubkey with the lowest +

source

pub fn next_unused_spk( + &mut self, + keychain: &K +) -> Option<((u32, &Script), ChangeSet<K>)>

Gets the next unused script pubkey in the keychain. I.e., the script pubkey with the lowest index that has not been used yet.

This will derive and reveal a new script pubkey if no more unused script pubkeys exist.

If the descriptor has no wildcard and already has a used script pubkey or if a descriptor has used all scripts up to the derivation bounds, then the last derived script pubkey will be returned.

Returns None if the provided keychain doesn’t exist.

-

Iterate over all [OutPoint]s that have TxOuts with script pubkeys derived from +

source

pub fn keychain_outpoints<'a>( + &'a self, + keychain: &'a K +) -> impl DoubleEndedIterator<Item = (u32, OutPoint)> + 'a

Iterate over all [OutPoint]s that have TxOuts with script pubkeys derived from keychain.

-

Iterate over [OutPoint]s that have script pubkeys derived from keychains in range.

-

Returns the highest derivation index of the keychain where KeychainTxOutIndex has +

source

pub fn keychain_outpoints_in_range<'a>( + &'a self, + range: impl RangeBounds<K> + 'a +) -> impl DoubleEndedIterator<Item = (&'a K, u32, OutPoint)> + 'a

Iterate over [OutPoint]s that have script pubkeys derived from keychains in range.

+
source

pub fn last_used_index(&self, keychain: &K) -> Option<u32>

Returns the highest derivation index of the keychain where KeychainTxOutIndex has found a [TxOut] with it’s script pubkey.

-

Returns the highest derivation index of each keychain that KeychainTxOutIndex has found +

source

pub fn last_used_indices(&self) -> BTreeMap<K, u32>

Returns the highest derivation index of each keychain that KeychainTxOutIndex has found a [TxOut] with it’s script pubkey.

-

Applies the derivation changeset to the KeychainTxOutIndex, as specified in the -ChangeSet::append documentation:

+
source

pub fn apply_changeset(&mut self, changeset: ChangeSet<K>)

Applies the derivation changeset to the KeychainTxOutIndex, as specified in the +ChangeSet::append documentation:

  • Extends the number of derived scripts per keychain
  • Adds new descriptors introduced
  • If a descriptor is introduced for a keychain that already had a descriptor, overwrites the old descriptor
-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
The resultant “changeset” when new transaction data is indexed.
Scan and index the given outpoint and txout.
Scans a transaction for relevant outpoints, which are stored and indexed internally.
Determines the ChangeSet between self and an empty Indexer.
Apply changeset to itself.
Determines whether the transaction should be included in the index.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Trait Implementations§

source§

impl<K: Clone> Clone for KeychainTxOutIndex<K>

source§

fn clone(&self) -> KeychainTxOutIndex<K>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<K: Debug> Debug for KeychainTxOutIndex<K>

source§

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

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

impl<K> Default for KeychainTxOutIndex<K>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<K: Clone + Ord + Debug> Indexer for KeychainTxOutIndex<K>

§

type ChangeSet = ChangeSet<K>

The resultant “changeset” when new transaction data is indexed.
source§

fn index_txout(&mut self, outpoint: OutPoint, txout: &TxOut) -> Self::ChangeSet

Scan and index the given outpoint and txout.
source§

fn index_tx(&mut self, tx: &Transaction) -> Self::ChangeSet

Scans a transaction for relevant outpoints, which are stored and indexed internally.
source§

fn initial_changeset(&self) -> Self::ChangeSet

Determines the ChangeSet between self and an empty Indexer.
source§

fn apply_changeset(&mut self, changeset: Self::ChangeSet)

Apply changeset to itself.
source§

fn is_tx_relevant(&self, tx: &Transaction) -> bool

Determines whether the transaction should be included in the index.

Auto Trait Implementations§

§

impl<K> Freeze for KeychainTxOutIndex<K>

§

impl<K> RefUnwindSafe for KeychainTxOutIndex<K>
where + K: RefUnwindSafe,

§

impl<K> Send for KeychainTxOutIndex<K>
where + K: Send,

§

impl<K> Sync for KeychainTxOutIndex<K>
where + K: Sync,

§

impl<K> Unpin for KeychainTxOutIndex<K>

§

impl<K> UnwindSafe for KeychainTxOutIndex<K>
where + K: RefUnwindSafe,

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/enum.ApplyHeaderError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/enum.ApplyHeaderError.html index fe13590ec5..39e8deda93 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/enum.ApplyHeaderError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/enum.ApplyHeaderError.html @@ -1,14 +1,22 @@ -ApplyHeaderError in bdk_chain::local_chain - Rust
pub enum ApplyHeaderError {
+ApplyHeaderError in bdk_chain::local_chain - Rust

Enum bdk_chain::local_chain::ApplyHeaderError

source ·
pub enum ApplyHeaderError {
     InconsistentBlocks,
     CannotConnect(CannotConnectError),
-}
Expand description

Variants§

§

InconsistentBlocks

Occurs when connected_to block conflicts with either the current block or previous block.

+}
Expand description

Variants§

§

InconsistentBlocks

Occurs when connected_to block conflicts with either the current block or previous block.

§

CannotConnect(CannotConnectError)

Occurs when the update cannot connect with the original chain.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
The lower-level source of this error, if any. Read more
👎Deprecated since 1.42.0: use the Display impl or to_string()
👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for ApplyHeaderError

source§

fn clone(&self) -> ApplyHeaderError

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for ApplyHeaderError

source§

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

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

impl Display for ApplyHeaderError

source§

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

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

impl Error for ApplyHeaderError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl PartialEq for ApplyHeaderError

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for ApplyHeaderError

Auto Trait Implementations§

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> 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.

-
🔬This is a nightly-only experimental API. (provide_any)
Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/index.html index 43d2fe81bd..2c9a6dd437 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/index.html @@ -1,3 +1,3 @@ -bdk_chain::local_chain - Rust

Module bdk_chain::local_chain

source ·
Expand description

The LocalChain is a local implementation of ChainOracle.

-

Structs

Represents a failure when trying to insert/remove a checkpoint to/from LocalChain.
Occurs when an update does not have a common checkpoint with the original chain.
A LocalChain checkpoint is used to find the agreement point between two chains and as a -transaction anchor.
Iterates over checkpoints backwards.
This is a local implementation of ChainOracle.
An error which occurs when a LocalChain is constructed without a genesis checkpoint.

Enums

Type Definitions

The ChangeSet represents changes to LocalChain.
\ No newline at end of file +bdk_chain::local_chain - Rust

Module bdk_chain::local_chain

source ·
Expand description

The LocalChain is a local implementation of ChainOracle.

+

Structs§

Enums§

Type Aliases§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/sidebar-items.js index f453c9d3c0..b5fa19087b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["ApplyHeaderError","The error type for [`LocalChain::apply_header_connected_to`]."]],"struct":[["AlterCheckPointError","Represents a failure when trying to insert/remove a checkpoint to/from [`LocalChain`]."],["CannotConnectError","Occurs when an update does not have a common checkpoint with the original chain."],["CheckPoint","A [`LocalChain`] checkpoint is used to find the agreement point between two chains and as a transaction anchor."],["CheckPointIter","Iterates over checkpoints backwards."],["LocalChain","This is a local implementation of [`ChainOracle`]."],["MissingGenesisError","An error which occurs when a [`LocalChain`] is constructed without a genesis checkpoint."]],"type":[["ChangeSet","The [`ChangeSet`] represents changes to [`LocalChain`]."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["ApplyHeaderError"],"struct":["AlterCheckPointError","CannotConnectError","CheckPoint","CheckPointIter","LocalChain","MissingGenesisError"],"type":["ChangeSet"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.AlterCheckPointError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.AlterCheckPointError.html index 5a4faa2b29..953bb00787 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.AlterCheckPointError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.AlterCheckPointError.html @@ -1,16 +1,24 @@ -AlterCheckPointError in bdk_chain::local_chain - Rust
pub struct AlterCheckPointError {
+AlterCheckPointError in bdk_chain::local_chain - Rust

Struct bdk_chain::local_chain::AlterCheckPointError

source ·
pub struct AlterCheckPointError {
     pub height: u32,
     pub original_hash: BlockHash,
     pub update_hash: Option<BlockHash>,
-}
Expand description

Represents a failure when trying to insert/remove a checkpoint to/from LocalChain.

-

Fields§

§height: u32

The checkpoint’s height.

-
§original_hash: BlockHash

The original checkpoint’s block hash which cannot be replaced/removed.

-
§update_hash: Option<BlockHash>

The attempted update to the original_block hash.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
The lower-level source of this error, if any. Read more
👎Deprecated since 1.42.0: use the Display impl or to_string()
👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+}
Expand description

Represents a failure when trying to insert/remove a checkpoint to/from LocalChain.

+

Fields§

§height: u32

The checkpoint’s height.

+
§original_hash: BlockHash

The original checkpoint’s block hash which cannot be replaced/removed.

+
§update_hash: Option<BlockHash>

The attempted update to the original_block hash.

+

Trait Implementations§

source§

impl Clone for AlterCheckPointError

source§

fn clone(&self) -> AlterCheckPointError

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for AlterCheckPointError

source§

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

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

impl Display for AlterCheckPointError

source§

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

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

impl Error for AlterCheckPointError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl PartialEq for AlterCheckPointError

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for AlterCheckPointError

Auto Trait Implementations§

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> 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.

-
🔬This is a nightly-only experimental API. (provide_any)
Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CannotConnectError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CannotConnectError.html index fc02430e79..66220206df 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CannotConnectError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CannotConnectError.html @@ -1,12 +1,20 @@ -CannotConnectError in bdk_chain::local_chain - Rust
pub struct CannotConnectError {
+CannotConnectError in bdk_chain::local_chain - Rust

Struct bdk_chain::local_chain::CannotConnectError

source ·
pub struct CannotConnectError {
     pub try_include_height: u32,
-}
Expand description

Occurs when an update does not have a common checkpoint with the original chain.

-

Fields§

§try_include_height: u32

The suggested checkpoint to include to connect the two chains.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
The lower-level source of this error, if any. Read more
👎Deprecated since 1.42.0: use the Display impl or to_string()
👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+}
Expand description

Occurs when an update does not have a common checkpoint with the original chain.

+

Fields§

§try_include_height: u32

The suggested checkpoint to include to connect the two chains.

+

Trait Implementations§

source§

impl Clone for CannotConnectError

source§

fn clone(&self) -> CannotConnectError

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for CannotConnectError

source§

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

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

impl Display for CannotConnectError

source§

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

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

impl Error for CannotConnectError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl PartialEq for CannotConnectError

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for CannotConnectError

Auto Trait Implementations§

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> 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.

-
🔬This is a nightly-only experimental API. (provide_any)
Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPoint.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPoint.html index 36b2f99d2d..4d3c4b661f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPoint.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPoint.html @@ -1,48 +1,62 @@ -CheckPoint in bdk_chain::local_chain - Rust
pub struct CheckPoint(_);
Expand description

A LocalChain checkpoint is used to find the agreement point between two chains and as a +CheckPoint in bdk_chain::local_chain - Rust

Struct bdk_chain::local_chain::CheckPoint

source ·
pub struct CheckPoint(/* private fields */);
Expand description

A LocalChain checkpoint is used to find the agreement point between two chains and as a transaction anchor.

-

Each checkpoint contains the height and hash of a block (BlockId).

+

Each checkpoint contains the height and hash of a block (BlockId).

Internally, checkpoints are nodes of a reference-counted linked-list. This allows the caller to -cheaply clone a CheckPoint without copying the whole list and to view the entire chain -without holding a lock on LocalChain.

-

Implementations§

Construct a new base block at the front of a linked list.

-

Construct a checkpoint from a list of BlockIds in ascending height order.

-
Errors
+cheaply clone a CheckPoint without copying the whole list and to view the entire chain +without holding a lock on LocalChain.

+

Implementations§

source§

impl CheckPoint

source

pub fn new(block: BlockId) -> Self

Construct a new base block at the front of a linked list.

+
source

pub fn from_block_ids( + block_ids: impl IntoIterator<Item = BlockId> +) -> Result<Self, Option<Self>>

Construct a checkpoint from a list of BlockIds in ascending height order.

+
§Errors

This method will error if any of the follow occurs:

  • The blocks iterator is empty, in which case, the error will be None.
  • The blocks iterator is not in ascending height order.
  • -
  • The blocks iterator contains multiple BlockIds of the same height.
  • +
  • The blocks iterator contains multiple BlockIds of the same height.

The error type is the last successful checkpoint constructed (if any).

-

Construct a checkpoint from the given header and block height.

-

If header is of the genesis block, the checkpoint won’t have a prev node. Otherwise, +

source

pub fn from_header(header: &Header, height: u32) -> Self

Construct a checkpoint from the given header and block height.

+

If header is of the genesis block, the checkpoint won’t have a prev node. Otherwise, we return a checkpoint linked with the previous block.

-

Puts another checkpoint onto the linked list representing the blockchain.

+
source

pub fn push(self, block: BlockId) -> Result<Self, Self>

Puts another checkpoint onto the linked list representing the blockchain.

Returns an Err(self) if the block you are pushing on is not at a greater height that the one you are pushing on to.

-

Extends the checkpoint linked list by a iterator of block ids.

+
source

pub fn extend( + self, + blocks: impl IntoIterator<Item = BlockId> +) -> Result<Self, Self>

Extends the checkpoint linked list by a iterator of block ids.

Returns an Err(self) if there is block which does not have a greater height than the previous one.

-

Get the BlockId of the checkpoint.

-

Get the height of the checkpoint.

-

Get the block hash of the checkpoint.

-

Get the previous checkpoint in the chain

-

Iterate from this checkpoint in descending height.

-

Get checkpoint at height.

+
source

pub fn block_id(&self) -> BlockId

Get the BlockId of the checkpoint.

+
source

pub fn height(&self) -> u32

Get the height of the checkpoint.

+
source

pub fn hash(&self) -> BlockHash

Get the block hash of the checkpoint.

+
source

pub fn prev(&self) -> Option<CheckPoint>

Get the previous checkpoint in the chain

+
source

pub fn iter(&self) -> CheckPointIter ⓘ

Iterate from this checkpoint in descending height.

+
source

pub fn get(&self, height: u32) -> Option<Self>

Get checkpoint at height.

Returns None if checkpoint at height does not exist`.

-

Iterate checkpoints over a height range.

+
source

pub fn range<R>(&self, range: R) -> impl Iterator<Item = CheckPoint>
where + R: RangeBounds<u32>,

Iterate checkpoints over a height range.

Note that we always iterate checkpoints in reverse height order (iteration starts at tip height).

-

Inserts block_id at its height within the chain.

+
source

pub fn insert(self, block_id: BlockId) -> Self

Inserts block_id at its height within the chain.

The effect of insert depends on whether a height already exists. If it doesn’t the block_id we inserted and all pre-existing blocks higher than it will be re-inserted after it. If the height already existed and has a conflicting block hash then it will be purged along with all block followin it. The returned chain will have a tip of the block_id passed in. Of course, if the block_id was already present then this just returns self.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for CheckPoint

source§

fn clone(&self) -> CheckPoint

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for CheckPoint

source§

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

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

impl IntoIterator for CheckPoint

§

type Item = CheckPoint

The type of the elements being iterated over.
§

type IntoIter = CheckPointIter

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl PartialEq for CheckPoint

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPointIter.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPointIter.html index dc7148d982..5805e5f5a9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPointIter.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.CheckPointIter.html @@ -1,39 +1,202 @@ -CheckPointIter in bdk_chain::local_chain - Rust
pub struct CheckPointIter { /* private fields */ }
Expand description

Iterates over checkpoints backwards.

-

Trait Implementations§

The type of the elements being iterated over.
Advances the iterator and returns the next value. Read more
🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
Returns the bounds on the remaining length of the iterator. Read more
Consumes the iterator, counting the number of iterations and returning it. Read more
Consumes the iterator, returning the last element. Read more
🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
Returns the nth element of the iterator. Read more
Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
Takes two iterators and creates a new iterator over both in sequence. Read more
‘Zips up’ two iterators into a single iterator of pairs. Read more
🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
Takes a closure and creates an iterator which calls that closure on each -element. Read more
Calls a closure on each element of an iterator. Read more
Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
Creates an iterator that both filters and maps. Read more
Creates an iterator which gives the current iteration count as well as -the next value. Read more
Creates an iterator which can use the peek and peek_mut methods +CheckPointIter in bdk_chain::local_chain - Rust

Struct bdk_chain::local_chain::CheckPointIter

source ·
pub struct CheckPointIter { /* private fields */ }
Expand description

Iterates over checkpoints backwards.

+

Trait Implementations§

source§

impl Iterator for CheckPointIter

§

type Item = CheckPoint

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
where + Self: Sized, + Self::Item: Clone,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places a copy of separator between adjacent +items of the original iterator. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
Creates an iterator that skips elements based on a predicate. Read more
Creates an iterator that yields elements based on a predicate. Read more
Creates an iterator that both yields elements based on a predicate and maps. Read more
Creates an iterator that skips the first n elements. Read more
Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
An iterator adapter similar to fold that holds internal state and -produces a new iterator. Read more
Creates an iterator that works like map, but flattens nested structure. Read more
Creates an iterator which ends after the first None. Read more
Does something with each element of an iterator, passing the value on. Read more
Borrows an iterator, rather than consuming it. Read more
Transforms an iterator into a collection. Read more
🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
Consumes an iterator, creating two collections from it. Read more
🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
Folds every element into an accumulator by applying an operation, -returning the final result. Read more
Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
Tests if every element of the iterator matches a predicate. Read more
Tests if any element of the iterator matches a predicate. Read more
Searches for an element of an iterator that satisfies a predicate. Read more
Applies function to the elements of iterator and returns -the first non-none result. Read more
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
Searches for an element in an iterator, returning its index. Read more
Returns the element that gives the maximum value from the -specified function. Read more
Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
Returns the element that gives the minimum value from the -specified function. Read more
Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
Converts an iterator of pairs into a pair of containers. Read more
Creates an iterator which copies all of its elements. Read more
Creates an iterator which clones all of its elements. Read more
🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
Sums the elements of an iterator. Read more
Iterates over the entire iterator, multiplying all the elements Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
Lexicographically compares the elements of this Iterator with those -of another. Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
Determines if the elements of this Iterator are equal to those of -another. Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
Determines if the elements of this Iterator are unequal to those of -another. Read more
Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
1.29.0 · source§

fn flatten(self) -> Flatten<Self>
where + Self: Sized, + Self::Item: IntoIterator,

Creates an iterator that flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit +evaluation, returning a result without comparing the remaining elements. +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

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> 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.

-
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
Choose one element at random from the iterator. Read more
Choose one element at random from the iterator. Read more
Collects values at random from the iterator into a supplied buffer -until that buffer is filled. Read more
Collects amount values at random from the iterator into a vector. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for I
where + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<I> IteratorRandom for I
where + I: Iterator,

source§

fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
where + R: Rng + ?Sized,

Choose one element at random from the iterator. Read more
source§

fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
where + R: Rng + ?Sized,

Choose one element at random from the iterator. Read more
source§

fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
where + R: Rng + ?Sized,

Collects values at random from the iterator into a supplied buffer +until that buffer is filled. Read more
source§

fn choose_multiple<R>(self, rng: &mut R, amount: usize) -> Vec<Self::Item>
where + R: Rng + ?Sized,

Collects amount values at random from the iterator into a vector. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.LocalChain.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.LocalChain.html index 6e96085d25..9e958655e7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.LocalChain.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.LocalChain.html @@ -1,61 +1,97 @@ -LocalChain in bdk_chain::local_chain - Rust
pub struct LocalChain { /* private fields */ }
Expand description

This is a local implementation of ChainOracle.

-

Implementations§

Get the genesis hash.

-

Construct LocalChain from genesis hash.

-

Construct a LocalChain from an initial changeset.

-

Construct a LocalChain from a given checkpoint tip.

-

Constructs a LocalChain from a BTreeMap of height to [BlockHash].

-

The BTreeMap enforces the height order. However, the caller must ensure the blocks are +LocalChain in bdk_chain::local_chain - Rust

Struct bdk_chain::local_chain::LocalChain

source ·
pub struct LocalChain { /* private fields */ }
Expand description

This is a local implementation of ChainOracle.

+

Implementations§

source§

impl LocalChain

source

pub fn genesis_hash(&self) -> BlockHash

Get the genesis hash.

+
source

pub fn from_genesis_hash(hash: BlockHash) -> (Self, ChangeSet)

Construct LocalChain from genesis hash.

+
source

pub fn from_changeset(changeset: ChangeSet) -> Result<Self, MissingGenesisError>

Construct a LocalChain from an initial changeset.

+
source

pub fn from_tip(tip: CheckPoint) -> Result<Self, MissingGenesisError>

Construct a LocalChain from a given checkpoint tip.

+
source

pub fn from_blocks( + blocks: BTreeMap<u32, BlockHash> +) -> Result<Self, MissingGenesisError>

Constructs a LocalChain from a BTreeMap of height to [BlockHash].

+

The BTreeMap enforces the height order. However, the caller must ensure the blocks are all of the same chain.

-

Get the highest checkpoint.

-

Applies the given update to the chain.

-

The method returns ChangeSet on success. This represents the changes applied to self.

+
source

pub fn tip(&self) -> CheckPoint

Get the highest checkpoint.

+
source

pub fn apply_update( + &mut self, + update: CheckPoint +) -> Result<ChangeSet, CannotConnectError>

Applies the given update to the chain.

+

The method returns ChangeSet on success. This represents the changes applied to self.

There must be no ambiguity about which of the existing chain’s blocks are still valid and which are now invalid. That is, the new chain must implicitly connect to a definite block in the existing chain and invalidate the block after it (if it exists) by including a block at the same height but with a different hash to explicitly exclude it as a connection point.

-
Errors
+
§Errors

An error will occur if the update does not correctly connect with self.

-

Update the chain with a given [Header] at height which you claim is connected to a existing block in the chain.

+
source

pub fn apply_header_connected_to( + &mut self, + header: &Header, + height: u32, + connected_to: BlockId +) -> Result<ChangeSet, ApplyHeaderError>

Update the chain with a given [Header] at height which you claim is connected to a existing block in the chain.

This is useful when you have a block header that you want to record as part of the chain but don’t necessarily know that the prev_blockhash is in the chain.

-

This will usually insert two new BlockIds into the chain: the header’s block and the +

This will usually insert two new BlockIds into the chain: the header’s block and the header’s prev_blockhash block. connected_to must already be in the chain but is allowed to be prev_blockhash (in which case only one new block id will be inserted). -To be successful, connected_to must be chosen carefully so that LocalChain’s update +To be successful, connected_to must be chosen carefully so that LocalChain’s update rules are satisfied.

-
Errors
-

ApplyHeaderError::InconsistentBlocks occurs if the connected_to block and the +

§Errors
+

ApplyHeaderError::InconsistentBlocks occurs if the connected_to block and the [Header] is inconsistent. For example, if the connected_to block is the same height as header or prev_blockhash, but has a different block hash. Or if the connected_to height is greater than the header’s height.

-

ApplyHeaderError::CannotConnect occurs if the internal call to apply_update fails.

-

Update the chain with a given [Header] connecting it with the previous block.

-

This is a convenience method to call apply_header_connected_to with the connected_to +

ApplyHeaderError::CannotConnect occurs if the internal call to apply_update fails.

+
source

pub fn apply_header( + &mut self, + header: &Header, + height: u32 +) -> Result<ChangeSet, CannotConnectError>

Update the chain with a given [Header] connecting it with the previous block.

+

This is a convenience method to call apply_header_connected_to with the connected_to parameter being height-1:prev_blockhash. If there is no previous block (i.e. genesis), we use the current block as connected_to.

-

Apply the given changeset.

-

Insert a BlockId.

-
Errors
+
source

pub fn apply_changeset( + &mut self, + changeset: &ChangeSet +) -> Result<(), MissingGenesisError>

Apply the given changeset.

+
source

pub fn insert_block( + &mut self, + block_id: BlockId +) -> Result<ChangeSet, AlterCheckPointError>

Insert a BlockId.

+
§Errors

Replacing the block hash of an existing checkpoint will result in an error.

-

Removes blocks from (and inclusive of) the given block_id.

+
source

pub fn disconnect_from( + &mut self, + block_id: BlockId +) -> Result<ChangeSet, MissingGenesisError>

Removes blocks from (and inclusive of) the given block_id.

This will remove blocks with a height equal or greater than block_id, but only if block_id exists in the chain.

-
Errors
-

This will fail with MissingGenesisError if the caller attempts to disconnect from the +

§Errors
+

This will fail with MissingGenesisError if the caller attempts to disconnect from the genesis block.

-

Derives an initial ChangeSet, meaning that it can be applied to an empty chain to +

source

pub fn initial_changeset(&self) -> ChangeSet

Derives an initial ChangeSet, meaning that it can be applied to an empty chain to recover the current chain.

-

Iterate over checkpoints in descending height order.

-

Get checkpoint at given height (if it exists).

-

This is a shorthand for calling CheckPoint::get on the tip.

-

Iterate checkpoints over a height range.

+
source

pub fn iter_checkpoints(&self) -> CheckPointIter ⓘ

Iterate over checkpoints in descending height order.

+
source

pub fn get(&self, height: u32) -> Option<CheckPoint>

Get checkpoint at given height (if it exists).

+

This is a shorthand for calling CheckPoint::get on the tip.

+
source

pub fn range<R>(&self, range: R) -> impl Iterator<Item = CheckPoint>
where + R: RangeBounds<u32>,

Iterate checkpoints over a height range.

Note that we always iterate checkpoints in reverse height order (iteration starts at tip height).

-

This is a shorthand for calling CheckPoint::range on the tip.

-

Trait Implementations§

Error type.
Determines whether block of BlockId exists as an ancestor of chain_tip. Read more
Get the best chain’s chain tip.
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

This is a shorthand for calling CheckPoint::range on the tip.

+

Trait Implementations§

source§

impl ChainOracle for LocalChain

§

type Error = Infallible

Error type.
source§

fn is_block_in_chain( + &self, + block: BlockId, + chain_tip: BlockId +) -> Result<Option<bool>, Self::Error>

Determines whether block of BlockId exists as an ancestor of chain_tip. Read more
source§

fn get_chain_tip(&self) -> Result<BlockId, Self::Error>

Get the best chain’s chain tip.
source§

impl Clone for LocalChain

source§

fn clone(&self) -> LocalChain

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for LocalChain

source§

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

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

impl PartialEq for LocalChain

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for LocalChain

Auto Trait Implementations§

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.MissingGenesisError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.MissingGenesisError.html index 89e850fa1e..692c793941 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.MissingGenesisError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/struct.MissingGenesisError.html @@ -1,9 +1,17 @@ -MissingGenesisError in bdk_chain::local_chain - Rust
pub struct MissingGenesisError;
Expand description

An error which occurs when a LocalChain is constructed without a genesis checkpoint.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
The lower-level source of this error, if any. Read more
👎Deprecated since 1.42.0: use the Display impl or to_string()
👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+MissingGenesisError in bdk_chain::local_chain - Rust

Struct bdk_chain::local_chain::MissingGenesisError

source ·
pub struct MissingGenesisError;
Expand description

An error which occurs when a LocalChain is constructed without a genesis checkpoint.

+

Trait Implementations§

source§

impl Clone for MissingGenesisError

source§

fn clone(&self) -> MissingGenesisError

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for MissingGenesisError

source§

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

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

impl Display for MissingGenesisError

source§

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

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

impl Error for MissingGenesisError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl PartialEq for MissingGenesisError

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl StructuralPartialEq for MissingGenesisError

Auto Trait Implementations§

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> 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.

-
🔬This is a nightly-only experimental API. (provide_any)
Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/type.ChangeSet.html index 882486d6ae..22d3310fc6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/local_chain/type.ChangeSet.html @@ -1,4 +1,4 @@ -ChangeSet in bdk_chain::local_chain - Rust

Type Definition bdk_chain::local_chain::ChangeSet

source ·
pub type ChangeSet = BTreeMap<u32, Option<BlockHash>>;
Expand description

The ChangeSet represents changes to LocalChain.

-

The key represents the block height, and the value either represents added a new CheckPoint -(if Some), or removing a CheckPoint (if None).

-
\ No newline at end of file +ChangeSet in bdk_chain::local_chain - Rust

Type Alias bdk_chain::local_chain::ChangeSet

source ·
pub type ChangeSet = BTreeMap<u32, Option<BlockHash>>;
Expand description

The ChangeSet represents changes to LocalChain.

+

The key represents the block height, and the value either represents added a new CheckPoint +(if Some), or removing a CheckPoint (if None).

+

Aliased Type§

struct ChangeSet { /* private fields */ }
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js index 196f98791e..a68858aefc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["BIP32_MAX_INDEX","Maximum BIP32 derivation index."],["COINBASE_MATURITY","How many confirmations are needed f or a coinbase output to be spent."]],"enum":[["ChainPosition","Represents the observed position of some chain data."],["ConfirmationTime","Block height and timestamp at which a transaction is confirmed."]],"externcrate":[["serde",""]],"mod":[["indexed_tx_graph","Contains the [`IndexedTxGraph`] and associated types. Refer to the [`IndexedTxGraph`] documentation for more."],["keychain","Module for keychain related structures."],["local_chain","The [`LocalChain`] is a local implementation of [`ChainOracle`]."],["spk_client","Helper types for spk-based blockchain clients."],["tx_graph","Module for structures that store and traverse transactions."]],"struct":[["BlockId","A reference to a block in the canonical chain."],["ConfirmationHeightAnchor","An [`Anchor`] implementation that also records the exact confirmation height of the transaction."],["ConfirmationTimeHeightAnchor","An [`Anchor`] implementation that also records the exact confirmation time and height of the transaction."],["DescriptorId","Represents the ID of a descriptor, defined as the sha256 hash of the descriptor string, checksum excluded."],["FullTxOut","A `TxOut` with as much data as we can retrieve about it"],["SpkIterator","An iterator for derived script pubkeys."],["SpkTxOutIndex","An index storing `TxOut`s that have a script pubkey that matches those in a list."]],"trait":[["Anchor","Trait that “anchors” blockchain data to a specific block of height and hash."],["AnchorFromBlockPosition","An [`Anchor`] that can be constructed from a given block, block height and transaction position within the block."],["Append","Trait that makes an object appendable."],["ChainOracle","Represents a service that tracks the blockchain."],["DescriptorExt","A trait to extend the functionality of a miniscript descriptor."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["BIP32_MAX_INDEX","COINBASE_MATURITY"],"enum":["ChainPosition","ConfirmationTime"],"externcrate":["serde"],"mod":["indexed_tx_graph","keychain","local_chain","spk_client","tx_graph"],"struct":["BlockId","ConfirmationHeightAnchor","ConfirmationTimeHeightAnchor","DescriptorId","FullTxOut","SpkIterator","SpkTxOutIndex"],"trait":["Anchor","AnchorFromBlockPosition","Append","ChainOracle","DescriptorExt"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/index.html index 047b55c977..8ab9a20b4a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/index.html @@ -1,2 +1,2 @@ -bdk_chain::spk_client - Rust

Module bdk_chain::spk_client

source ·
Expand description

Helper types for spk-based blockchain clients.

-

Structs

Data required to perform a spk-based blockchain client full scan.
Data returned from a spk-based blockchain client full scan.
Data required to perform a spk-based blockchain client sync.
Data returned from a spk-based blockchain client sync.

Type Definitions

A cache of Arc-wrapped full transactions, identified by their [Txid]s.
\ No newline at end of file +bdk_chain::spk_client - Rust

Module bdk_chain::spk_client

source ·
Expand description

Helper types for spk-based blockchain clients.

+

Structs§

  • Data required to perform a spk-based blockchain client full scan.
  • Data returned from a spk-based blockchain client full scan.
  • Data required to perform a spk-based blockchain client sync.
  • Data returned from a spk-based blockchain client sync.

Type Aliases§

  • A cache of Arc-wrapped full transactions, identified by their [Txid]s.
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/sidebar-items.js index 3780c7703f..d9de5da8e1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["FullScanRequest","Data required to perform a spk-based blockchain client full scan."],["FullScanResult","Data returned from a spk-based blockchain client full scan."],["SyncRequest","Data required to perform a spk-based blockchain client sync."],["SyncResult","Data returned from a spk-based blockchain client sync."]],"type":[["TxCache","A cache of [`Arc`]-wrapped full transactions, identified by their [`Txid`]s."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["FullScanRequest","FullScanResult","SyncRequest","SyncResult"],"type":["TxCache"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.FullScanRequest.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.FullScanRequest.html index 96f2e1511b..0b266b2f78 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.FullScanRequest.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.FullScanRequest.html @@ -1,37 +1,67 @@ -FullScanRequest in bdk_chain::spk_client - Rust
pub struct FullScanRequest<K> {
+FullScanRequest in bdk_chain::spk_client - Rust

Struct bdk_chain::spk_client::FullScanRequest

source ·
pub struct FullScanRequest<K> {
     pub chain_tip: CheckPoint,
     pub tx_cache: TxCache,
     pub spks_by_keychain: BTreeMap<K, Box<dyn Iterator<Item = (u32, ScriptBuf)> + Send>>,
-}
Expand description

Data required to perform a spk-based blockchain client full scan.

+}
Expand description

Data required to perform a spk-based blockchain client full scan.

A client full scan iterates through all the scripts for the given keychains, fetching relevant data until some stop gap number of scripts is found that have no data. This operation is generally only used when importing or restoring previously used keychains in which the list of -used scripts is not known. The full scan process also updates the chain from the given CheckPoint.

-

Fields§

§chain_tip: CheckPoint

A checkpoint for the current LocalChain::tip. +used scripts is not known. The full scan process also updates the chain from the given CheckPoint.

+

Fields§

§chain_tip: CheckPoint

A checkpoint for the current LocalChain::tip. The full scan process will return a new chain update that extends this tip.

-
§tx_cache: TxCache

Cache of full transactions, so the chain-source can avoid re-fetching.

-
§spks_by_keychain: BTreeMap<K, Box<dyn Iterator<Item = (u32, ScriptBuf)> + Send>>

Iterators of script pubkeys indexed by the keychain index.

-

Implementations§

Construct a new FullScanRequest from a given chain_tip.

-

Add to the TxCache held by the request.

-

This consumes the SyncRequest and returns the updated one.

-

Add all transactions from TxGraph into the TxCache.

-

This consumes the SyncRequest and returns the updated one.

-

Construct a new FullScanRequest from a given chain_tip and index.

+
§tx_cache: TxCache

Cache of full transactions, so the chain-source can avoid re-fetching.

+
§spks_by_keychain: BTreeMap<K, Box<dyn Iterator<Item = (u32, ScriptBuf)> + Send>>

Iterators of script pubkeys indexed by the keychain index.

+

Implementations§

source§

impl<K: Ord + Clone> FullScanRequest<K>

source

pub fn from_chain_tip(chain_tip: CheckPoint) -> Self

Construct a new FullScanRequest from a given chain_tip.

+
source

pub fn cache_txs<T>(self, full_txs: impl IntoIterator<Item = (Txid, T)>) -> Self
where + T: Into<Arc<Transaction>>,

Add to the TxCache held by the request.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn cache_graph_txs<A>(self, graph: &TxGraph<A>) -> Self

Add all transactions from TxGraph into the TxCache.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn from_keychain_txout_index( + chain_tip: CheckPoint, + index: &KeychainTxOutIndex<K> +) -> Self
where + K: Debug,

Construct a new FullScanRequest from a given chain_tip and index.

Unbounded script pubkey iterators for each keychain (K) are extracted using -KeychainTxOutIndex::all_unbounded_spk_iters and is used to populate the -FullScanRequest.

-

Set the [Script]s for a given keychain.

-

This consumes the FullScanRequest and returns the updated one.

-

Chain on additional [Script]s that will be synced against.

-

This consumes the FullScanRequest and returns the updated one.

-

Add a closure that will be called for every [Script] previously added to any keychain in +KeychainTxOutIndex::all_unbounded_spk_iters and is used to populate the +FullScanRequest.

+
source

pub fn set_spks_for_keychain( + self, + keychain: K, + spks: impl IntoIterator<IntoIter = impl Iterator<Item = (u32, ScriptBuf)> + Send + 'static> +) -> Self

Set the [Script]s for a given keychain.

+

This consumes the FullScanRequest and returns the updated one.

+
source

pub fn chain_spks_for_keychain( + self, + keychain: K, + spks: impl IntoIterator<IntoIter = impl Iterator<Item = (u32, ScriptBuf)> + Send + 'static> +) -> Self

Chain on additional [Script]s that will be synced against.

+

This consumes the FullScanRequest and returns the updated one.

+
source

pub fn inspect_spks_for_all_keychains( + self, + inspect: impl FnMut(K, u32, &Script) + Send + Sync + Clone + 'static +) -> Self
where + K: Send + 'static,

Add a closure that will be called for every [Script] previously added to any keychain in this request.

-

This consumes the SyncRequest and returns the updated one.

-

Add a closure that will be called for every [Script] previously added to a given +

This consumes the SyncRequest and returns the updated one.

+
source

pub fn inspect_spks_for_keychain( + self, + keychain: K, + inspect: impl FnMut(u32, &Script) + Send + Sync + 'static +) -> Self
where + K: Send + 'static,

Add a closure that will be called for every [Script] previously added to a given keychain in this request.

-

This consumes the SyncRequest and returns the updated one.

-

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

This consumes the SyncRequest and returns the updated one.

+

Auto Trait Implementations§

§

impl<K> Freeze for FullScanRequest<K>

§

impl<K> !RefUnwindSafe for FullScanRequest<K>

§

impl<K> Send for FullScanRequest<K>
where + K: Send,

§

impl<K> !Sync for FullScanRequest<K>

§

impl<K> Unpin for FullScanRequest<K>

§

impl<K> !UnwindSafe for FullScanRequest<K>

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> 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.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.FullScanResult.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.FullScanResult.html index 7da74a3809..20e75fdb53 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.FullScanResult.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.FullScanResult.html @@ -1,14 +1,29 @@ -FullScanResult in bdk_chain::spk_client - Rust
pub struct FullScanResult<K, A = ConfirmationTimeHeightAnchor> {
+FullScanResult in bdk_chain::spk_client - Rust

Struct bdk_chain::spk_client::FullScanResult

source ·
pub struct FullScanResult<K, A = ConfirmationTimeHeightAnchor> {
     pub graph_update: TxGraph<A>,
     pub chain_update: CheckPoint,
     pub last_active_indices: BTreeMap<K, u32>,
-}
Expand description

Data returned from a spk-based blockchain client full scan.

-

See also FullScanRequest.

-

Fields§

§graph_update: TxGraph<A>

The update to apply to the receiving LocalChain.

-
§chain_update: CheckPoint

The update to apply to the receiving TxGraph.

-
§last_active_indices: BTreeMap<K, u32>

Last active indices for the corresponding keychains (K).

-

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+}
Expand description

Data returned from a spk-based blockchain client full scan.

+

See also FullScanRequest.

+

Fields§

§graph_update: TxGraph<A>

The update to apply to the receiving LocalChain.

+
§chain_update: CheckPoint

The update to apply to the receiving TxGraph.

+
§last_active_indices: BTreeMap<K, u32>

Last active indices for the corresponding keychains (K).

+

Auto Trait Implementations§

§

impl<K, A> Freeze for FullScanResult<K, A>

§

impl<K, A> RefUnwindSafe for FullScanResult<K, A>
where + K: RefUnwindSafe, + A: RefUnwindSafe,

§

impl<K, A> Send for FullScanResult<K, A>
where + K: Send, + A: Send,

§

impl<K, A> Sync for FullScanResult<K, A>
where + K: Sync, + A: Sync,

§

impl<K, A> Unpin for FullScanResult<K, A>

§

impl<K, A> UnwindSafe for FullScanResult<K, A>
where + K: RefUnwindSafe, + A: RefUnwindSafe,

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> 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.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.SyncRequest.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.SyncRequest.html index f57fcdcfcf..a7247bf2d6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.SyncRequest.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.SyncRequest.html @@ -1,45 +1,84 @@ -SyncRequest in bdk_chain::spk_client - Rust
pub struct SyncRequest {
+SyncRequest in bdk_chain::spk_client - Rust

Struct bdk_chain::spk_client::SyncRequest

source ·
pub struct SyncRequest {
     pub chain_tip: CheckPoint,
     pub tx_cache: TxCache,
     pub spks: Box<dyn ExactSizeIterator<Item = ScriptBuf> + Send>,
     pub txids: Box<dyn ExactSizeIterator<Item = Txid> + Send>,
     pub outpoints: Box<dyn ExactSizeIterator<Item = OutPoint> + Send>,
-}
Expand description

Data required to perform a spk-based blockchain client sync.

+}
Expand description

Data required to perform a spk-based blockchain client sync.

A client sync fetches relevant chain data for a known list of scripts, transaction ids and -outpoints. The sync process also updates the chain from the given CheckPoint.

-

Fields§

§chain_tip: CheckPoint

A checkpoint for the current chain LocalChain::tip. +outpoints. The sync process also updates the chain from the given CheckPoint.

+

Fields§

§chain_tip: CheckPoint

A checkpoint for the current chain LocalChain::tip. The sync process will return a new chain update that extends this tip.

-
§tx_cache: TxCache

Cache of full transactions, so the chain-source can avoid re-fetching.

-
§spks: Box<dyn ExactSizeIterator<Item = ScriptBuf> + Send>

Transactions that spend from or to these indexed script pubkeys.

-
§txids: Box<dyn ExactSizeIterator<Item = Txid> + Send>

Transactions with these txids.

-
§outpoints: Box<dyn ExactSizeIterator<Item = OutPoint> + Send>

Transactions with these outpoints or spent from these outpoints.

-

Implementations§

Construct a new SyncRequest from a given cp tip.

-

Add to the TxCache held by the request.

-

This consumes the SyncRequest and returns the updated one.

-

Add all transactions from TxGraph into the TxCache.

-

This consumes the SyncRequest and returns the updated one.

-

Set the [Script]s that will be synced against.

-

This consumes the SyncRequest and returns the updated one.

-

Set the [Txid]s that will be synced against.

-

This consumes the SyncRequest and returns the updated one.

-

Set the [OutPoint]s that will be synced against.

-

This consumes the SyncRequest and returns the updated one.

-

Chain on additional [Script]s that will be synced against.

-

This consumes the SyncRequest and returns the updated one.

-

Chain on additional [Txid]s that will be synced against.

-

This consumes the SyncRequest and returns the updated one.

-

Chain on additional [OutPoint]s that will be synced against.

-

This consumes the SyncRequest and returns the updated one.

-

Add a closure that will be called for [Script]s previously added to this request.

-

This consumes the SyncRequest and returns the updated one.

-

Add a closure that will be called for [Txid]s previously added to this request.

-

This consumes the SyncRequest and returns the updated one.

-

Add a closure that will be called for [OutPoint]s previously added to this request.

-

This consumes the SyncRequest and returns the updated one.

-

Populate the request with revealed script pubkeys from index with the given spk_range.

-

This consumes the SyncRequest and returns the updated one.

-

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+
§tx_cache: TxCache

Cache of full transactions, so the chain-source can avoid re-fetching.

+
§spks: Box<dyn ExactSizeIterator<Item = ScriptBuf> + Send>

Transactions that spend from or to these indexed script pubkeys.

+
§txids: Box<dyn ExactSizeIterator<Item = Txid> + Send>

Transactions with these txids.

+
§outpoints: Box<dyn ExactSizeIterator<Item = OutPoint> + Send>

Transactions with these outpoints or spent from these outpoints.

+

Implementations§

source§

impl SyncRequest

source

pub fn from_chain_tip(cp: CheckPoint) -> Self

Construct a new SyncRequest from a given cp tip.

+
source

pub fn cache_txs<T>(self, full_txs: impl IntoIterator<Item = (Txid, T)>) -> Self
where + T: Into<Arc<Transaction>>,

Add to the TxCache held by the request.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn cache_graph_txs<A>(self, graph: &TxGraph<A>) -> Self

Add all transactions from TxGraph into the TxCache.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn set_spks( + self, + spks: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = ScriptBuf> + Send + 'static> +) -> Self

Set the [Script]s that will be synced against.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn set_txids( + self, + txids: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = Txid> + Send + 'static> +) -> Self

Set the [Txid]s that will be synced against.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn set_outpoints( + self, + outpoints: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = OutPoint> + Send + 'static> +) -> Self

Set the [OutPoint]s that will be synced against.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn chain_spks( + self, + spks: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = ScriptBuf> + Send + 'static, Item = ScriptBuf> +) -> Self

Chain on additional [Script]s that will be synced against.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn chain_txids( + self, + txids: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = Txid> + Send + 'static, Item = Txid> +) -> Self

Chain on additional [Txid]s that will be synced against.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn chain_outpoints( + self, + outpoints: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = OutPoint> + Send + 'static, Item = OutPoint> +) -> Self

Chain on additional [OutPoint]s that will be synced against.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn inspect_spks( + self, + inspect: impl FnMut(&Script) + Send + Sync + 'static +) -> Self

Add a closure that will be called for [Script]s previously added to this request.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn inspect_txids( + self, + inspect: impl FnMut(&Txid) + Send + Sync + 'static +) -> Self

Add a closure that will be called for [Txid]s previously added to this request.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn inspect_outpoints( + self, + inspect: impl FnMut(&OutPoint) + Send + Sync + 'static +) -> Self

Add a closure that will be called for [OutPoint]s previously added to this request.

+

This consumes the SyncRequest and returns the updated one.

+
source

pub fn populate_with_revealed_spks<K: Clone + Ord + Debug + Send + Sync>( + self, + index: &KeychainTxOutIndex<K>, + spk_range: impl RangeBounds<K> +) -> Self

Populate the request with revealed script pubkeys from index with the given spk_range.

+

This consumes the SyncRequest and returns the updated one.

+

Auto Trait Implementations§

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> 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.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.SyncResult.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.SyncResult.html index 8bbe85bb56..b14a19b58f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.SyncResult.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/struct.SyncResult.html @@ -1,12 +1,23 @@ -SyncResult in bdk_chain::spk_client - Rust
pub struct SyncResult<A = ConfirmationTimeHeightAnchor> {
+SyncResult in bdk_chain::spk_client - Rust

Struct bdk_chain::spk_client::SyncResult

source ·
pub struct SyncResult<A = ConfirmationTimeHeightAnchor> {
     pub graph_update: TxGraph<A>,
     pub chain_update: CheckPoint,
-}
Expand description

Data returned from a spk-based blockchain client sync.

-

See also SyncRequest.

-

Fields§

§graph_update: TxGraph<A>

The update to apply to the receiving TxGraph.

-
§chain_update: CheckPoint

The update to apply to the receiving LocalChain.

-

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+}
Expand description

Data returned from a spk-based blockchain client sync.

+

See also SyncRequest.

+

Fields§

§graph_update: TxGraph<A>

The update to apply to the receiving TxGraph.

+
§chain_update: CheckPoint

The update to apply to the receiving LocalChain.

+

Auto Trait Implementations§

§

impl<A> Freeze for SyncResult<A>

§

impl<A> RefUnwindSafe for SyncResult<A>
where + A: RefUnwindSafe,

§

impl<A> Send for SyncResult<A>
where + A: Send,

§

impl<A> Sync for SyncResult<A>
where + A: Sync,

§

impl<A> Unpin for SyncResult<A>

§

impl<A> UnwindSafe for SyncResult<A>
where + A: RefUnwindSafe,

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> 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.

-
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/type.TxCache.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/type.TxCache.html index 48c25f9a10..3a6165b6b6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/type.TxCache.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/spk_client/type.TxCache.html @@ -1,3 +1,3 @@ -TxCache in bdk_chain::spk_client - Rust

Type Definition bdk_chain::spk_client::TxCache

source ·
pub type TxCache = HashMap<Txid, Arc<Transaction>>;
Expand description

A cache of Arc-wrapped full transactions, identified by their [Txid]s.

+TxCache in bdk_chain::spk_client - Rust

Type Alias bdk_chain::spk_client::TxCache

source ·
pub type TxCache = HashMap<Txid, Arc<Transaction>>;
Expand description

A cache of Arc-wrapped full transactions, identified by their [Txid]s.

This is used by the chain-source to avoid re-fetching full transactions.

-
\ No newline at end of file +

Aliased Type§

struct TxCache { /* private fields */ }
\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.BlockId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.BlockId.html index e4af0404ce..680682db34 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.BlockId.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.BlockId.html @@ -1,17 +1,37 @@ -BlockId in bdk_chain - Rust

Struct bdk_chain::BlockId

source ·
pub struct BlockId {
+BlockId in bdk_chain - Rust

Struct bdk_chain::BlockId

source ·
pub struct BlockId {
     pub height: u32,
     pub hash: BlockHash,
-}
Expand description

A reference to a block in the canonical chain.

-

BlockId implements Anchor. When a transaction is anchored to BlockId, the confirmation +}

Expand description

A reference to a block in the canonical chain.

+

BlockId implements Anchor. When a transaction is anchored to BlockId, the confirmation block and anchor block are the same block.

-

Fields§

§height: u32

The height of the block.

-
§hash: BlockHash

The hash of the block.

-

Trait Implementations§

Returns the BlockId that the associated blockchain data is “anchored” in.
Get the upper bound of the chain data’s confirmation height. Read more
Construct the anchor from a given block, block height and tx_pos within the block.
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
Converts to this type from the input type.
Converts to this type from the input type.
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Fields§

§height: u32

The height of the block.

+
§hash: BlockHash

The hash of the block.

+

Trait Implementations§

source§

impl Anchor for BlockId

source§

fn anchor_block(&self) -> Self

Returns the BlockId that the associated blockchain data is “anchored” in.
source§

fn confirmation_height_upper_bound(&self) -> u32

Get the upper bound of the chain data’s confirmation height. Read more
source§

impl AnchorFromBlockPosition for BlockId

source§

fn from_block_position( + _block: &Block, + block_id: BlockId, + _tx_pos: usize +) -> Self

Construct the anchor from a given block, block height and tx_pos within the block.
source§

impl Clone for BlockId

source§

fn clone(&self) -> BlockId

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for BlockId

source§

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

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

impl Default for BlockId

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for BlockId

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<(&u32, &BlockHash)> for BlockId

source§

fn from((height, hash): (&u32, &BlockHash)) -> Self

Converts to this type from the input type.
source§

impl From<(u32, BlockHash)> for BlockId

source§

fn from((height, hash): (u32, BlockHash)) -> Self

Converts to this type from the input type.
source§

impl From<BlockId> for (u32, BlockHash)

source§

fn from(block_id: BlockId) -> Self

Converts to this type from the input type.
source§

impl Hash for BlockId

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for BlockId

source§

fn cmp(&self, other: &BlockId) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for BlockId

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for BlockId

source§

fn partial_cmp(&self, other: &BlockId) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Serialize for BlockId

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BlockId

source§

impl Eq for BlockId

source§

impl StructuralPartialEq for BlockId

Auto Trait Implementations§

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationHeightAnchor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationHeightAnchor.html index e07857cdf3..f3dad63b24 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationHeightAnchor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationHeightAnchor.html @@ -1,18 +1,38 @@ -ConfirmationHeightAnchor in bdk_chain - Rust
pub struct ConfirmationHeightAnchor {
+ConfirmationHeightAnchor in bdk_chain - Rust

Struct bdk_chain::ConfirmationHeightAnchor

source ·
pub struct ConfirmationHeightAnchor {
     pub confirmation_height: u32,
     pub anchor_block: BlockId,
-}
Expand description

An Anchor implementation that also records the exact confirmation height of the transaction.

+}
Expand description

An Anchor implementation that also records the exact confirmation height of the transaction.

Note that the confirmation block and the anchor block can be different here.

-

Refer to Anchor for more details.

-

Fields§

§confirmation_height: u32

The exact confirmation height of the transaction.

+

Refer to Anchor for more details.

+

Fields§

§confirmation_height: u32

The exact confirmation height of the transaction.

It is assumed that this value is never larger than the height of the anchor block.

-
§anchor_block: BlockId

The anchor block.

-

Trait Implementations§

Returns the BlockId that the associated blockchain data is “anchored” in.
Get the upper bound of the chain data’s confirmation height. Read more
Construct the anchor from a given block, block height and tx_pos within the block.
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+
§anchor_block: BlockId

The anchor block.

+

Trait Implementations§

source§

impl Anchor for ConfirmationHeightAnchor

source§

fn anchor_block(&self) -> BlockId

Returns the BlockId that the associated blockchain data is “anchored” in.
source§

fn confirmation_height_upper_bound(&self) -> u32

Get the upper bound of the chain data’s confirmation height. Read more
source§

impl AnchorFromBlockPosition for ConfirmationHeightAnchor

source§

fn from_block_position( + _block: &Block, + block_id: BlockId, + _tx_pos: usize +) -> Self

Construct the anchor from a given block, block height and tx_pos within the block.
source§

impl Clone for ConfirmationHeightAnchor

source§

fn clone(&self) -> ConfirmationHeightAnchor

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for ConfirmationHeightAnchor

source§

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

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

impl Default for ConfirmationHeightAnchor

source§

fn default() -> ConfirmationHeightAnchor

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for ConfirmationHeightAnchor

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for ConfirmationHeightAnchor

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for ConfirmationHeightAnchor

source§

fn cmp(&self, other: &ConfirmationHeightAnchor) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for ConfirmationHeightAnchor

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for ConfirmationHeightAnchor

source§

fn partial_cmp(&self, other: &ConfirmationHeightAnchor) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Serialize for ConfirmationHeightAnchor

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for ConfirmationHeightAnchor

source§

impl Eq for ConfirmationHeightAnchor

source§

impl StructuralPartialEq for ConfirmationHeightAnchor

Auto Trait Implementations§

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationTimeHeightAnchor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationTimeHeightAnchor.html index 0776921e97..6e7eb41420 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationTimeHeightAnchor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.ConfirmationTimeHeightAnchor.html @@ -1,20 +1,36 @@ -ConfirmationTimeHeightAnchor in bdk_chain - Rust
pub struct ConfirmationTimeHeightAnchor {
+ConfirmationTimeHeightAnchor in bdk_chain - Rust

Struct bdk_chain::ConfirmationTimeHeightAnchor

source ·
pub struct ConfirmationTimeHeightAnchor {
     pub confirmation_height: u32,
     pub confirmation_time: u64,
     pub anchor_block: BlockId,
-}
Expand description

An Anchor implementation that also records the exact confirmation time and height of the +}

Expand description

An Anchor implementation that also records the exact confirmation time and height of the transaction.

Note that the confirmation block and the anchor block can be different here.

-

Refer to Anchor for more details.

-

Fields§

§confirmation_height: u32

The confirmation height of the transaction being anchored.

-
§confirmation_time: u64

The confirmation time of the transaction being anchored.

-
§anchor_block: BlockId

The anchor block.

-

Trait Implementations§

Returns the BlockId that the associated blockchain data is “anchored” in.
Get the upper bound of the chain data’s confirmation height. Read more
Construct the anchor from a given block, block height and tx_pos within the block.
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Refer to Anchor for more details.

+

Fields§

§confirmation_height: u32

The confirmation height of the transaction being anchored.

+
§confirmation_time: u64

The confirmation time of the transaction being anchored.

+
§anchor_block: BlockId

The anchor block.

+

Trait Implementations§

source§

impl Anchor for ConfirmationTimeHeightAnchor

source§

fn anchor_block(&self) -> BlockId

Returns the BlockId that the associated blockchain data is “anchored” in.
source§

fn confirmation_height_upper_bound(&self) -> u32

Get the upper bound of the chain data’s confirmation height. Read more
source§

impl AnchorFromBlockPosition for ConfirmationTimeHeightAnchor

source§

fn from_block_position(block: &Block, block_id: BlockId, _tx_pos: usize) -> Self

Construct the anchor from a given block, block height and tx_pos within the block.
source§

impl Clone for ConfirmationTimeHeightAnchor

source§

fn clone(&self) -> ConfirmationTimeHeightAnchor

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for ConfirmationTimeHeightAnchor

source§

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

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

impl Default for ConfirmationTimeHeightAnchor

source§

fn default() -> ConfirmationTimeHeightAnchor

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for ConfirmationTimeHeightAnchor

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for ConfirmationTimeHeightAnchor

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for ConfirmationTimeHeightAnchor

source§

fn cmp(&self, other: &ConfirmationTimeHeightAnchor) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for ConfirmationTimeHeightAnchor

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for ConfirmationTimeHeightAnchor

source§

fn partial_cmp(&self, other: &ConfirmationTimeHeightAnchor) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl Serialize for ConfirmationTimeHeightAnchor

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for ConfirmationTimeHeightAnchor

source§

impl Eq for ConfirmationTimeHeightAnchor

source§

impl StructuralPartialEq for ConfirmationTimeHeightAnchor

Auto Trait Implementations§

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html index 30a084492a..ecf770a3c2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.DescriptorId.html @@ -1,21 +1,41 @@ -DescriptorId in bdk_chain - Rust

Struct bdk_chain::DescriptorId

source ·
pub struct DescriptorId(pub Hash);
Expand description

Represents the ID of a descriptor, defined as the sha256 hash of +DescriptorId in bdk_chain - Rust

Struct bdk_chain::DescriptorId

source ·
pub struct DescriptorId(pub Hash);
Expand description

Represents the ID of a descriptor, defined as the sha256 hash of the descriptor string, checksum excluded.

This is useful for having a fixed-length unique representation of a descriptor, in particular, we use it to persist application state changes related to the descriptor without having to re-write the whole descriptor each time.

-

Tuple Fields§

§0: Hash

Implementations§

Creates this wrapper type from the inner hash type.

-

Returns the inner hash (sha256, sh256d etc.).

-

Returns a reference to the inner hash (sha256, sh256d etc.).

-

Trait Implementations§

Converts this type into a shared reference of the (usually inferred) input type.
Converts this type into a shared reference of the (usually inferred) input type.
Immutably borrows from an owned value. Read more
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Deserialize this value from the given Serde deserializer. Read more
Formats the value using the given formatter. Read more
Converts to this type from the input type.
Converts to this type from the input type.
The associated error which can be returned from parsing.
Parses a string s to return a value of this type. Read more
Feeds this value into the given Hasher. Read more
Feeds a slice of this type into the given Hasher. Read more
A hashing engine which bytes can be serialized into. It is expected +

Tuple Fields§

§0: Hash

Implementations§

source§

impl DescriptorId

source

pub fn from_raw_hash(inner: Hash) -> DescriptorId

Creates this wrapper type from the inner hash type.

+
source

pub fn to_raw_hash(self) -> Hash

Returns the inner hash (sha256, sh256d etc.).

+
source

pub fn as_raw_hash(&self) -> &Hash

Returns a reference to the inner hash (sha256, sh256d etc.).

+

Trait Implementations§

source§

impl AsRef<[u8]> for DescriptorId

source§

fn as_ref(&self) -> &[u8] ⓘ

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl AsRef<[u8; 32]> for DescriptorId

source§

fn as_ref(&self) -> &[u8; 32]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Borrow<[u8]> for DescriptorId

source§

fn borrow(&self) -> &[u8] ⓘ

Immutably borrows from an owned value. Read more
source§

impl Clone for DescriptorId

source§

fn clone(&self) -> DescriptorId

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for DescriptorId

source§

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

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

impl<'de> Deserialize<'de> for DescriptorId

source§

fn deserialize<D: Deserializer<'de>>(d: D) -> Result<DescriptorId, D::Error>

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for DescriptorId

source§

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

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

impl From<DescriptorId> for Hash

source§

fn from(hashtype: DescriptorId) -> Hash

Converts to this type from the input type.
source§

impl From<Hash> for DescriptorId

source§

fn from(inner: Hash) -> DescriptorId

Converts to this type from the input type.
source§

impl FromStr for DescriptorId

§

type Err = HexToArrayError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<DescriptorId, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl Hash for DescriptorId

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Hash for DescriptorId

§

type Engine = <Hash as Hash>::Engine

A hashing engine which bytes can be serialized into. It is expected to implement the io::Write trait, and to never return errors under -any conditions. Read more
The byte array that represents the hash internally.
Length of the hash, in bytes.
Flag indicating whether user-visible serializations of this hash +any conditions.
§

type Bytes = <Hash as Hash>::Bytes

The byte array that represents the hash internally.
source§

const LEN: usize = 32usize

Length of the hash, in bytes.
source§

const DISPLAY_BACKWARD: bool = false

Flag indicating whether user-visible serializations of this hash should be backward. For some reason Satoshi decided this should be -true for Sha256dHash, so here we are. Read more
Constructs a new engine.
Produces a hash from the current state of a given engine.
Copies a byte slice into a hash object.
Constructs a hash from the underlying byte array.
Returns the underlying byte array.
Returns a reference to the underlying byte array.
Returns an all zero hash. Read more
Hashes some bytes.
The returned type after indexing.
Performs the indexing (container[index]) operation. Read more
Formats the value using the given formatter.
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
Size, in bits, of the hash.
Helper function to turn a deserialized slice into the correct hash type.
Do serde serialization.
Do serde deserialization.
Serialize this value into the given Serde serializer. Read more
Formats the value using the given formatter.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+true for Sha256dHash, so here we are.
source§

fn engine() -> Self::Engine

Constructs a new engine.
source§

fn from_engine(e: Self::Engine) -> Self

Produces a hash from the current state of a given engine.
source§

fn from_slice(sl: &[u8]) -> Result<DescriptorId, FromSliceError>

Copies a byte slice into a hash object.
source§

fn from_byte_array(bytes: Self::Bytes) -> Self

Constructs a hash from the underlying byte array.
source§

fn to_byte_array(self) -> Self::Bytes

Returns the underlying byte array.
source§

fn as_byte_array(&self) -> &Self::Bytes

Returns a reference to the underlying byte array.
source§

fn all_zeros() -> Self

Returns an all zero hash. Read more
§

fn hash(data: &[u8]) -> Self

Hashes some bytes.
source§

impl<I: SliceIndex<[u8]>> Index<I> for DescriptorId

§

type Output = <I as SliceIndex<[u8]>>::Output

The returned type after indexing.
source§

fn index(&self, index: I) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl LowerHex for DescriptorId

source§

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

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

impl Ord for DescriptorId

source§

fn cmp(&self, other: &DescriptorId) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for DescriptorId

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for DescriptorId

source§

fn partial_cmp(&self, other: &DescriptorId) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl SerdeHash for DescriptorId

source§

const N: usize = 32usize

Size, in bits, of the hash.
source§

fn from_slice_delegated(sl: &[u8]) -> Result<Self, FromSliceError>

Helper function to turn a deserialized slice into the correct hash type.
§

fn serialize<S>( + &self, + s: S +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where + S: Serializer,

Do serde serialization.
§

fn deserialize<'de, D>(d: D) -> Result<Self, <D as Deserializer<'de>>::Error>
where + D: Deserializer<'de>,

Do serde deserialization.
source§

impl Serialize for DescriptorId

source§

fn serialize<S: Serializer>(&self, s: S) -> Result<S::Ok, S::Error>

Serialize this value into the given Serde serializer. Read more
source§

impl UpperHex for DescriptorId

source§

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

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

impl Copy for DescriptorId

source§

impl Eq for DescriptorId

source§

impl StructuralPartialEq for DescriptorId

Auto Trait Implementations§

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.FullTxOut.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.FullTxOut.html index 9353dc3b60..87299d5973 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.FullTxOut.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.FullTxOut.html @@ -1,30 +1,47 @@ -FullTxOut in bdk_chain - Rust

Struct bdk_chain::FullTxOut

source ·
pub struct FullTxOut<A> {
+FullTxOut in bdk_chain - Rust

Struct bdk_chain::FullTxOut

source ·
pub struct FullTxOut<A> {
     pub chain_position: ChainPosition<A>,
     pub outpoint: OutPoint,
     pub txout: TxOut,
     pub spent_by: Option<(ChainPosition<A>, Txid)>,
     pub is_on_coinbase: bool,
-}
Expand description

A TxOut with as much data as we can retrieve about it

-

Fields§

§chain_position: ChainPosition<A>

The position of the transaction in outpoint in the overall chain.

-
§outpoint: OutPoint

The location of the TxOut.

-
§txout: TxOut

The TxOut.

-
§spent_by: Option<(ChainPosition<A>, Txid)>

The txid and chain position of the transaction (if any) that has spent this output.

-
§is_on_coinbase: bool

Whether this output is on a coinbase transaction.

-

Implementations§

Whether the txout is considered mature.

-

Depending on the implementation of confirmation_height_upper_bound in Anchor, this +}

Expand description

A TxOut with as much data as we can retrieve about it

+

Fields§

§chain_position: ChainPosition<A>

The position of the transaction in outpoint in the overall chain.

+
§outpoint: OutPoint

The location of the TxOut.

+
§txout: TxOut

The TxOut.

+
§spent_by: Option<(ChainPosition<A>, Txid)>

The txid and chain position of the transaction (if any) that has spent this output.

+
§is_on_coinbase: bool

Whether this output is on a coinbase transaction.

+

Implementations§

source§

impl<A: Anchor> FullTxOut<A>

source

pub fn is_mature(&self, tip: u32) -> bool

Whether the txout is considered mature.

+

Depending on the implementation of confirmation_height_upper_bound in Anchor, this method may return false-negatives. In other words, interpreted confirmation count may be less than the actual value.

-

Whether the utxo is/was/will be spendable with chain tip.

+
source

pub fn is_confirmed_and_spendable(&self, tip: u32) -> bool

Whether the utxo is/was/will be spendable with chain tip.

This method does not take into account the lock time.

-

Depending on the implementation of confirmation_height_upper_bound in Anchor, this +

Depending on the implementation of confirmation_height_upper_bound in Anchor, this method may return false-negatives. In other words, interpreted confirmation count may be less than the actual value.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Trait Implementations§

source§

impl<A: Clone> Clone for FullTxOut<A>

source§

fn clone(&self) -> FullTxOut<A>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<A: Debug> Debug for FullTxOut<A>

source§

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

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

impl<A: Ord> Ord for FullTxOut<A>

source§

fn cmp(&self, other: &FullTxOut<A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<A: PartialEq> PartialEq for FullTxOut<A>

source§

fn eq(&self, other: &FullTxOut<A>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<A: PartialOrd> PartialOrd for FullTxOut<A>

source§

fn partial_cmp(&self, other: &FullTxOut<A>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl<A: Eq> Eq for FullTxOut<A>

source§

impl<A> StructuralPartialEq for FullTxOut<A>

Auto Trait Implementations§

§

impl<A> Freeze for FullTxOut<A>
where + A: Freeze,

§

impl<A> RefUnwindSafe for FullTxOut<A>
where + A: RefUnwindSafe,

§

impl<A> Send for FullTxOut<A>
where + A: Send,

§

impl<A> Sync for FullTxOut<A>
where + A: Sync,

§

impl<A> Unpin for FullTxOut<A>
where + A: Unpin,

§

impl<A> UnwindSafe for FullTxOut<A>
where + A: UnwindSafe,

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkIterator.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkIterator.html index b4e78fed41..13d9b7b0ce 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkIterator.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkIterator.html @@ -1,59 +1,227 @@ -SpkIterator in bdk_chain - Rust

Struct bdk_chain::SpkIterator

source ·
pub struct SpkIterator<D> { /* private fields */ }
Expand description

An iterator for derived script pubkeys.

-

SpkIterator is an implementation of the Iterator trait which possesses its own next() +SpkIterator in bdk_chain - Rust

Struct bdk_chain::SpkIterator

source ·
pub struct SpkIterator<D> { /* private fields */ }
Expand description

An iterator for derived script pubkeys.

+

SpkIterator is an implementation of the Iterator trait which possesses its own next() and nth() functions, both of which circumvent the unnecessary intermediate derivations required when using their default implementations.

-

Examples

+

§Examples

use bdk_chain::SpkIterator;
 
 // Creates a new script pubkey iterator starting at 0 from a descriptor.
 let mut spk_iter = SpkIterator::new(&descriptor);
 assert_eq!(spk_iter.next(), Some((0, external_spk_0)));
 assert_eq!(spk_iter.next(), None);
-

Implementations§

Create a new script pubkey iterator from descriptor.

+

Implementations§

source§

impl<D> SpkIterator<D>
where + D: Borrow<Descriptor<DescriptorPublicKey>>,

source

pub fn new(descriptor: D) -> Self

Create a new script pubkey iterator from descriptor.

This iterates from derivation index 0 and stops at index 0x7FFFFFFF (as specified in BIP-32). Non-wildcard descriptors will only return one script pubkey at derivation index 0.

-

Use new_with_range to create an iterator with a specified +

Use new_with_range to create an iterator with a specified derivation index range.

-

Create a new script pubkey iterator from descriptor and a given range.

+
source

pub fn new_with_range<R>(descriptor: D, range: R) -> Self
where + R: RangeBounds<u32>,

Create a new script pubkey iterator from descriptor and a given range.

Non-wildcard descriptors will only emit a single script pubkey (at derivation index 0). Wildcard descriptors have an end-bound of 0x7FFFFFFF (inclusive).

-

Refer to new for more.

-

Get a reference to the internal descriptor.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
The type of the elements being iterated over.
Advances the iterator and returns the next value. Read more
Returns the nth element of the iterator. Read more
🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
Returns the bounds on the remaining length of the iterator. Read more
Consumes the iterator, counting the number of iterations and returning it. Read more
Consumes the iterator, returning the last element. Read more
🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
Takes two iterators and creates a new iterator over both in sequence. Read more
‘Zips up’ two iterators into a single iterator of pairs. Read more
🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
Takes a closure and creates an iterator which calls that closure on each -element. Read more
Calls a closure on each element of an iterator. Read more
Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
Creates an iterator that both filters and maps. Read more
Creates an iterator which gives the current iteration count as well as -the next value. Read more
Creates an iterator which can use the peek and peek_mut methods +

Refer to new for more.

+
source

pub fn descriptor(&self) -> &D

Get a reference to the internal descriptor.

+

Trait Implementations§

source§

impl<D: Clone> Clone for SpkIterator<D>

source§

fn clone(&self) -> SpkIterator<D> ⓘ

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<D> Iterator for SpkIterator<D>
where + D: Borrow<Descriptor<DescriptorPublicKey>>,

§

type Item = (u32, ScriptBuf)

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
Creates an iterator that skips elements based on a predicate. Read more
Creates an iterator that yields elements based on a predicate. Read more
Creates an iterator that both yields elements based on a predicate and maps. Read more
Creates an iterator that skips the first n elements. Read more
Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
An iterator adapter similar to fold that holds internal state and -produces a new iterator. Read more
Creates an iterator that works like map, but flattens nested structure. Read more
Creates an iterator which ends after the first None. Read more
Does something with each element of an iterator, passing the value on. Read more
Borrows an iterator, rather than consuming it. Read more
Transforms an iterator into a collection. Read more
🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
Consumes an iterator, creating two collections from it. Read more
🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
Folds every element into an accumulator by applying an operation, -returning the final result. Read more
Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
Tests if every element of the iterator matches a predicate. Read more
Tests if any element of the iterator matches a predicate. Read more
Searches for an element of an iterator that satisfies a predicate. Read more
Applies function to the elements of iterator and returns -the first non-none result. Read more
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
Searches for an element in an iterator, returning its index. Read more
Returns the element that gives the maximum value from the -specified function. Read more
Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
Returns the element that gives the minimum value from the -specified function. Read more
Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
Converts an iterator of pairs into a pair of containers. Read more
Creates an iterator which copies all of its elements. Read more
Creates an iterator which clones all of its elements. Read more
🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
Sums the elements of an iterator. Read more
Iterates over the entire iterator, multiplying all the elements Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
Lexicographically compares the elements of this Iterator with those -of another. Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
Determines if the elements of this Iterator are equal to those of -another. Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
Determines if the elements of this Iterator are unequal to those of -another. Read more
Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit +evaluation, returning a result without comparing the remaining elements. +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<D> Freeze for SpkIterator<D>
where + D: Freeze,

§

impl<D> RefUnwindSafe for SpkIterator<D>
where + D: RefUnwindSafe,

§

impl<D> Send for SpkIterator<D>
where + D: Send,

§

impl<D> Sync for SpkIterator<D>
where + D: Sync,

§

impl<D> Unpin for SpkIterator<D>
where + D: Unpin,

§

impl<D> UnwindSafe for SpkIterator<D>
where + D: UnwindSafe,

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> 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.

-
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
Choose one element at random from the iterator. Read more
Choose one element at random from the iterator. Read more
Collects values at random from the iterator into a supplied buffer -until that buffer is filled. Read more
Collects amount values at random from the iterator into a vector. Read more
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for I
where + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<I> IteratorRandom for I
where + I: Iterator,

source§

fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
where + R: Rng + ?Sized,

Choose one element at random from the iterator. Read more
source§

fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
where + R: Rng + ?Sized,

Choose one element at random from the iterator. Read more
source§

fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
where + R: Rng + ?Sized,

Collects values at random from the iterator into a supplied buffer +until that buffer is filled. Read more
source§

fn choose_multiple<R>(self, rng: &mut R, amount: usize) -> Vec<Self::Item>
where + R: Rng + ?Sized,

Collects amount values at random from the iterator into a vector. Read more
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkTxOutIndex.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkTxOutIndex.html index 2a6ddd47de..aa55a1a8e4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkTxOutIndex.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/struct.SpkTxOutIndex.html @@ -1,39 +1,51 @@ -SpkTxOutIndex in bdk_chain - Rust

Struct bdk_chain::SpkTxOutIndex

source ·
pub struct SpkTxOutIndex<I> { /* private fields */ }
Expand description

An index storing TxOuts that have a script pubkey that matches those in a list.

+SpkTxOutIndex in bdk_chain - Rust

Struct bdk_chain::SpkTxOutIndex

source ·
pub struct SpkTxOutIndex<I> { /* private fields */ }
Expand description

An index storing TxOuts that have a script pubkey that matches those in a list.

The basic idea is that you insert script pubkeys you care about into the index with -insert_spk and then when you call Indexer::index_tx or Indexer::index_txout, the +insert_spk and then when you call Indexer::index_tx or Indexer::index_txout, the index will look at any txouts you pass in and store and index any txouts matching one of its script pubkeys.

Each script pubkey is associated with an application-defined index script index I, which must be -Ord. Usually, this is used to associate the derivation index of the script pubkey or even a +Ord. Usually, this is used to associate the derivation index of the script pubkey or even a combination of (keychain, derivation_index).

Note there is no harm in scanning transactions that disappear from the blockchain or were never in there in the first place. SpkTxOutIndex is intentionally monotone – you cannot delete or modify txouts that have been indexed. To find out which txouts from the index are actually in the -chain or unspent, you must use other sources of information like a TxGraph.

-

Implementations§

Scans a transaction’s outputs for matching script pubkeys.

+chain or unspent, you must use other sources of information like a TxGraph.

+

Implementations§

source§

impl<I: Clone + Ord> SpkTxOutIndex<I>

source

pub fn scan(&mut self, tx: &Transaction) -> BTreeSet<I>

Scans a transaction’s outputs for matching script pubkeys.

Typically, this is used in two situations:

  1. After loading transaction data from the disk, you may scan over all the txouts to restore all your txouts.
  2. When getting new data from the chain, you usually scan it before incorporating it into your chain state.
-

Scan a single TxOut for a matching script pubkey and returns the index that matches the +

source

pub fn scan_txout(&mut self, op: OutPoint, txout: &TxOut) -> Option<&I>

Scan a single TxOut for a matching script pubkey and returns the index that matches the script pubkey (if any).

-

Get a reference to the set of indexed outpoints.

-

Iterate over all known txouts that spend to tracked script pubkeys.

-

Finds all txouts on a transaction that has previously been scanned and indexed.

-

Iterates over all the outputs with script pubkeys in an index range.

-

Returns the txout and script pubkey index of the TxOut at OutPoint.

+
source

pub fn outpoints(&self) -> &BTreeSet<(I, OutPoint)>

Get a reference to the set of indexed outpoints.

+
source

pub fn txouts( + &self +) -> impl DoubleEndedIterator<Item = (&I, OutPoint, &TxOut)> + ExactSizeIterator

Iterate over all known txouts that spend to tracked script pubkeys.

+
source

pub fn txouts_in_tx( + &self, + txid: Txid +) -> impl DoubleEndedIterator<Item = (&I, OutPoint, &TxOut)>

Finds all txouts on a transaction that has previously been scanned and indexed.

+
source

pub fn outputs_in_range( + &self, + range: impl RangeBounds<I> +) -> impl DoubleEndedIterator<Item = (&I, OutPoint)>

Iterates over all the outputs with script pubkeys in an index range.

+
source

pub fn txout(&self, outpoint: OutPoint) -> Option<(&I, &TxOut)>

Returns the txout and script pubkey index of the TxOut at OutPoint.

Returns None if the TxOut hasn’t been scanned or if nothing matching was found there.

-

Returns the script that has been inserted at the index.

+
source

pub fn spk_at_index(&self, index: &I) -> Option<&Script>

Returns the script that has been inserted at the index.

If that index hasn’t been inserted yet, it will return None.

-

The script pubkeys that are being tracked by the index.

-

Adds a script pubkey to scan for. Returns false and does nothing if spk already exists in the map

+
source

pub fn all_spks(&self) -> &BTreeMap<I, ScriptBuf>

The script pubkeys that are being tracked by the index.

+
source

pub fn insert_spk(&mut self, index: I, spk: ScriptBuf) -> bool

Adds a script pubkey to scan for. Returns false and does nothing if spk already exists in the map

the index will look for outputs spending to this spk whenever it scans new data.

-

Iterates over all unused script pubkeys in an index range.

+
source

pub fn unused_spks<R>( + &self, + range: R +) -> impl DoubleEndedIterator<Item = (&I, &Script)> + Clone
where + R: RangeBounds<I>,

Iterates over all unused script pubkeys in an index range.

Here, “unused” means that after the script pubkey was stored in the index, the index has never scanned a transaction output with it.

-
Example
+
§Example

 // imagine our spks are indexed like (keychain, derivation_index).
 let txout_index = SpkTxOutIndex::<(u32, u32)>::default();
@@ -41,35 +53,56 @@ never scanned a transaction output with it.

let change_index = 1; let unused_change_spks = txout_index.unused_spks((change_index, u32::MIN)..(change_index, u32::MAX));
-

Returns whether the script pubkey at index has been used or not.

+
source

pub fn is_used(&self, index: &I) -> bool

Returns whether the script pubkey at index has been used or not.

Here, “unused” means that after the script pubkey was stored in the index, the index has never scanned a transaction output with it.

-

Marks the script pubkey at index as used even though it hasn’t seen an output spending to it. +

source

pub fn mark_used(&mut self, index: &I) -> bool

Marks the script pubkey at index as used even though it hasn’t seen an output spending to it. This only affects when the index had already been added to self and was unused.

Returns whether the index was initially present as unused.

This is useful when you want to reserve a script pubkey for something but don’t want to add the transaction output using it to the index yet. Other callers will consider the index used -until you call unmark_used.

-

Undoes the effect of mark_used. Returns whether the index is inserted back into +until you call unmark_used.

+
source

pub fn unmark_used(&mut self, index: &I) -> bool

Undoes the effect of mark_used. Returns whether the index is inserted back into unused.

Note that if self has scanned an output with this script pubkey then this will have no effect.

-

Returns the index associated with the script pubkey.

-

Computes the total value transfer effect tx has on the script pubkeys in range. Value is +

source

pub fn index_of_spk(&self, script: &Script) -> Option<&I>

Returns the index associated with the script pubkey.

+
source

pub fn sent_and_received( + &self, + tx: &Transaction, + range: impl RangeBounds<I> +) -> (Amount, Amount)

Computes the total value transfer effect tx has on the script pubkeys in range. Value is sent when a script pubkey in the range is on an input and received when it is on an output. For sent to be computed correctly, the output being spent must have already been scanned by the index. Calculating received just uses the [Transaction] outputs directly, so it will be correct even if it has not been scanned.

-

Computes the net value transfer effect of tx on the script pubkeys in range. Shorthand -for calling sent_and_received and subtracting sent from received.

-

Whether any of the inputs of this transaction spend a txout tracked or whether any output +

source

pub fn net_value( + &self, + tx: &Transaction, + range: impl RangeBounds<I> +) -> SignedAmount

Computes the net value transfer effect of tx on the script pubkeys in range. Shorthand +for calling sent_and_received and subtracting sent from received.

+
source

pub fn is_relevant(&self, tx: &Transaction) -> bool

Whether any of the inputs of this transaction spend a txout tracked or whether any output matches one of our script pubkeys.

It is easily possible to misuse this method and get false negatives by calling it before you have scanned the TxOuts the transaction is spending. For example, if you want to filter out all the transactions in a block that are irrelevant, you must first scan all the transactions in the block and only then use this method.

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
The resultant “changeset” when new transaction data is indexed.
Scan and index the given outpoint and txout.
Scans a transaction for relevant outpoints, which are stored and indexed internally.
Determines the ChangeSet between self and an empty Indexer.
Apply changeset to itself.
Determines whether the transaction should be included in the index.

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Trait Implementations§

source§

impl<I: Clone> Clone for SpkTxOutIndex<I>

source§

fn clone(&self) -> SpkTxOutIndex<I>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<I: Debug> Debug for SpkTxOutIndex<I>

source§

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

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

impl<I> Default for SpkTxOutIndex<I>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<I: Clone + Ord> Indexer for SpkTxOutIndex<I>

§

type ChangeSet = ()

The resultant “changeset” when new transaction data is indexed.
source§

fn index_txout(&mut self, outpoint: OutPoint, txout: &TxOut) -> Self::ChangeSet

Scan and index the given outpoint and txout.
source§

fn index_tx(&mut self, tx: &Transaction) -> Self::ChangeSet

Scans a transaction for relevant outpoints, which are stored and indexed internally.
source§

fn initial_changeset(&self) -> Self::ChangeSet

Determines the ChangeSet between self and an empty Indexer.
source§

fn apply_changeset(&mut self, _changeset: Self::ChangeSet)

Apply changeset to itself.
source§

fn is_tx_relevant(&self, tx: &Transaction) -> bool

Determines whether the transaction should be included in the index.

Auto Trait Implementations§

§

impl<I> Freeze for SpkTxOutIndex<I>

§

impl<I> RefUnwindSafe for SpkTxOutIndex<I>
where + I: RefUnwindSafe,

§

impl<I> Send for SpkTxOutIndex<I>
where + I: Send,

§

impl<I> Sync for SpkTxOutIndex<I>
where + I: Sync,

§

impl<I> Unpin for SpkTxOutIndex<I>
where + I: Unpin,

§

impl<I> UnwindSafe for SpkTxOutIndex<I>

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Anchor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Anchor.html index c63231dbff..a910d4f5f7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Anchor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Anchor.html @@ -1,23 +1,25 @@ -Anchor in bdk_chain - Rust

Trait bdk_chain::Anchor

source ·
pub trait Anchor: Debug + Clone + Eq + PartialOrd + Ord + Hash {
+Anchor in bdk_chain - Rust

Trait bdk_chain::Anchor

source ·
pub trait Anchor: Debug + Clone + Eq + PartialOrd + Ord + Hash {
+    // Required method
     fn anchor_block(&self) -> BlockId;
 
+    // Provided method
     fn confirmation_height_upper_bound(&self) -> u32 { ... }
-}
Expand description

Trait that “anchors” blockchain data to a specific block of height and hash.

+}
Expand description

Trait that “anchors” blockchain data to a specific block of height and hash.

If transaction A is anchored in block B, and block B is in the best chain, we can assume that transaction A is also confirmed in the best chain. This does not necessarily mean that transaction A is confirmed in block B. It could also mean transaction A is confirmed in a parent block of B.

-

Every Anchor implementation must contain a BlockId parameter, and must implement -Ord. When implementing Ord, the anchors’ BlockIds should take precedence -over other elements inside the Anchors for comparison purposes, i.e., you should first -compare the anchors’ BlockIds and then care about the rest.

+

Every Anchor implementation must contain a BlockId parameter, and must implement +Ord. When implementing Ord, the anchors’ BlockIds should take precedence +over other elements inside the Anchors for comparison purposes, i.e., you should first +compare the anchors’ BlockIds and then care about the rest.

The example shows different types of anchors:

// Initialize the local chain with two blocks.
 let chain = LocalChain::from_blocks(
     [
-        (1, Hash::hash("first".as_bytes())),
-        (2, Hash::hash("second".as_bytes())),
+        (1, Hash::hash("first".as_bytes())),
+        (2, Hash::hash("second".as_bytes())),
     ]
     .into_iter()
     .collect(),
@@ -35,7 +37,7 @@ graph_a.insert_anchor(
     tx.txid(),
     BlockId {
         height: 1,
-        hash: Hash::hash("first".as_bytes()),
+        hash: Hash::hash("first".as_bytes()),
     },
 );
 
@@ -51,7 +53,7 @@ graph_b.insert_anchor(
     ConfirmationHeightAnchor {
         anchor_block: BlockId {
             height: 2,
-            hash: Hash::hash("second".as_bytes()),
+            hash: Hash::hash("second".as_bytes()),
         },
         confirmation_height: 1,
     },
@@ -69,14 +71,14 @@ graph_c.insert_anchor(
     ConfirmationTimeHeightAnchor {
         anchor_block: BlockId {
             height: 2,
-            hash: Hash::hash("third".as_bytes()),
+            hash: Hash::hash("third".as_bytes()),
         },
         confirmation_height: 1,
         confirmation_time: 123,
     },
 );
-

Required Methods§

Returns the BlockId that the associated blockchain data is “anchored” in.

-

Provided Methods§

Get the upper bound of the chain data’s confirmation height.

+

Required Methods§

source

fn anchor_block(&self) -> BlockId

Returns the BlockId that the associated blockchain data is “anchored” in.

+

Provided Methods§

source

fn confirmation_height_upper_bound(&self) -> u32

Get the upper bound of the chain data’s confirmation height.

The default definition gives a pessimistic answer. This can be overridden by the Anchor implementation for a more accurate value.

-

Implementations on Foreign Types§

Implementors§

\ No newline at end of file +

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<'a, A: Anchor> Anchor for &'a A

Implementors§

source§

impl Anchor for BlockId

source§

impl Anchor for ConfirmationHeightAnchor

source§

impl Anchor for ConfirmationTimeHeightAnchor

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.AnchorFromBlockPosition.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.AnchorFromBlockPosition.html index 6c88872245..5bf52c6660 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.AnchorFromBlockPosition.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.AnchorFromBlockPosition.html @@ -1,6 +1,11 @@ -AnchorFromBlockPosition in bdk_chain - Rust
pub trait AnchorFromBlockPosition: Anchor {
-    fn from_block_position(
        block: &Block,
        block_id: BlockId,
        tx_pos: usize
    ) -> Self; -}
Expand description

An Anchor that can be constructed from a given block, block height and transaction position +AnchorFromBlockPosition in bdk_chain - Rust

Trait bdk_chain::AnchorFromBlockPosition

source ·
pub trait AnchorFromBlockPosition: Anchor {
+    // Required method
+    fn from_block_position(
+        block: &Block,
+        block_id: BlockId,
+        tx_pos: usize
+    ) -> Self;
+}
Expand description

An Anchor that can be constructed from a given block, block height and transaction position within the block.

-

Required Methods§

Construct the anchor from a given block, block height and tx_pos within the block.

-

Implementors§

\ No newline at end of file +

Required Methods§

source

fn from_block_position(block: &Block, block_id: BlockId, tx_pos: usize) -> Self

Construct the anchor from a given block, block height and tx_pos within the block.

+

Object Safety§

This trait is not object safe.

Implementors§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Append.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Append.html index 9300715f65..3dc9398ff5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Append.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.Append.html @@ -1,7 +1,74 @@ -Append in bdk_chain - Rust

Trait bdk_chain::Append

source ·
pub trait Append {
+Append in bdk_chain - Rust

Trait bdk_chain::Append

source ·
pub trait Append {
+    // Required methods
     fn append(&mut self, other: Self);
     fn is_empty(&self) -> bool;
-}
Expand description

Trait that makes an object appendable.

-

Required Methods§

Append another object of the same type onto self.

-

Returns whether the structure is considered empty.

-

Implementations on Foreign Types§

Implementors§

\ No newline at end of file +}
Expand description

Trait that makes an object appendable.

+

Required Methods§

source

fn append(&mut self, other: Self)

Append another object of the same type onto self.

+
source

fn is_empty(&self) -> bool

Returns whether the structure is considered empty.

+

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Append for ()

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<K: Ord, V> Append for BTreeMap<K, V>

source§

fn append(&mut self, other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0> Append for (T0,)
where + T0: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1> Append for (T0, T1)
where + T0: Append, + T1: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2> Append for (T0, T1, T2)
where + T0: Append, + T1: Append, + T2: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2, T3> Append for (T0, T1, T2, T3)
where + T0: Append, + T1: Append, + T2: Append, + T3: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2, T3, T4> Append for (T0, T1, T2, T3, T4)
where + T0: Append, + T1: Append, + T2: Append, + T3: Append, + T4: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2, T3, T4, T5> Append for (T0, T1, T2, T3, T4, T5)
where + T0: Append, + T1: Append, + T2: Append, + T3: Append, + T4: Append, + T5: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2, T3, T4, T5, T6> Append for (T0, T1, T2, T3, T4, T5, T6)
where + T0: Append, + T1: Append, + T2: Append, + T3: Append, + T4: Append, + T5: Append, + T6: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7> Append for (T0, T1, T2, T3, T4, T5, T6, T7)
where + T0: Append, + T1: Append, + T2: Append, + T3: Append, + T4: Append, + T5: Append, + T6: Append, + T7: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> Append for (T0, T1, T2, T3, T4, T5, T6, T7, T8)
where + T0: Append, + T1: Append, + T2: Append, + T3: Append, + T4: Append, + T5: Append, + T6: Append, + T7: Append, + T8: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> Append for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
where + T0: Append, + T1: Append, + T2: Append, + T3: Append, + T4: Append, + T5: Append, + T6: Append, + T7: Append, + T8: Append, + T9: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Append for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
where + T0: Append, + T1: Append, + T2: Append, + T3: Append, + T4: Append, + T5: Append, + T6: Append, + T7: Append, + T8: Append, + T9: Append, + T10: Append,

source§

fn append(&mut self, _other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T> Append for Vec<T>

source§

fn append(&mut self, other: Self)

source§

fn is_empty(&self) -> bool

source§

impl<T: Ord> Append for BTreeSet<T>

source§

fn append(&mut self, other: Self)

source§

fn is_empty(&self) -> bool

Implementors§

source§

impl<A: Ord> Append for bdk_chain::tx_graph::ChangeSet<A>

source§

impl<A: Anchor, IA: Append> Append for bdk_chain::indexed_tx_graph::ChangeSet<A, IA>

source§

impl<K: Ord> Append for bdk_chain::keychain::ChangeSet<K>

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.ChainOracle.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.ChainOracle.html index 5e2c75a964..4c19f3010b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.ChainOracle.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.ChainOracle.html @@ -1,14 +1,23 @@ -ChainOracle in bdk_chain - Rust

Trait bdk_chain::ChainOracle

source ·
pub trait ChainOracle {
+ChainOracle in bdk_chain - Rust

Trait bdk_chain::ChainOracle

source ·
pub trait ChainOracle {
     type Error: Debug;
 
-    fn is_block_in_chain(
        &self,
        block: BlockId,
        chain_tip: BlockId
    ) -> Result<Option<bool>, Self::Error>; + // Required methods + fn is_block_in_chain( + &self, + block: BlockId, + chain_tip: BlockId + ) -> Result<Option<bool>, Self::Error>; fn get_chain_tip(&self) -> Result<BlockId, Self::Error>; -}
Expand description

Represents a service that tracks the blockchain.

-

The main method is is_block_in_chain which determines whether a given block of BlockId +}

Expand description

Represents a service that tracks the blockchain.

+

The main method is is_block_in_chain which determines whether a given block of BlockId is an ancestor of the chain_tip.

-

Required Associated Types§

Error type.

-

Required Methods§

Determines whether block of BlockId exists as an ancestor of chain_tip.

+

Required Associated Types§

source

type Error: Debug

Error type.

+

Required Methods§

source

fn is_block_in_chain( + &self, + block: BlockId, + chain_tip: BlockId +) -> Result<Option<bool>, Self::Error>

Determines whether block of BlockId exists as an ancestor of chain_tip.

If None is returned, it means the implementation cannot determine whether block exists under chain_tip.

-

Get the best chain’s chain tip.

-

Implementors§

\ No newline at end of file +
source

fn get_chain_tip(&self) -> Result<BlockId, Self::Error>

Get the best chain’s chain tip.

+

Implementors§

source§

impl ChainOracle for LocalChain

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.DescriptorExt.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.DescriptorExt.html index 6590549902..e42d791368 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.DescriptorExt.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/trait.DescriptorExt.html @@ -1,9 +1,10 @@ -DescriptorExt in bdk_chain - Rust

Trait bdk_chain::DescriptorExt

source ·
pub trait DescriptorExt {
+DescriptorExt in bdk_chain - Rust

Trait bdk_chain::DescriptorExt

source ·
pub trait DescriptorExt {
+    // Required methods
     fn dust_value(&self) -> u64;
     fn descriptor_id(&self) -> DescriptorId;
-}
Expand description

A trait to extend the functionality of a miniscript descriptor.

-

Required Methods§

Returns the minimum value (in satoshis) at which an output is broadcastable. +}

Expand description

A trait to extend the functionality of a miniscript descriptor.

+

Required Methods§

source

fn dust_value(&self) -> u64

Returns the minimum value (in satoshis) at which an output is broadcastable. Panics if the descriptor wildcard is hardened.

-

Returns the descriptor id, calculated as the sha256 of the descriptor, checksum not +

source

fn descriptor_id(&self) -> DescriptorId

Returns the descriptor id, calculated as the sha256 of the descriptor, checksum not included.

-

Implementations on Foreign Types§

Implementors§

\ No newline at end of file +

Implementations on Foreign Types§

source§

impl DescriptorExt for Descriptor<DescriptorPublicKey>

Implementors§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/enum.CalculateFeeError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/enum.CalculateFeeError.html index ea8f60bba6..4169d8acf0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/enum.CalculateFeeError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/enum.CalculateFeeError.html @@ -1,14 +1,21 @@ -CalculateFeeError in bdk_chain::tx_graph - Rust
pub enum CalculateFeeError {
+CalculateFeeError in bdk_chain::tx_graph - Rust

Enum bdk_chain::tx_graph::CalculateFeeError

source ·
pub enum CalculateFeeError {
     MissingTxOut(Vec<OutPoint>),
     NegativeFee(i64),
-}
Expand description

Errors returned by TxGraph::calculate_fee.

-

Variants§

§

MissingTxOut(Vec<OutPoint>)

Missing TxOut for one or more of the inputs of the tx

+}
Expand description

Errors returned by TxGraph::calculate_fee.

+

Variants§

§

MissingTxOut(Vec<OutPoint>)

Missing TxOut for one or more of the inputs of the tx

§

NegativeFee(i64)

When the transaction is invalid according to the graph it has a negative fee

-

Trait Implementations§

Formats the value using the given formatter. Read more
Formats the value using the given formatter. Read more
The lower-level source of this error, if any. Read more
👎Deprecated since 1.42.0: use the Display impl or to_string()
👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Trait Implementations§

source§

impl Debug for CalculateFeeError

source§

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

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

impl Display for CalculateFeeError

source§

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

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

impl Error for CalculateFeeError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl PartialEq for CalculateFeeError

source§

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

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Eq for CalculateFeeError

source§

impl StructuralPartialEq for CalculateFeeError

Auto Trait Implementations§

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> 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.

-
🔬This is a nightly-only experimental API. (provide_any)
Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
Converts the given value to a String. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/index.html index 944e816e7d..69ff35aa5e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/index.html @@ -1,38 +1,38 @@ -bdk_chain::tx_graph - Rust

Module bdk_chain::tx_graph

source ·
Expand description

Module for structures that store and traverse transactions.

-

TxGraph contains transactions and indexes them so you can easily traverse the graph of +bdk_chain::tx_graph - Rust

Module bdk_chain::tx_graph

source ·
Expand description

Module for structures that store and traverse transactions.

+

TxGraph contains transactions and indexes them so you can easily traverse the graph of those transactions. TxGraph is monotone in that you can always insert a transaction – it does not care whether that transaction is in the current best chain or whether it conflicts with any of the existing transactions or what order you insert the transactions. This means that you -can always combine two TxGraphs together, without resulting in inconsistencies. Furthermore, +can always combine two TxGraphs together, without resulting in inconsistencies. Furthermore, there is currently no way to delete a transaction.

Transactions can be either whole or partial (i.e., transactions for which we only know some outputs, which we usually call “floating outputs”; these are usually inserted using the -insert_txout method.).

-

The graph contains transactions in the form of TxNodes. Each node contains the txid, the -transaction (whole or partial), the blocks that it is anchored to (see the Anchor +insert_txout method.).

+

The graph contains transactions in the form of TxNodes. Each node contains the txid, the +transaction (whole or partial), the blocks that it is anchored to (see the Anchor documentation for more details), and the timestamp of the last time we saw the transaction as unconfirmed.

-

Conflicting transactions are allowed to coexist within a TxGraph. This is useful for -identifying and traversing conflicts and descendants of a given transaction. Some TxGraph +

Conflicting transactions are allowed to coexist within a TxGraph. This is useful for +identifying and traversing conflicts and descendants of a given transaction. Some TxGraph methods only consider transactions that are “canonical” (i.e., in the best chain or in mempool). We decide which transactions are canonical based on the transaction’s anchors and the -last_seen (as unconfirmed) timestamp; see the try_get_chain_position documentation for +last_seen (as unconfirmed) timestamp; see the try_get_chain_position documentation for more details.

-

The ChangeSet reports changes made to a TxGraph; it can be used to either save to -persistent storage, or to be applied to another TxGraph.

-

Lastly, you can use TxAncestors/TxDescendants to traverse ancestors and descendants of +

The ChangeSet reports changes made to a TxGraph; it can be used to either save to +persistent storage, or to be applied to another TxGraph.

+

Lastly, you can use TxAncestors/TxDescendants to traverse ancestors and descendants of a given transaction, respectively.

-

Applying changes

-

Methods that change the state of TxGraph will return ChangeSets. -ChangeSets can be applied back to a TxGraph or be used to inform persistent storage -of the changes to TxGraph.

-

Generics

+

§Applying changes

+

Methods that change the state of TxGraph will return ChangeSets. +ChangeSets can be applied back to a TxGraph or be used to inform persistent storage +of the changes to TxGraph.

+

§Generics

Anchors are represented as generics within TxGraph<A>. To make use of all functionality of the -TxGraph, anchors (A) should implement Anchor.

+TxGraph, anchors (A) should implement Anchor.

Anchors are made generic so that different types of data can be stored with how a transaction is anchored to a given block. An example of this is storing a merkle proof of the transaction to -the confirmation block - this can be done with a custom Anchor type. The minimal Anchor -type would just be a BlockId which just represents the height and hash of the block which +the confirmation block - this can be done with a custom Anchor type. The minimal Anchor +type would just be a BlockId which just represents the height and hash of the block which the transaction is contained in. Note that a transaction can be contained in multiple conflicting blocks (by nature of the Bitcoin network).

@@ -42,12 +42,12 @@ conflicting blocks (by nature of the Bitcoin network).

let changeset = tx_graph.insert_tx(tx_a); // We can restore the state of the `tx_graph` by applying all -// the changesets obtained by mutating the original (the order doesn't matter). +// the changesets obtained by mutating the original (the order doesn't matter). let mut restored_tx_graph: TxGraph = TxGraph::default(); restored_tx_graph.apply_changeset(changeset); assert_eq!(tx_graph, restored_tx_graph);
-

A TxGraph can also be updated with another TxGraph which merges them together.

+

A TxGraph can also be updated with another TxGraph which merges them together.

let mut graph: TxGraph = TxGraph::default();
 let update = TxGraph::new(vec![tx_a, tx_b]);
@@ -58,4 +58,4 @@ restored_tx_graph.apply_changeset(changeset);
 // if we apply it again, the resulting changeset will be empty
 let changeset = graph.apply_update(update);
 assert!(changeset.is_empty());
-

Structs

A transaction that is included in the chain, or is still in mempool.
The ChangeSet represents changes to a TxGraph.
An iterator that traverses ancestors of a given root transaction.
An iterator that traverses transaction descendants.
A graph of transactions and spends.
A transaction node in the TxGraph.

Enums

Errors returned by TxGraph::calculate_fee.
\ No newline at end of file +

Structs§

Enums§

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/sidebar-items.js index 3d52c87023..52e9d38815 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["CalculateFeeError","Errors returned by `TxGraph::calculate_fee`."]],"struct":[["CanonicalTx","A transaction that is included in the chain, or is still in mempool."],["ChangeSet","The [`ChangeSet`] represents changes to a [`TxGraph`]."],["TxAncestors","An iterator that traverses ancestors of a given root transaction."],["TxDescendants","An iterator that traverses transaction descendants."],["TxGraph","A graph of transactions and spends."],["TxNode","A transaction node in the [`TxGraph`]."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["CalculateFeeError"],"struct":["CanonicalTx","ChangeSet","TxAncestors","TxDescendants","TxGraph","TxNode"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.CanonicalTx.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.CanonicalTx.html index 0c9b74862c..f93ff5041d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.CanonicalTx.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.CanonicalTx.html @@ -1,15 +1,36 @@ -CanonicalTx in bdk_chain::tx_graph - Rust
pub struct CanonicalTx<'a, T, A> {
-    pub chain_position: ChainPosition<&'a A>,
+CanonicalTx in bdk_chain::tx_graph - Rust

Struct bdk_chain::tx_graph::CanonicalTx

source ·
pub struct CanonicalTx<'a, T, A> {
+    pub chain_position: ChainPosition<&'a A>,
     pub tx_node: TxNode<'a, T, A>,
-}
Expand description

A transaction that is included in the chain, or is still in mempool.

-

Fields§

§chain_position: ChainPosition<&'a A>

How the transaction is observed as (confirmed or unconfirmed).

-
§tx_node: TxNode<'a, T, A>

The transaction node (as part of the graph).

-

Trait Implementations§

Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
This method returns an Ordering between self and other. Read more
Compares and returns the maximum of two values. Read more
Compares and returns the minimum of two values. Read more
Restrict a value to a certain interval. Read more
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
This method returns an ordering between self and other values if one exists. Read more
This method tests less than (for self and other) and is used by the < operator. Read more
This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
This method tests greater than (for self and other) and is used by the > operator. Read more
This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+}
Expand description

A transaction that is included in the chain, or is still in mempool.

+

Fields§

§chain_position: ChainPosition<&'a A>

How the transaction is observed as (confirmed or unconfirmed).

+
§tx_node: TxNode<'a, T, A>

The transaction node (as part of the graph).

+

Trait Implementations§

source§

impl<'a, T: Clone, A: Clone> Clone for CanonicalTx<'a, T, A>

source§

fn clone(&self) -> CanonicalTx<'a, T, A>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<'a, T: Debug, A: Debug> Debug for CanonicalTx<'a, T, A>

source§

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

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

impl<'a, T: Ord, A: Ord> Ord for CanonicalTx<'a, T, A>

source§

fn cmp(&self, other: &CanonicalTx<'a, T, A>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where + Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl<'a, T: PartialEq, A: PartialEq> PartialEq for CanonicalTx<'a, T, A>

source§

fn eq(&self, other: &CanonicalTx<'a, T, A>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd for CanonicalTx<'a, T, A>

source§

fn partial_cmp(&self, other: &CanonicalTx<'a, T, A>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
source§

impl<'a, T: Eq, A: Eq> Eq for CanonicalTx<'a, T, A>

source§

impl<'a, T, A> StructuralPartialEq for CanonicalTx<'a, T, A>

Auto Trait Implementations§

§

impl<'a, T, A> Freeze for CanonicalTx<'a, T, A>
where + T: Freeze,

§

impl<'a, T, A> RefUnwindSafe for CanonicalTx<'a, T, A>
where + T: RefUnwindSafe, + A: RefUnwindSafe,

§

impl<'a, T, A> Send for CanonicalTx<'a, T, A>
where + T: Send, + A: Sync,

§

impl<'a, T, A> Sync for CanonicalTx<'a, T, A>
where + T: Sync, + A: Sync,

§

impl<'a, T, A> Unpin for CanonicalTx<'a, T, A>
where + T: Unpin,

§

impl<'a, T, A> UnwindSafe for CanonicalTx<'a, T, A>
where + T: UnwindSafe, + A: RefUnwindSafe,

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html index a38a9d462a..12ce024742 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.ChangeSet.html @@ -1,27 +1,46 @@ -ChangeSet in bdk_chain::tx_graph - Rust

Struct bdk_chain::tx_graph::ChangeSet

source ·
pub struct ChangeSet<A = ()> {
+ChangeSet in bdk_chain::tx_graph - Rust

Struct bdk_chain::tx_graph::ChangeSet

source ·
pub struct ChangeSet<A = ()> {
     pub txs: BTreeSet<Arc<Transaction>>,
     pub txouts: BTreeMap<OutPoint, TxOut>,
     pub anchors: BTreeSet<(A, Txid)>,
     pub last_seen: BTreeMap<Txid, u64>,
-}
Expand description

The ChangeSet represents changes to a TxGraph.

-

Since TxGraph is monotone, the “changeset” can only contain transactions to be added and +}

Expand description

The ChangeSet represents changes to a TxGraph.

+

Since TxGraph is monotone, the “changeset” can only contain transactions to be added and not removed.

-

Refer to module-level documentation for more.

-

Fields§

§txs: BTreeSet<Arc<Transaction>>

Added transactions.

-
§txouts: BTreeMap<OutPoint, TxOut>

Added txouts.

-
§anchors: BTreeSet<(A, Txid)>

Added anchors.

-
§last_seen: BTreeMap<Txid, u64>

Added last-seen unix timestamps of transactions.

-

Implementations§

Iterates over all outpoints contained within ChangeSet.

-

Iterates over the heights of that the new transaction anchors in this changeset.

+

Refer to module-level documentation for more.

+

Fields§

§txs: BTreeSet<Arc<Transaction>>

Added transactions.

+
§txouts: BTreeMap<OutPoint, TxOut>

Added txouts.

+
§anchors: BTreeSet<(A, Txid)>

Added anchors.

+
§last_seen: BTreeMap<Txid, u64>

Added last-seen unix timestamps of transactions.

+

Implementations§

source§

impl<A> ChangeSet<A>

source

pub fn txouts(&self) -> impl Iterator<Item = (OutPoint, &TxOut)>

Iterates over all outpoints contained within ChangeSet.

+
source

pub fn anchor_heights(&self) -> impl Iterator<Item = u32> + '_
where + A: Anchor,

Iterates over the heights of that the new transaction anchors in this changeset.

This is useful if you want to find which heights you need to fetch data about in order to confirm or exclude these anchors.

-

Transform the ChangeSet to have Anchors of another type.

-

This takes in a closure of signature FnMut(A) -> A2 which is called for each Anchor to +

source§

impl<A: Ord> ChangeSet<A>

source

pub fn map_anchors<A2: Ord, F>(self, f: F) -> ChangeSet<A2>
where + F: FnMut(A) -> A2,

Transform the ChangeSet to have Anchors of another type.

+

This takes in a closure of signature FnMut(A) -> A2 which is called for each Anchor to transform it.

-

Trait Implementations§

Append another object of the same type onto self.
Returns whether the structure is considered empty.
Returns a copy of the value. Read more
Performs copy-assignment from source. Read more
Formats the value using the given formatter. Read more
Returns the “default value” for a type. Read more
Deserialize this value from the given Serde deserializer. Read more
Converts to this type from the input type.
This method tests for self and other values to be equal, and is used -by ==. Read more
This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more

Returns the argument unchanged.

-

Calls U::from(self).

+

Trait Implementations§

source§

impl<A: Ord> Append for ChangeSet<A>

source§

fn append(&mut self, other: Self)

Append another object of the same type onto self.
source§

fn is_empty(&self) -> bool

Returns whether the structure is considered empty.
source§

impl<A: Clone> Clone for ChangeSet<A>

source§

fn clone(&self) -> ChangeSet<A>

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl<A: Debug> Debug for ChangeSet<A>

source§

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

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

impl<A> Default for ChangeSet<A>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de, A> Deserialize<'de> for ChangeSet<A>
where + A: Ord + Deserialize<'de>,

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>

source§

fn from(graph: ChangeSet<A>) -> Self

Converts to this type from the input type.
source§

impl<A: PartialEq> PartialEq for ChangeSet<A>

source§

fn eq(&self, other: &ChangeSet<A>) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl<A> Serialize for ChangeSet<A>
where + A: Ord + Serialize,

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl<A> StructuralPartialEq for ChangeSet<A>

Auto Trait Implementations§

§

impl<A> Freeze for ChangeSet<A>

§

impl<A> RefUnwindSafe for ChangeSet<A>
where + A: RefUnwindSafe,

§

impl<A> Send for ChangeSet<A>
where + A: Send,

§

impl<A> Sync for ChangeSet<A>
where + A: Sync,

§

impl<A> Unpin for ChangeSet<A>

§

impl<A> UnwindSafe for ChangeSet<A>
where + A: RefUnwindSafe,

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> 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.

-
The resulting type after obtaining ownership.
Creates owned data from borrowed data, usually by cloning. Read more
Uses borrowed data to replace owned data, usually by cloning. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxAncestors.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxAncestors.html index 2c9335af95..38a0da8411 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxAncestors.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxAncestors.html @@ -1,43 +1,217 @@ -TxAncestors in bdk_chain::tx_graph - Rust
pub struct TxAncestors<'g, A, F> { /* private fields */ }
Expand description

An iterator that traverses ancestors of a given root transaction.

+TxAncestors in bdk_chain::tx_graph - Rust

Struct bdk_chain::tx_graph::TxAncestors

source ·
pub struct TxAncestors<'g, A, F> { /* private fields */ }
Expand description

An iterator that traverses ancestors of a given root transaction.

The iterator excludes partial transactions.

-

Returned by the walk_ancestors method of TxGraph.

-

Trait Implementations§

The type of the elements being iterated over.
Advances the iterator and returns the next value. Read more
🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
Returns the bounds on the remaining length of the iterator. Read more
Consumes the iterator, counting the number of iterations and returning it. Read more
Consumes the iterator, returning the last element. Read more
🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
Returns the nth element of the iterator. Read more
Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
Takes two iterators and creates a new iterator over both in sequence. Read more
‘Zips up’ two iterators into a single iterator of pairs. Read more
🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
Takes a closure and creates an iterator which calls that closure on each -element. Read more
Calls a closure on each element of an iterator. Read more
Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
Creates an iterator that both filters and maps. Read more
Creates an iterator which gives the current iteration count as well as -the next value. Read more
Creates an iterator which can use the peek and peek_mut methods +

Returned by the walk_ancestors method of TxGraph.

+

Trait Implementations§

source§

impl<'g, A, F, O> Iterator for TxAncestors<'g, A, F>
where + F: FnMut(usize, Arc<Transaction>) -> Option<O>,

§

type Item = O

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
Creates an iterator that skips elements based on a predicate. Read more
Creates an iterator that yields elements based on a predicate. Read more
Creates an iterator that both yields elements based on a predicate and maps. Read more
Creates an iterator that skips the first n elements. Read more
Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
An iterator adapter similar to fold that holds internal state and -produces a new iterator. Read more
Creates an iterator that works like map, but flattens nested structure. Read more
Creates an iterator which ends after the first None. Read more
Does something with each element of an iterator, passing the value on. Read more
Borrows an iterator, rather than consuming it. Read more
Transforms an iterator into a collection. Read more
🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
Consumes an iterator, creating two collections from it. Read more
🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
Folds every element into an accumulator by applying an operation, -returning the final result. Read more
Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
Tests if every element of the iterator matches a predicate. Read more
Tests if any element of the iterator matches a predicate. Read more
Searches for an element of an iterator that satisfies a predicate. Read more
Applies function to the elements of iterator and returns -the first non-none result. Read more
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
Searches for an element in an iterator, returning its index. Read more
Returns the element that gives the maximum value from the -specified function. Read more
Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
Returns the element that gives the minimum value from the -specified function. Read more
Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
Converts an iterator of pairs into a pair of containers. Read more
Creates an iterator which copies all of its elements. Read more
Creates an iterator which clones all of its elements. Read more
🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
Sums the elements of an iterator. Read more
Iterates over the entire iterator, multiplying all the elements Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
Lexicographically compares the elements of this Iterator with those -of another. Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
Determines if the elements of this Iterator are equal to those of -another. Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
Determines if the elements of this Iterator are unequal to those of -another. Read more
Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Adapts the byte iterator to output GF32 field elements instead. Read more
Calculate the sum over the iterator using checked arithmetic. If an over or underflow would -happen it returns None. Read more
Calculate the sum over the iterator using checked arithmetic. If an over or underflow would -happen it returns None. Read more
Adapts the Fe32 iterator to output bytes instead. Read more
Adapts the Fe32 iterator to encode the field elements into a bech32 address.

Returns the argument unchanged.

-

Calls U::from(self).

+their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit +evaluation, returning a result without comparing the remaining elements. +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<'g, A, F> Freeze for TxAncestors<'g, A, F>
where + F: Freeze,

§

impl<'g, A, F> RefUnwindSafe for TxAncestors<'g, A, F>
where + F: RefUnwindSafe, + A: RefUnwindSafe,

§

impl<'g, A, F> Send for TxAncestors<'g, A, F>
where + F: Send, + A: Sync,

§

impl<'g, A, F> Sync for TxAncestors<'g, A, F>
where + F: Sync, + A: Sync,

§

impl<'g, A, F> Unpin for TxAncestors<'g, A, F>
where + F: Unpin,

§

impl<'g, A, F> UnwindSafe for TxAncestors<'g, A, F>
where + F: UnwindSafe, + A: RefUnwindSafe,

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
§

impl<I> ByteIterExt for I
where + I: Iterator<Item = u8>,

§

fn bytes_to_fes(self) -> BytesToFes<Self>

Adapts the byte iterator to output GF32 field elements instead. Read more
§

impl<T> CheckedSum<Amount> for T
where + T: Iterator<Item = Amount>,

§

fn checked_sum(self) -> Option<Amount>

Calculate the sum over the iterator using checked arithmetic. If an over or underflow would +happen it returns None.
§

impl<T> CheckedSum<SignedAmount> for T
where + T: Iterator<Item = SignedAmount>,

§

fn checked_sum(self) -> Option<SignedAmount>

Calculate the sum over the iterator using checked arithmetic. If an over or underflow would +happen it returns None.
§

impl<I> Fe32IterExt for I
where + I: Iterator<Item = Fe32>,

§

fn fes_to_bytes(self) -> FesToBytes<Self>

Adapts the Fe32 iterator to output bytes instead. Read more
§

fn with_checksum<Ck>(self, hrp: &Hrp) -> Encoder<'_, Self, Ck>
where + Ck: Checksum,

Adapts the Fe32 iterator to encode the field elements into a bech32 address.
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.

-
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
Choose one element at random from the iterator. Read more
Choose one element at random from the iterator. Read more
Collects values at random from the iterator into a supplied buffer -until that buffer is filled. Read more
Collects amount values at random from the iterator into a vector. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for I
where + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<I> IteratorRandom for I
where + I: Iterator,

source§

fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
where + R: Rng + ?Sized,

Choose one element at random from the iterator. Read more
source§

fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
where + R: Rng + ?Sized,

Choose one element at random from the iterator. Read more
source§

fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
where + R: Rng + ?Sized,

Collects values at random from the iterator into a supplied buffer +until that buffer is filled. Read more
source§

fn choose_multiple<R>(self, rng: &mut R, amount: usize) -> Vec<Self::Item>
where + R: Rng + ?Sized,

Collects amount values at random from the iterator into a vector. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxDescendants.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxDescendants.html index b6d22e7ee5..252e3b2252 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxDescendants.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxDescendants.html @@ -1,42 +1,216 @@ -TxDescendants in bdk_chain::tx_graph - Rust
pub struct TxDescendants<'g, A, F> { /* private fields */ }
Expand description

An iterator that traverses transaction descendants.

-

Returned by the walk_descendants method of TxGraph.

-

Trait Implementations§

The type of the elements being iterated over.
Advances the iterator and returns the next value. Read more
🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
Returns the bounds on the remaining length of the iterator. Read more
Consumes the iterator, counting the number of iterations and returning it. Read more
Consumes the iterator, returning the last element. Read more
🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
Returns the nth element of the iterator. Read more
Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
Takes two iterators and creates a new iterator over both in sequence. Read more
‘Zips up’ two iterators into a single iterator of pairs. Read more
🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
Takes a closure and creates an iterator which calls that closure on each -element. Read more
Calls a closure on each element of an iterator. Read more
Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
Creates an iterator that both filters and maps. Read more
Creates an iterator which gives the current iteration count as well as -the next value. Read more
Creates an iterator which can use the peek and peek_mut methods +TxDescendants in bdk_chain::tx_graph - Rust

Struct bdk_chain::tx_graph::TxDescendants

source ·
pub struct TxDescendants<'g, A, F> { /* private fields */ }
Expand description

An iterator that traverses transaction descendants.

+

Returned by the walk_descendants method of TxGraph.

+

Trait Implementations§

source§

impl<'g, A, F, O> Iterator for TxDescendants<'g, A, F>
where + F: FnMut(usize, Txid) -> Option<O>,

§

type Item = O

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
Creates an iterator that skips elements based on a predicate. Read more
Creates an iterator that yields elements based on a predicate. Read more
Creates an iterator that both yields elements based on a predicate and maps. Read more
Creates an iterator that skips the first n elements. Read more
Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
An iterator adapter similar to fold that holds internal state and -produces a new iterator. Read more
Creates an iterator that works like map, but flattens nested structure. Read more
Creates an iterator which ends after the first None. Read more
Does something with each element of an iterator, passing the value on. Read more
Borrows an iterator, rather than consuming it. Read more
Transforms an iterator into a collection. Read more
🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
Consumes an iterator, creating two collections from it. Read more
🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
Folds every element into an accumulator by applying an operation, -returning the final result. Read more
Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
Tests if every element of the iterator matches a predicate. Read more
Tests if any element of the iterator matches a predicate. Read more
Searches for an element of an iterator that satisfies a predicate. Read more
Applies function to the elements of iterator and returns -the first non-none result. Read more
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
Searches for an element in an iterator, returning its index. Read more
Returns the element that gives the maximum value from the -specified function. Read more
Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
Returns the element that gives the minimum value from the -specified function. Read more
Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
Converts an iterator of pairs into a pair of containers. Read more
Creates an iterator which copies all of its elements. Read more
Creates an iterator which clones all of its elements. Read more
🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
Sums the elements of an iterator. Read more
Iterates over the entire iterator, multiplying all the elements Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
Lexicographically compares the elements of this Iterator with those -of another. Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
Determines if the elements of this Iterator are equal to those of -another. Read more
🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
Determines if the elements of this Iterator are unequal to those of -another. Read more
Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

Blanket Implementations§

Gets the TypeId of self. Read more
Immutably borrows from an owned value. Read more
Mutably borrows from an owned value. Read more
Adapts the byte iterator to output GF32 field elements instead. Read more
Calculate the sum over the iterator using checked arithmetic. If an over or underflow would -happen it returns None. Read more
Calculate the sum over the iterator using checked arithmetic. If an over or underflow would -happen it returns None. Read more
Adapts the Fe32 iterator to output bytes instead. Read more
Adapts the Fe32 iterator to encode the field elements into a bech32 address.

Returns the argument unchanged.

-

Calls U::from(self).

+their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit +evaluation, returning a result without comparing the remaining elements. +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<'g, A, F> Freeze for TxDescendants<'g, A, F>
where + F: Freeze,

§

impl<'g, A, F> RefUnwindSafe for TxDescendants<'g, A, F>
where + F: RefUnwindSafe, + A: RefUnwindSafe,

§

impl<'g, A, F> Send for TxDescendants<'g, A, F>
where + F: Send, + A: Sync,

§

impl<'g, A, F> Sync for TxDescendants<'g, A, F>
where + F: Sync, + A: Sync,

§

impl<'g, A, F> Unpin for TxDescendants<'g, A, F>
where + F: Unpin,

§

impl<'g, A, F> UnwindSafe for TxDescendants<'g, A, F>
where + F: UnwindSafe, + A: RefUnwindSafe,

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
§

impl<I> ByteIterExt for I
where + I: Iterator<Item = u8>,

§

fn bytes_to_fes(self) -> BytesToFes<Self>

Adapts the byte iterator to output GF32 field elements instead. Read more
§

impl<T> CheckedSum<Amount> for T
where + T: Iterator<Item = Amount>,

§

fn checked_sum(self) -> Option<Amount>

Calculate the sum over the iterator using checked arithmetic. If an over or underflow would +happen it returns None.
§

impl<T> CheckedSum<SignedAmount> for T
where + T: Iterator<Item = SignedAmount>,

§

fn checked_sum(self) -> Option<SignedAmount>

Calculate the sum over the iterator using checked arithmetic. If an over or underflow would +happen it returns None.
§

impl<I> Fe32IterExt for I
where + I: Iterator<Item = Fe32>,

§

fn fes_to_bytes(self) -> FesToBytes<Self>

Adapts the Fe32 iterator to output bytes instead. Read more
§

fn with_checksum<Ck>(self, hrp: &Hrp) -> Encoder<'_, Self, Ck>
where + Ck: Checksum,

Adapts the Fe32 iterator to encode the field elements into a bech32 address.
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.

-
The type of the elements being iterated over.
Which kind of iterator are we turning this into?
Creates an iterator from a value. Read more
Choose one element at random from the iterator. Read more
Choose one element at random from the iterator. Read more
Collects values at random from the iterator into a supplied buffer -until that buffer is filled. Read more
Collects amount values at random from the iterator into a vector. Read more
The type returned in the event of a conversion error.
Performs the conversion.
The type returned in the event of a conversion error.
Performs the conversion.
\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<I> IntoIterator for I
where + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<I> IteratorRandom for I
where + I: Iterator,

source§

fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
where + R: Rng + ?Sized,

Choose one element at random from the iterator. Read more
source§

fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
where + R: Rng + ?Sized,

Choose one element at random from the iterator. Read more
source§

fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
where + R: Rng + ?Sized,

Collects values at random from the iterator into a supplied buffer +until that buffer is filled. Read more
source§

fn choose_multiple<R>(self, rng: &mut R, amount: usize) -> Vec<Self::Item>
where + R: Rng + ?Sized,

Collects amount values at random from the iterator into a vector. Read more
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where + V: MultiLane<T>,

§

fn vzip(self) -> V

\ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxGraph.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxGraph.html index 0aa09ab7a3..d5da9902cf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxGraph.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxGraph.html @@ -1,34 +1,43 @@ -TxGraph in bdk_chain::tx_graph - Rust

Struct bdk_chain::tx_graph::TxGraph

source ·
pub struct TxGraph<A = ()> { /* private fields */ }
Expand description

A graph of transactions and spends.

-

See the module-level documentation for more.

-

Implementations§

Iterate over all tx outputs known by TxGraph.

+TxGraph in bdk_chain::tx_graph - Rust

Struct bdk_chain::tx_graph::TxGraph

source ·
pub struct TxGraph<A = ()> { /* private fields */ }
Expand description

A graph of transactions and spends.

+

See the module-level documentation for more.

+

Implementations§

source§

impl<A> TxGraph<A>

source

pub fn all_txouts(&self) -> impl Iterator<Item = (OutPoint, &TxOut)>

Iterate over all tx outputs known by TxGraph.

This includes txouts of both full transactions as well as floating transactions.

-

Iterate over floating txouts known by TxGraph.

+
source

pub fn floating_txouts(&self) -> impl Iterator<Item = (OutPoint, &TxOut)>

Iterate over floating txouts known by TxGraph.

Floating txouts are txouts that do not have the residing full transaction contained in the graph.

-

Iterate over all full transactions in the graph.

-

Get a transaction by txid. This only returns Some for full transactions.

-

Refer to get_txout for getting a specific [TxOut].

-

Get a transaction node by txid. This only returns Some for full transactions.

-

Obtains a single tx output (if any) at the specified outpoint.

-

Returns known outputs of a given txid.

-

Returns a BTreeMap of vout to output of the provided txid.

-

Calculates the fee of a given transaction. Returns 0 if tx is a coinbase transaction. +

source

pub fn full_txs(&self) -> impl Iterator<Item = TxNode<'_, Arc<Transaction>, A>>

Iterate over all full transactions in the graph.

+
source

pub fn get_tx(&self, txid: Txid) -> Option<Arc<Transaction>>

Get a transaction by txid. This only returns Some for full transactions.

+

Refer to get_txout for getting a specific [TxOut].

+
source

pub fn get_tx_node(&self, txid: Txid) -> Option<TxNode<'_, Arc<Transaction>, A>>

Get a transaction node by txid. This only returns Some for full transactions.

+
source

pub fn get_txout(&self, outpoint: OutPoint) -> Option<&TxOut>

Obtains a single tx output (if any) at the specified outpoint.

+
source

pub fn tx_outputs(&self, txid: Txid) -> Option<BTreeMap<u32, &TxOut>>

Returns known outputs of a given txid.

+

Returns a BTreeMap of vout to output of the provided txid.

+
source

pub fn calculate_fee(&self, tx: &Transaction) -> Result<u64, CalculateFeeError>

Calculates the fee of a given transaction. Returns 0 if tx is a coinbase transaction. Returns OK(_) if we have all the [TxOut]s being spent by tx in the graph (either as the full transactions or individual txouts).

To calculate the fee for a [Transaction] that depends on foreign [TxOut] values you must -first manually insert the foreign TxOuts into the tx graph using the insert_txout function. +first manually insert the foreign TxOuts into the tx graph using the insert_txout function. Only insert TxOuts you trust the values for!

Note tx does not have to be in the graph for this to work.

-

The transactions spending from this output.

-

TxGraph allows conflicting transactions within the graph. Obviously the transactions in +

source

pub fn outspends(&self, outpoint: OutPoint) -> &HashSet<Txid>

The transactions spending from this output.

+

TxGraph allows conflicting transactions within the graph. Obviously the transactions in the returned set will never be in the same active-chain.

-

Iterates over the transactions spending from txid.

+
source

pub fn tx_spends( + &self, + txid: Txid +) -> impl DoubleEndedIterator<Item = (u32, &HashSet<Txid>)> + '_

Iterates over the transactions spending from txid.

The iterator item is a union of (vout, txid-set) where:

  • vout is the provided txid’s outpoint that is being spent
  • txid-set is the set of txids spending the vout.
-

Creates an iterator that filters and maps ancestor transactions.

+
source§

impl<A: Clone + Ord> TxGraph<A>

source

pub fn walk_ancestors<'g, T, F, O>( + &'g self, + tx: T, + walk_map: F +) -> TxAncestors<'g, A, F> ⓘ
where + T: Into<Arc<Transaction>>, + F: FnMut(usize, Arc<Transaction>) -> Option<O> + 'g,

Creates an iterator that filters and maps ancestor transactions.

The iterator starts with the ancestors of the supplied tx (ancestor transactions of tx are transactions spent by tx). The supplied transaction is excluded from the iterator.

The supplied closure takes in two inputs (depth, ancestor_tx):

@@ -39,7 +48,12 @@ the Transaction is spending an output of the ancestor_tx

The supplied closure returns an Option<T>, allowing the caller to map each Transaction it visits and decide whether to visit ancestors.

-

Creates an iterator that filters and maps descendants from the starting txid.

+
source

pub fn walk_descendants<'g, F, O>( + &'g self, + txid: Txid, + walk_map: F +) -> TxDescendants<'_, A, F> ⓘ
where + F: FnMut(usize, Txid) -> Option<O> + 'g,

Creates an iterator that filters and maps descendants from the starting txid.

The supplied closure takes in two inputs (depth, descendant_txid):

  • depth is the distance between the starting txid and the descendant_txid. I.e., if the @@ -48,10 +62,18 @@ descendant is spending an output of the starting txid then de

The supplied closure returns an Option<T>, allowing the caller to map each node it visits and decide whether to visit descendants.

-

Creates an iterator that both filters and maps conflicting transactions (this includes +

source§

impl<A> TxGraph<A>

source

pub fn walk_conflicts<'g, F, O>( + &'g self, + tx: &'g Transaction, + walk_map: F +) -> TxDescendants<'_, A, F> ⓘ
where + F: FnMut(usize, Txid) -> Option<O> + 'g,

Creates an iterator that both filters and maps conflicting transactions (this includes descendants of directly-conflicting transactions, which are also considered conflicts).

-

Refer to Self::walk_descendants for walk_map usage.

-

Given a transaction, return an iterator of txids that directly conflict with the given +

Refer to Self::walk_descendants for walk_map usage.

+
source

pub fn direct_conflicts<'g>( + &'g self, + tx: &'g Transaction +) -> impl Iterator<Item = (usize, Txid)> + '_

Given a transaction, return an iterator of txids that directly conflict with the given transaction’s inputs (spends). The conflicting txids are returned with the given transaction’s vin (in which it conflicts).

Note that this only returns directly conflicting txids and won’t include:

@@ -59,60 +81,69 @@ transaction’s vin (in which it conflicts).

  • descendants of conflicting transactions (which are technically also conflicting)
  • transactions conflicting with the given transaction’s ancestors
  • -

    Get all transaction anchors known by TxGraph.

    -

    Whether the graph has any transactions or outputs in it.

    -

    Transform the TxGraph to have Anchors of another type.

    -

    This takes in a closure of signature FnMut(A) -> A2 which is called for each Anchor to +

    source

    pub fn all_anchors(&self) -> &BTreeSet<(A, Txid)>

    Get all transaction anchors known by TxGraph.

    +
    source

    pub fn is_empty(&self) -> bool

    Whether the graph has any transactions or outputs in it.

    +
    source§

    impl<A: Clone + Ord> TxGraph<A>

    source

    pub fn map_anchors<A2: Clone + Ord, F>(self, f: F) -> TxGraph<A2>
    where + F: FnMut(A) -> A2,

    Transform the TxGraph to have Anchors of another type.

    +

    This takes in a closure of signature FnMut(A) -> A2 which is called for each Anchor to transform it.

    -

    Construct a new TxGraph from a list of transactions.

    -

    Inserts the given [TxOut] at [OutPoint].

    +
    source

    pub fn new(txs: impl IntoIterator<Item = Transaction>) -> Self

    Construct a new TxGraph from a list of transactions.

    +
    source

    pub fn insert_txout(&mut self, outpoint: OutPoint, txout: TxOut) -> ChangeSet<A>

    Inserts the given [TxOut] at [OutPoint].

    Inserting floating txouts are useful for determining fee/feerate of transactions we care about.

    -

    The ChangeSet result will be empty if the outpoint (or a full transaction containing +

    The ChangeSet result will be empty if the outpoint (or a full transaction containing the outpoint) already existed in self.

    -

    Inserts the given transaction into TxGraph.

    -

    The ChangeSet returned will be empty if tx already exists.

    -

    Batch insert unconfirmed transactions.

    +
    source

    pub fn insert_tx<T: Into<Arc<Transaction>>>(&mut self, tx: T) -> ChangeSet<A>

    Inserts the given transaction into TxGraph.

    +

    The ChangeSet returned will be empty if tx already exists.

    +
    source

    pub fn batch_insert_unconfirmed( + &mut self, + txs: impl IntoIterator<Item = (Transaction, u64)> +) -> ChangeSet<A>

    Batch insert unconfirmed transactions.

    Items of txs are tuples containing the transaction and a last seen timestamp. The last seen communicates when the transaction is last seen in mempool which is used for -conflict-resolution (refer to TxGraph::insert_seen_at for details).

    -

    Inserts the given anchor into TxGraph.

    -

    The ChangeSet returned will be empty if graph already knows that txid exists in +conflict-resolution (refer to TxGraph::insert_seen_at for details).

    +
    source

    pub fn insert_anchor(&mut self, txid: Txid, anchor: A) -> ChangeSet<A>

    Inserts the given anchor into TxGraph.

    +

    The ChangeSet returned will be empty if graph already knows that txid exists in anchor.

    -

    Inserts the given seen_at for txid into TxGraph.

    -

    Note that TxGraph only keeps track of the latest seen_at. To batch +

    source

    pub fn insert_seen_at(&mut self, txid: Txid, seen_at: u64) -> ChangeSet<A>

    Inserts the given seen_at for txid into TxGraph.

    +

    Note that TxGraph only keeps track of the latest seen_at. To batch update all unconfirmed transactions with the latest seen_at, see -update_last_seen_unconfirmed.

    -

    Update the last seen time for all unconfirmed transactions.

    -

    This method updates the last seen unconfirmed time for this TxGraph by inserting +update_last_seen_unconfirmed.

    +
    source

    pub fn update_last_seen_unconfirmed(&mut self, seen_at: u64) -> ChangeSet<A>

    Update the last seen time for all unconfirmed transactions.

    +

    This method updates the last seen unconfirmed time for this TxGraph by inserting the given seen_at for every transaction not yet anchored to a confirmed block, -and returns the ChangeSet after applying all updates to self.

    +and returns the ChangeSet after applying all updates to self.

    This is useful for keeping track of the latest time a transaction was seen unconfirmed, which is important for evaluating transaction conflicts in the same -TxGraph. For details of how TxGraph resolves conflicts, see the docs for -try_get_chain_position.

    +TxGraph. For details of how TxGraph resolves conflicts, see the docs for +try_get_chain_position.

    A normal use of this method is to call it with the current system time. Although block headers contain a timestamp, using the header time would be less effective at tracking mempool transactions, because it can drift from actual clock time, plus we may want to update a transaction’s last seen time repeatedly between blocks.

    -
    Example
    +
    §Example
    let now = std::time::SystemTime::now()
         .duration_since(UNIX_EPOCH)
    -    .expect("valid duration")
    +    .expect("valid duration")
         .as_secs();
     let changeset = tx_graph.update_last_seen_unconfirmed(now);
     assert!(!changeset.last_seen.is_empty());
    -

    Note that TxGraph only keeps track of the latest seen_at, so the given time must +

    Note that TxGraph only keeps track of the latest seen_at, so the given time must by strictly greater than what is currently stored for a transaction to have an effect. -To insert a last seen time for a single txid, see insert_seen_at.

    -

    Extends this graph with another so that self becomes the union of the two sets of +To insert a last seen time for a single txid, see insert_seen_at.

    +
    source

    pub fn apply_update(&mut self, update: TxGraph<A>) -> ChangeSet<A>

    Extends this graph with another so that self becomes the union of the two sets of transactions.

    -

    The returned ChangeSet is the set difference between update and self (transactions that +

    The returned ChangeSet is the set difference between update and self (transactions that exist in update but not in self).

    -

    Determines the ChangeSet between self and an empty TxGraph.

    -

    Applies ChangeSet to TxGraph.

    -

    Get the position of the transaction in chain with tip chain_tip.

    -

    Chain data is fetched from chain, a ChainOracle implementation.

    +
    source

    pub fn initial_changeset(&self) -> ChangeSet<A>

    Determines the ChangeSet between self and an empty TxGraph.

    +
    source

    pub fn apply_changeset(&mut self, changeset: ChangeSet<A>)

    Applies ChangeSet to TxGraph.

    +
    source§

    impl<A: Anchor> TxGraph<A>

    source

    pub fn try_get_chain_position<C: ChainOracle>( + &self, + chain: &C, + chain_tip: BlockId, + txid: Txid +) -> Result<Option<ChainPosition<&A>>, C::Error>

    Get the position of the transaction in chain with tip chain_tip.

    +

    Chain data is fetched from chain, a ChainOracle implementation.

    This method returns Ok(None) if the transaction is not found in the chain, and no longer belongs in the mempool. The following factors are used to approximate whether an unconfirmed transaction exists in the mempool (not evicted):

    @@ -126,71 +157,138 @@ parameter is the max of all it’s descendants’ last_seen_unconfirmedlast_seen_unconfirmeds are the same, the transaction with the lower txid (by lexicographical order) is evicted. -
    Error
    -

    An error will occur if the ChainOracle implementation (chain) fails. If the -ChainOracle is infallible, get_chain_position can be used instead.

    -

    Get the position of the transaction in chain with tip chain_tip.

    -

    This is the infallible version of try_get_chain_position.

    -

    Get the txid of the spending transaction and where the spending transaction is observed in +

    §Error
    +

    An error will occur if the ChainOracle implementation (chain) fails. If the +ChainOracle is infallible, get_chain_position can be used instead.

    +
    source

    pub fn get_chain_position<C: ChainOracle<Error = Infallible>>( + &self, + chain: &C, + chain_tip: BlockId, + txid: Txid +) -> Option<ChainPosition<&A>>

    Get the position of the transaction in chain with tip chain_tip.

    +

    This is the infallible version of try_get_chain_position.

    +
    source

    pub fn try_get_chain_spend<C: ChainOracle>( + &self, + chain: &C, + chain_tip: BlockId, + outpoint: OutPoint +) -> Result<Option<(ChainPosition<&A>, Txid)>, C::Error>

    Get the txid of the spending transaction and where the spending transaction is observed in the chain of chain_tip.

    If no in-chain transaction spends outpoint, None will be returned.

    -
    Error
    -

    An error will occur only if the ChainOracle implementation (chain) fails.

    -

    If the ChainOracle is infallible, get_chain_spend can be used instead.

    -

    Get the txid of the spending transaction and where the spending transaction is observed in +

    §Error
    +

    An error will occur only if the ChainOracle implementation (chain) fails.

    +

    If the ChainOracle is infallible, get_chain_spend can be used instead.

    +
    source

    pub fn get_chain_spend<C: ChainOracle<Error = Infallible>>( + &self, + chain: &C, + static_block: BlockId, + outpoint: OutPoint +) -> Option<(ChainPosition<&A>, Txid)>

    Get the txid of the spending transaction and where the spending transaction is observed in the chain of chain_tip.

    -

    This is the infallible version of try_get_chain_spend

    -

    List graph transactions that are in chain with chain_tip.

    -

    Each transaction is represented as a CanonicalTx that contains where the transaction is -observed in-chain, and the TxNode.

    -
    Error
    -

    If the ChainOracle implementation (chain) fails, an error will be returned with the +

    This is the infallible version of try_get_chain_spend

    +
    source

    pub fn try_list_chain_txs<'a, C: ChainOracle + 'a>( + &'a self, + chain: &'a C, + chain_tip: BlockId +) -> impl Iterator<Item = Result<CanonicalTx<'a, Arc<Transaction>, A>, C::Error>>

    List graph transactions that are in chain with chain_tip.

    +

    Each transaction is represented as a CanonicalTx that contains where the transaction is +observed in-chain, and the TxNode.

    +
    §Error
    +

    If the ChainOracle implementation (chain) fails, an error will be returned with the returned item.

    -

    If the ChainOracle is infallible, list_chain_txs can be used instead.

    -

    List graph transactions that are in chain with chain_tip.

    -

    This is the infallible version of try_list_chain_txs.

    -

    Get a filtered list of outputs from the given outpoints that are in chain with +

    If the ChainOracle is infallible, list_chain_txs can be used instead.

    +
    source

    pub fn list_chain_txs<'a, C: ChainOracle + 'a>( + &'a self, + chain: &'a C, + chain_tip: BlockId +) -> impl Iterator<Item = CanonicalTx<'a, Arc<Transaction>, A>>

    List graph transactions that are in chain with chain_tip.

    +

    This is the infallible version of try_list_chain_txs.

    +
    source

    pub fn try_filter_chain_txouts<'a, C: ChainOracle + 'a, OI: Clone + 'a>( + &'a self, + chain: &'a C, + chain_tip: BlockId, + outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a +) -> impl Iterator<Item = Result<(OI, FullTxOut<A>), C::Error>> + 'a

    Get a filtered list of outputs from the given outpoints that are in chain with chain_tip.

    outpoints is a list of outpoints we are interested in, coupled with an outpoint identifier (OI) for convenience. If OI is not necessary, the caller can use (), or -Iterator::enumerate over a list of [OutPoint]s.

    +Iterator::enumerate over a list of [OutPoint]s.

    Floating outputs (i.e., outputs for which we don’t have the full transaction in the graph) are ignored.

    -
    Error
    -

    An Iterator::Item can be an Err if the ChainOracle implementation (chain) +

    §Error
    +

    An Iterator::Item can be an Err if the ChainOracle implementation (chain) fails.

    -

    If the ChainOracle implementation is infallible, filter_chain_txouts can be used +

    If the ChainOracle implementation is infallible, filter_chain_txouts can be used instead.

    -

    Get a filtered list of outputs from the given outpoints that are in chain with +

    source

    pub fn filter_chain_txouts<'a, C: ChainOracle<Error = Infallible> + 'a, OI: Clone + 'a>( + &'a self, + chain: &'a C, + chain_tip: BlockId, + outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a +) -> impl Iterator<Item = (OI, FullTxOut<A>)> + 'a

    Get a filtered list of outputs from the given outpoints that are in chain with chain_tip.

    -

    This is the infallible version of try_filter_chain_txouts.

    -

    Get a filtered list of unspent outputs (UTXOs) from the given outpoints that are in +

    This is the infallible version of try_filter_chain_txouts.

    +
    source

    pub fn try_filter_chain_unspents<'a, C: ChainOracle + 'a, OI: Clone + 'a>( + &'a self, + chain: &'a C, + chain_tip: BlockId, + outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a +) -> impl Iterator<Item = Result<(OI, FullTxOut<A>), C::Error>> + 'a

    Get a filtered list of unspent outputs (UTXOs) from the given outpoints that are in chain with chain_tip.

    outpoints is a list of outpoints we are interested in, coupled with an outpoint identifier (OI) for convenience. If OI is not necessary, the caller can use (), or -Iterator::enumerate over a list of [OutPoint]s.

    +Iterator::enumerate over a list of [OutPoint]s.

    Floating outputs are ignored.

    -
    Error
    -

    An Iterator::Item can be an Err if the ChainOracle implementation (chain) +

    §Error
    +

    An Iterator::Item can be an Err if the ChainOracle implementation (chain) fails.

    -

    If the ChainOracle implementation is infallible, filter_chain_unspents can be used +

    If the ChainOracle implementation is infallible, filter_chain_unspents can be used instead.

    -

    Get a filtered list of unspent outputs (UTXOs) from the given outpoints that are in +

    source

    pub fn filter_chain_unspents<'a, C: ChainOracle<Error = Infallible> + 'a, OI: Clone + 'a>( + &'a self, + chain: &'a C, + chain_tip: BlockId, + txouts: impl IntoIterator<Item = (OI, OutPoint)> + 'a +) -> impl Iterator<Item = (OI, FullTxOut<A>)> + 'a

    Get a filtered list of unspent outputs (UTXOs) from the given outpoints that are in chain with chain_tip.

    -

    This is the infallible version of try_filter_chain_unspents.

    -

    Get the total balance of outpoints that are in chain of chain_tip.

    +

    This is the infallible version of try_filter_chain_unspents.

    +
    source

    pub fn try_balance<C: ChainOracle, OI: Clone>( + &self, + chain: &C, + chain_tip: BlockId, + outpoints: impl IntoIterator<Item = (OI, OutPoint)>, + trust_predicate: impl FnMut(&OI, &Script) -> bool +) -> Result<Balance, C::Error>

    Get the total balance of outpoints that are in chain of chain_tip.

    The output of trust_predicate should return true for scripts that we trust.

    outpoints is a list of outpoints we are interested in, coupled with an outpoint identifier (OI) for convenience. If OI is not necessary, the caller can use (), or -Iterator::enumerate over a list of [OutPoint]s.

    -

    If the provided ChainOracle implementation (chain) is infallible, balance can be +Iterator::enumerate over a list of [OutPoint]s.

    +

    If the provided ChainOracle implementation (chain) is infallible, balance can be used instead.

    -

    Get the total balance of outpoints that are in chain of chain_tip.

    -

    This is the infallible version of try_balance.

    -

    Trait Implementations§

    Converts this type into a shared reference of the (usually inferred) input type.
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    source

    pub fn balance<C: ChainOracle<Error = Infallible>, OI: Clone>( + &self, + chain: &C, + chain_tip: BlockId, + outpoints: impl IntoIterator<Item = (OI, OutPoint)>, + trust_predicate: impl FnMut(&OI, &Script) -> bool +) -> Balance

    Get the total balance of outpoints that are in chain of chain_tip.

    +

    This is the infallible version of try_balance.

    +

    Trait Implementations§

    source§

    impl<A> AsRef<TxGraph<A>> for TxGraph<A>

    source§

    fn as_ref(&self) -> &TxGraph<A>

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl<A: Clone> Clone for TxGraph<A>

    source§

    fn clone(&self) -> TxGraph<A>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<A: Debug> Debug for TxGraph<A>

    source§

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

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

    impl<A> Default for TxGraph<A>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<A: PartialEq> PartialEq for TxGraph<A>

    source§

    fn eq(&self, other: &TxGraph<A>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<A> StructuralPartialEq for TxGraph<A>

    Auto Trait Implementations§

    §

    impl<A> Freeze for TxGraph<A>

    §

    impl<A> RefUnwindSafe for TxGraph<A>
    where + A: RefUnwindSafe,

    §

    impl<A> Send for TxGraph<A>
    where + A: Send,

    §

    impl<A> Sync for TxGraph<A>
    where + A: Sync,

    §

    impl<A> Unpin for TxGraph<A>

    §

    impl<A> UnwindSafe for TxGraph<A>
    where + A: RefUnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxNode.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxNode.html index 3095ceb6f5..3ef13f25ee 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxNode.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_chain/tx_graph/struct.TxNode.html @@ -1,19 +1,40 @@ -TxNode in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::TxNode

    source ·
    pub struct TxNode<'a, T, A> {
    +TxNode in bdk_chain::tx_graph - Rust

    Struct bdk_chain::tx_graph::TxNode

    source ·
    pub struct TxNode<'a, T, A> {
         pub txid: Txid,
         pub tx: T,
         pub anchors: &'a BTreeSet<A>,
         pub last_seen_unconfirmed: u64,
    -}
    Expand description

    A transaction node in the TxGraph.

    -

    Fields§

    §txid: Txid

    Txid of the transaction.

    -
    §tx: T

    A partial or full representation of the transaction.

    -
    §anchors: &'a BTreeSet<A>

    The blocks that the transaction is “anchored” in.

    -
    §last_seen_unconfirmed: u64

    The last-seen unix timestamp of the transaction as unconfirmed.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    The resulting type after dereferencing.
    Dereferences the value.
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    A transaction node in the TxGraph.

    +

    Fields§

    §txid: Txid

    Txid of the transaction.

    +
    §tx: T

    A partial or full representation of the transaction.

    +
    §anchors: &'a BTreeSet<A>

    The blocks that the transaction is “anchored” in.

    +
    §last_seen_unconfirmed: u64

    The last-seen unix timestamp of the transaction as unconfirmed.

    +

    Trait Implementations§

    source§

    impl<'a, T: Clone, A: Clone> Clone for TxNode<'a, T, A>

    source§

    fn clone(&self) -> TxNode<'a, T, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<'a, T: Debug, A: Debug> Debug for TxNode<'a, T, A>

    source§

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

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

    impl<'a, T, A> Deref for TxNode<'a, T, A>

    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<'a, T: Ord, A: Ord> Ord for TxNode<'a, T, A>

    source§

    fn cmp(&self, other: &TxNode<'a, T, A>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl<'a, T: PartialEq, A: PartialEq> PartialEq for TxNode<'a, T, A>

    source§

    fn eq(&self, other: &TxNode<'a, T, A>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd for TxNode<'a, T, A>

    source§

    fn partial_cmp(&self, other: &TxNode<'a, T, A>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl<'a, T: Eq, A: Eq> Eq for TxNode<'a, T, A>

    source§

    impl<'a, T, A> StructuralPartialEq for TxNode<'a, T, A>

    Auto Trait Implementations§

    §

    impl<'a, T, A> Freeze for TxNode<'a, T, A>
    where + T: Freeze,

    §

    impl<'a, T, A> RefUnwindSafe for TxNode<'a, T, A>
    where + T: RefUnwindSafe, + A: RefUnwindSafe,

    §

    impl<'a, T, A> Send for TxNode<'a, T, A>
    where + T: Send, + A: Sync,

    §

    impl<'a, T, A> Sync for TxNode<'a, T, A>
    where + T: Sync, + A: Sync,

    §

    impl<'a, T, A> Unpin for TxNode<'a, T, A>
    where + T: Unpin,

    §

    impl<'a, T, A> UnwindSafe for TxNode<'a, T, A>
    where + T: UnwindSafe, + A: RefUnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/all.html index d5bb8549ef..559089ed28 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/constant.TXIN_BASE_WEIGHT.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/constant.TXIN_BASE_WEIGHT.html index b7b808cc25..5a0d625a32 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/constant.TXIN_BASE_WEIGHT.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/constant.TXIN_BASE_WEIGHT.html @@ -1,3 +1,3 @@ -TXIN_BASE_WEIGHT in bdk_coin_select - Rust
    pub const TXIN_BASE_WEIGHT: u32 = _; // 160u32
    Expand description

    Txin “base” fields include outpoint (32+4) and nSequence (4). This does not include +TXIN_BASE_WEIGHT in bdk_coin_select - Rust

    Constant bdk_coin_select::TXIN_BASE_WEIGHT

    source ·
    pub const TXIN_BASE_WEIGHT: u32 = _; // 160u32
    Expand description

    Txin “base” fields include outpoint (32+4) and nSequence (4). This does not include scriptSigLen or scriptSig.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.BnbLimit.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.BnbLimit.html index 896d527319..772e048ae5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.BnbLimit.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.BnbLimit.html @@ -1,9 +1,16 @@ -BnbLimit in bdk_coin_select - Rust
    pub enum BnbLimit {
    +BnbLimit in bdk_coin_select - Rust

    Enum bdk_coin_select::BnbLimit

    source ·
    pub enum BnbLimit {
         Rounds(usize),
         Duration(Duration),
    -}
    Expand description

    Determines how we should limit rounds of branch and bound.

    -

    Variants§

    §

    Rounds(usize)

    §

    Duration(Duration)

    Trait Implementations§

    Converts to this type from the input type.
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Determines how we should limit rounds of branch and bound.

    +

    Variants§

    §

    Rounds(usize)

    §

    Duration(Duration)

    Trait Implementations§

    source§

    impl From<Duration> for BnbLimit

    source§

    fn from(v: Duration) -> Self

    Converts to this type from the input type.
    source§

    impl From<usize> for BnbLimit

    source§

    fn from(v: usize) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.BranchStrategy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.BranchStrategy.html index 4639c84cd7..e99fc94809 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.BranchStrategy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.BranchStrategy.html @@ -1,13 +1,20 @@ -BranchStrategy in bdk_coin_select - Rust
    pub enum BranchStrategy {
    +BranchStrategy in bdk_coin_select - Rust

    Enum bdk_coin_select::BranchStrategy

    source ·
    pub enum BranchStrategy {
         Continue,
         SkipInclusion,
         SkipBoth,
    -}
    Expand description

    Strategy in which we should branch.

    -

    Variants§

    §

    Continue

    We continue exploring subtrees of this node, starting with the inclusion branch.

    +}
    Expand description

    Strategy in which we should branch.

    +

    Variants§

    §

    Continue

    We continue exploring subtrees of this node, starting with the inclusion branch.

    §

    SkipInclusion

    We continue exploring ONLY the omission branch of this node, skipping the inclusion branch.

    §

    SkipBoth

    We skip both the inclusion and omission branches of this node.

    -

    Implementations§

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Implementations§

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.ExcessStrategyKind.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.ExcessStrategyKind.html index e64e2ad53a..54033098a4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.ExcessStrategyKind.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.ExcessStrategyKind.html @@ -1,13 +1,27 @@ -ExcessStrategyKind in bdk_coin_select - Rust
    pub enum ExcessStrategyKind {
    +ExcessStrategyKind in bdk_coin_select - Rust

    Enum bdk_coin_select::ExcessStrategyKind

    source ·
    pub enum ExcessStrategyKind {
         ToFee,
         ToRecipient,
         ToDrain,
    -}

    Variants§

    §

    ToFee

    §

    ToRecipient

    §

    ToDrain

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    ToFee

    §

    ToRecipient

    §

    ToDrain

    Trait Implementations§

    source§

    impl Clone for ExcessStrategyKind

    source§

    fn clone(&self) -> ExcessStrategyKind

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExcessStrategyKind

    source§

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

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

    impl Display for ExcessStrategyKind

    source§

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

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

    impl Hash for ExcessStrategyKind

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for ExcessStrategyKind

    source§

    fn cmp(&self, other: &ExcessStrategyKind) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for ExcessStrategyKind

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for ExcessStrategyKind

    source§

    fn partial_cmp(&self, other: &ExcessStrategyKind) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Copy for ExcessStrategyKind

    source§

    impl Eq for ExcessStrategyKind

    source§

    impl StructuralPartialEq for ExcessStrategyKind

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.SelectionConstraint.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.SelectionConstraint.html index 942c7472ff..3aa459992e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.SelectionConstraint.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/enum.SelectionConstraint.html @@ -1,16 +1,25 @@ -SelectionConstraint in bdk_coin_select - Rust
    pub enum SelectionConstraint {
    +SelectionConstraint in bdk_coin_select - Rust

    Enum bdk_coin_select::SelectionConstraint

    source ·
    pub enum SelectionConstraint {
         TargetValue,
         TargetFee,
         MinAbsoluteFee,
         MinDrainValue,
    -}

    Variants§

    §

    TargetValue

    The target is not met

    +}

    Variants§

    §

    TargetValue

    The target is not met

    §

    TargetFee

    The target fee (given the feerate) is not met

    §

    MinAbsoluteFee

    Min absolute fee is not met

    §

    MinDrainValue

    Min drain value is not met

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for SelectionConstraint

    source§

    fn clone(&self) -> SelectionConstraint

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SelectionConstraint

    source§

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

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

    impl Display for SelectionConstraint

    source§

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

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

    impl PartialEq for SelectionConstraint

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for SelectionConstraint

    source§

    impl Eq for SelectionConstraint

    source§

    impl StructuralPartialEq for SelectionConstraint

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/fn.coin_select_bnb.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/fn.coin_select_bnb.html index 03b9026cf5..6ef81c66b7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/fn.coin_select_bnb.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/fn.coin_select_bnb.html @@ -1,4 +1,8 @@ -coin_select_bnb in bdk_coin_select - Rust
    pub fn coin_select_bnb<L>(
        limit: L,
        selector: CoinSelector<'_>
    ) -> Option<CoinSelector<'_>>where
        L: Into<BnbLimit>,
    Expand description

    This is a variation of the Branch and Bound Coin Selection algorithm designed by Murch (as seen +coin_select_bnb in bdk_coin_select - Rust

    Function bdk_coin_select::coin_select_bnb

    source ·
    pub fn coin_select_bnb<L>(
    +    limit: L,
    +    selector: CoinSelector<'_>
    +) -> Option<CoinSelector<'_>>
    where + L: Into<BnbLimit>,
    Expand description

    This is a variation of the Branch and Bound Coin Selection algorithm designed by Murch (as seen in Bitcoin Core).

    The differences are as follows:

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/index.html index 85a19367f8..697b7966c8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/index.html @@ -1,5 +1,5 @@ -bdk_coin_select - Rust

    Crate bdk_coin_select

    source ·

    Structs

    Bnb represents the current state of the BnB algorithm.
    CoinSelector selects and deselects from a set of candidates.
    A WeightedValue represents an input candidate for CoinSelector. This can either be a -single UTXO, or a group of UTXOs that should be spent together.

    Enums

    Determines how we should limit rounds of branch and bound.
    Strategy in which we should branch.

    Constants

    Txin “base” fields include outpoint (32+4) and nSequence (4). This does not include -scriptSigLen or scriptSig.

    Functions

    This is a variation of the Branch and Bound Coin Selection algorithm designed by Murch (as seen -in Bitcoin Core).

    Type Definitions

    Closure to decide the branching strategy, alongside a score (if the current selection is a -candidate solution).
    \ No newline at end of file +bdk_coin_select - Rust

    Crate bdk_coin_select

    source ·

    Structs§

    Enums§

    Constants§

    • Txin “base” fields include outpoint (32+4) and nSequence (4). This does not include +scriptSigLen or scriptSig.

    Functions§

    • This is a variation of the Branch and Bound Coin Selection algorithm designed by Murch (as seen +in Bitcoin Core).

    Type Aliases§

    • Closure to decide the branching strategy, alongside a score (if the current selection is a +candidate solution).
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/sidebar-items.js index 8c1ff9aba0..f62c0300bf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["TXIN_BASE_WEIGHT","Txin “base” fields include `outpoint` (32+4) and `nSequence` (4). This does not include `scriptSigLen` or `scriptSig`."]],"enum":[["BnbLimit","Determines how we should limit rounds of branch and bound."],["BranchStrategy","Strategy in which we should branch."],["ExcessStrategyKind",""],["SelectionConstraint",""]],"fn":[["coin_select_bnb","This is a variation of the Branch and Bound Coin Selection algorithm designed by Murch (as seen in Bitcoin Core)."]],"struct":[["Bnb","[`Bnb`] represents the current state of the BnB algorithm."],["BnbIter",""],["CoinSelector","[`CoinSelector`] selects and deselects from a set of candidates."],["CoinSelectorOpt",""],["ExcessStrategy",""],["Selection",""],["SelectionError",""],["WeightedValue","A [`WeightedValue`] represents an input candidate for [`CoinSelector`]. This can either be a single UTXO, or a group of UTXOs that should be spent together."]],"type":[["DecideStrategy","Closure to decide the branching strategy, alongside a score (if the current selection is a candidate solution)."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["TXIN_BASE_WEIGHT"],"enum":["BnbLimit","BranchStrategy","ExcessStrategyKind","SelectionConstraint"],"fn":["coin_select_bnb"],"struct":["Bnb","BnbIter","CoinSelector","CoinSelectorOpt","ExcessStrategy","Selection","SelectionError","WeightedValue"],"type":["DecideStrategy"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.Bnb.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.Bnb.html index 1d5c0a5ce4..7ee3fc1a76 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.Bnb.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.Bnb.html @@ -1,22 +1,42 @@ -Bnb in bdk_coin_select - Rust

    Struct bdk_coin_select::Bnb

    source ·
    pub struct Bnb<'c, S> {
    +Bnb in bdk_coin_select - Rust

    Struct bdk_coin_select::Bnb

    source ·
    pub struct Bnb<'c, S> {
         pub pool: Vec<(usize, &'c WeightedValue)>,
         pub pool_pos: usize,
         pub best_score: S,
         pub selection: CoinSelector<'c>,
         pub rem_abs: u64,
         pub rem_eff: i64,
    -}
    Expand description

    Bnb represents the current state of the BnB algorithm.

    -

    Fields§

    §pool: Vec<(usize, &'c WeightedValue)>§pool_pos: usize§best_score: S§selection: CoinSelector<'c>§rem_abs: u64§rem_eff: i64

    Implementations§

    Creates a new Bnb.

    -

    Turns our Bnb state into an iterator.

    +}
    Expand description

    Bnb represents the current state of the BnB algorithm.

    +

    Fields§

    §pool: Vec<(usize, &'c WeightedValue)>§pool_pos: usize§best_score: S§selection: CoinSelector<'c>§rem_abs: u64§rem_eff: i64

    Implementations§

    source§

    impl<'c, S: Ord> Bnb<'c, S>

    source

    pub fn new( + selector: CoinSelector<'c>, + pool: Vec<(usize, &'c WeightedValue)>, + max: S +) -> Self

    Creates a new Bnb.

    +
    source

    pub fn into_iter<'f>( + self, + strategy: &'f DecideStrategy<'c, S> +) -> BnbIter<'c, 'f, S> ⓘ

    Turns our Bnb state into an iterator.

    strategy should assess our current selection/node and determine the branching strategy and whether this selection is a candidate solution (if so, return the selection score).

    -

    Attempt to backtrack to the previously selected node’s omission branch, return false +

    source

    pub fn backtrack(&mut self) -> bool

    Attempt to backtrack to the previously selected node’s omission branch, return false otherwise (no more solutions).

    -

    Continue down this branch and skip the inclusion branch if specified.

    -

    Compare the advertised score with the current best. The new best will be the smaller value. Return true +

    source

    pub fn forward(&mut self, skip: bool)

    Continue down this branch and skip the inclusion branch if specified.

    +
    source

    pub fn advertise_new_score(&mut self, score: S) -> bool

    Compare the advertised score with the current best. The new best will be the smaller value. Return true if best is replaced.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Auto Trait Implementations§

    §

    impl<'c, S> Freeze for Bnb<'c, S>
    where + S: Freeze,

    §

    impl<'c, S> RefUnwindSafe for Bnb<'c, S>
    where + S: RefUnwindSafe,

    §

    impl<'c, S> Send for Bnb<'c, S>
    where + S: Send,

    §

    impl<'c, S> Sync for Bnb<'c, S>
    where + S: Sync,

    §

    impl<'c, S> Unpin for Bnb<'c, S>
    where + S: Unpin,

    §

    impl<'c, S> UnwindSafe for Bnb<'c, S>
    where + S: UnwindSafe,

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.BnbIter.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.BnbIter.html index 60aa3553df..7c99ed6c41 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.BnbIter.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.BnbIter.html @@ -1,38 +1,198 @@ -BnbIter in bdk_coin_select - Rust

    Struct bdk_coin_select::BnbIter

    source ·
    pub struct BnbIter<'c, 'f, S> { /* private fields */ }

    Trait Implementations§

    The type of the elements being iterated over.
    Advances the iterator and returns the next value. Read more
    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    Returns the bounds on the remaining length of the iterator. Read more
    Consumes the iterator, counting the number of iterations and returning it. Read more
    Consumes the iterator, returning the last element. Read more
    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    Returns the nth element of the iterator. Read more
    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    Takes two iterators and creates a new iterator over both in sequence. Read more
    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    Calls a closure on each element of an iterator. Read more
    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    Creates an iterator that both filters and maps. Read more
    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    Creates an iterator which can use the peek and peek_mut methods +BnbIter in bdk_coin_select - Rust

    Struct bdk_coin_select::BnbIter

    source ·
    pub struct BnbIter<'c, 'f, S> { /* private fields */ }

    Trait Implementations§

    source§

    impl<'c, 'f, S: Ord + Copy + Display> Iterator for BnbIter<'c, 'f, S>

    §

    type Item = Option<CoinSelector<'c>>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    Creates an iterator that skips elements based on a predicate. Read more
    Creates an iterator that yields elements based on a predicate. Read more
    Creates an iterator that both yields elements based on a predicate and maps. Read more
    Creates an iterator that skips the first n elements. Read more
    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    An iterator adapter similar to fold that holds internal state and -produces a new iterator. Read more
    Creates an iterator that works like map, but flattens nested structure. Read more
    Creates an iterator which ends after the first None. Read more
    Does something with each element of an iterator, passing the value on. Read more
    Borrows an iterator, rather than consuming it. Read more
    Transforms an iterator into a collection. Read more
    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    Consumes an iterator, creating two collections from it. Read more
    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    Tests if every element of the iterator matches a predicate. Read more
    Tests if any element of the iterator matches a predicate. Read more
    Searches for an element of an iterator that satisfies a predicate. Read more
    Applies function to the elements of iterator and returns -the first non-none result. Read more
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    Searches for an element in an iterator, returning its index. Read more
    Returns the element that gives the maximum value from the -specified function. Read more
    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    Returns the element that gives the minimum value from the -specified function. Read more
    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    Converts an iterator of pairs into a pair of containers. Read more
    Creates an iterator which copies all of its elements. Read more
    Creates an iterator which clones all of its elements. Read more
    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    Sums the elements of an iterator. Read more
    Iterates over the entire iterator, multiplying all the elements Read more
    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    Lexicographically compares the elements of this Iterator with those -of another. Read more
    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    Determines if the elements of this Iterator are equal to those of -another. Read more
    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    Determines if the elements of this Iterator are unequal to those of -another. Read more
    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit +evaluation, returning a result without comparing the remaining elements. +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'c, 'f, S> Freeze for BnbIter<'c, 'f, S>
    where + S: Freeze,

    §

    impl<'c, 'f, S> !RefUnwindSafe for BnbIter<'c, 'f, S>

    §

    impl<'c, 'f, S> !Send for BnbIter<'c, 'f, S>

    §

    impl<'c, 'f, S> !Sync for BnbIter<'c, 'f, S>

    §

    impl<'c, 'f, S> Unpin for BnbIter<'c, 'f, S>
    where + S: Unpin,

    §

    impl<'c, 'f, S> !UnwindSafe for BnbIter<'c, 'f, S>

    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> 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.

    -
    The type of the elements being iterated over.
    Which kind of iterator are we turning this into?
    Creates an iterator from a value. Read more
    Choose one element at random from the iterator. Read more
    Choose one element at random from the iterator. Read more
    Collects values at random from the iterator into a supplied buffer -until that buffer is filled. Read more
    Collects amount values at random from the iterator into a vector. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorRandom for I
    where + I: Iterator,

    source§

    fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
    where + R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
    where + R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
    where + R: Rng + ?Sized,

    Collects values at random from the iterator into a supplied buffer +until that buffer is filled. Read more
    source§

    fn choose_multiple<R>(self, rng: &mut R, amount: usize) -> Vec<Self::Item>
    where + R: Rng + ?Sized,

    Collects amount values at random from the iterator into a vector. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.CoinSelector.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.CoinSelector.html index d9ea401261..af3691f441 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.CoinSelector.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.CoinSelector.html @@ -1,17 +1,30 @@ -CoinSelector in bdk_coin_select - Rust
    pub struct CoinSelector<'a> {
    +CoinSelector in bdk_coin_select - Rust

    Struct bdk_coin_select::CoinSelector

    source ·
    pub struct CoinSelector<'a> {
         pub opts: &'a CoinSelectorOpt,
         pub candidates: &'a Vec<WeightedValue>,
    -    /* private fields */
    -}
    Expand description

    CoinSelector selects and deselects from a set of candidates.

    -

    Fields§

    §opts: &'a CoinSelectorOpt§candidates: &'a Vec<WeightedValue>

    Implementations§

    Weight sum of all selected inputs.

    -

    Effective value sum of all selected inputs.

    -

    Absolute value sum of all selected inputs.

    -

    Waste sum of all selected inputs.

    -

    Current weight of template tx + selected inputs.

    -

    Current excess.

    -

    This is the effective target value.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    + /* private fields */ +}
    Expand description

    CoinSelector selects and deselects from a set of candidates.

    +

    Fields§

    §opts: &'a CoinSelectorOpt§candidates: &'a Vec<WeightedValue>

    Implementations§

    source§

    impl<'a> CoinSelector<'a>

    source

    pub fn candidate(&self, index: usize) -> &WeightedValue

    source

    pub fn new( + candidates: &'a Vec<WeightedValue>, + opts: &'a CoinSelectorOpt +) -> Self

    source

    pub fn select(&mut self, index: usize) -> bool

    source

    pub fn deselect(&mut self, index: usize) -> bool

    source

    pub fn is_selected(&self, index: usize) -> bool

    source

    pub fn is_empty(&self) -> bool

    source

    pub fn selected_weight(&self) -> u32

    Weight sum of all selected inputs.

    +
    source

    pub fn selected_effective_value(&self) -> i64

    Effective value sum of all selected inputs.

    +
    source

    pub fn selected_absolute_value(&self) -> u64

    Absolute value sum of all selected inputs.

    +
    source

    pub fn selected_waste(&self) -> i64

    Waste sum of all selected inputs.

    +
    source

    pub fn current_weight(&self) -> u32

    Current weight of template tx + selected inputs.

    +
    source

    pub fn current_excess(&self) -> i64

    Current excess.

    +
    source

    pub fn effective_target(&self) -> i64

    This is the effective target value.

    +
    source

    pub fn selected_count(&self) -> usize

    source

    pub fn selected(&self) -> impl Iterator<Item = (usize, &'a WeightedValue)> + '_

    source

    pub fn unselected( + &self +) -> impl Iterator<Item = (usize, &'a WeightedValue)> + '_

    source

    pub fn selected_indexes(&self) -> impl Iterator<Item = usize> + '_

    source

    pub fn unselected_indexes(&self) -> impl Iterator<Item = usize> + '_

    source

    pub fn all_selected(&self) -> bool

    source

    pub fn select_all(&mut self)

    source

    pub fn select_until_finished(&mut self) -> Result<Selection, SelectionError>

    source

    pub fn finish(&self) -> Result<Selection, SelectionError>

    Trait Implementations§

    source§

    impl<'a> Clone for CoinSelector<'a>

    source§

    fn clone(&self) -> CoinSelector<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for CoinSelector<'a>

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'a> Freeze for CoinSelector<'a>

    §

    impl<'a> RefUnwindSafe for CoinSelector<'a>

    §

    impl<'a> Send for CoinSelector<'a>

    §

    impl<'a> Sync for CoinSelector<'a>

    §

    impl<'a> Unpin for CoinSelector<'a>

    §

    impl<'a> UnwindSafe for CoinSelector<'a>

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.CoinSelectorOpt.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.CoinSelectorOpt.html index f0d8b6f716..43b6729fa6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.CoinSelectorOpt.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.CoinSelectorOpt.html @@ -1,4 +1,4 @@ -CoinSelectorOpt in bdk_coin_select - Rust
    pub struct CoinSelectorOpt {
    +CoinSelectorOpt in bdk_coin_select - Rust

    Struct bdk_coin_select::CoinSelectorOpt

    source ·
    pub struct CoinSelectorOpt {
         pub target_value: Option<u64>,
         pub max_extra_target: u64,
         pub target_feerate: f32,
    @@ -8,19 +8,31 @@
         pub drain_weight: u32,
         pub spend_drain_weight: u32,
         pub min_drain_value: u64,
    -}

    Fields§

    §target_value: Option<u64>

    The value we need to select. +}

    Fields§

    §target_value: Option<u64>

    The value we need to select. If the value is None, then the selection will be complete if it can pay for the drain output and satisfy the other constraints (e.g., minimum fees).

    -
    §max_extra_target: u64

    Additional leeway for the target value.

    -
    §target_feerate: f32

    The feerate we should try and achieve in sats per weight unit.

    -
    §long_term_feerate: Option<f32>

    The feerate

    -
    §min_absolute_fee: u64

    The minimum absolute fee. I.e., needed for RBF.

    -
    §base_weight: u32

    The weight of the template transaction, including fixed fields and outputs.

    -
    §drain_weight: u32

    Additional weight if we include the drain (change) output.

    -
    §spend_drain_weight: u32

    Weight of spending the drain (change) output in the future.

    -
    §min_drain_value: u64

    Minimum value allowed for a drain (change) output.

    -

    Implementations§

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    §max_extra_target: u64

    Additional leeway for the target value.

    +
    §target_feerate: f32

    The feerate we should try and achieve in sats per weight unit.

    +
    §long_term_feerate: Option<f32>

    The feerate

    +
    §min_absolute_fee: u64

    The minimum absolute fee. I.e., needed for RBF.

    +
    §base_weight: u32

    The weight of the template transaction, including fixed fields and outputs.

    +
    §drain_weight: u32

    Additional weight if we include the drain (change) output.

    +
    §spend_drain_weight: u32

    Weight of spending the drain (change) output in the future.

    +
    §min_drain_value: u64

    Minimum value allowed for a drain (change) output.

    +

    Implementations§

    source§

    impl CoinSelectorOpt

    source

    pub fn fund_outputs( + txouts: &[TxOut], + drain_output: &TxOut, + drain_satisfaction_weight: u32 +) -> Self

    source

    pub fn long_term_feerate(&self) -> f32

    source

    pub fn drain_waste(&self) -> i64

    Trait Implementations§

    source§

    impl Clone for CoinSelectorOpt

    source§

    fn clone(&self) -> CoinSelectorOpt

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CoinSelectorOpt

    source§

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

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

    impl Copy for CoinSelectorOpt

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.ExcessStrategy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.ExcessStrategy.html index ca05c9d188..022794a0b8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.ExcessStrategy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.ExcessStrategy.html @@ -1,12 +1,20 @@ -ExcessStrategy in bdk_coin_select - Rust
    pub struct ExcessStrategy {
    +ExcessStrategy in bdk_coin_select - Rust

    Struct bdk_coin_select::ExcessStrategy

    source ·
    pub struct ExcessStrategy {
         pub recipient_value: Option<u64>,
         pub drain_value: Option<u64>,
         pub fee: u64,
         pub weight: u32,
         pub waste: i64,
    -}

    Fields§

    §recipient_value: Option<u64>§drain_value: Option<u64>§fee: u64§weight: u32§waste: i64

    Implementations§

    Returns feerate in sats/wu.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Fields§

    §recipient_value: Option<u64>§drain_value: Option<u64>§fee: u64§weight: u32§waste: i64

    Implementations§

    source§

    impl ExcessStrategy

    source

    pub fn feerate(&self) -> f32

    Returns feerate in sats/wu.

    +

    Trait Implementations§

    source§

    impl Clone for ExcessStrategy

    source§

    fn clone(&self) -> ExcessStrategy

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ExcessStrategy

    source§

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

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

    impl Copy for ExcessStrategy

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.Selection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.Selection.html index 37381b246f..da4c5e6084 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.Selection.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.Selection.html @@ -1,10 +1,21 @@ -Selection in bdk_coin_select - Rust

    Struct bdk_coin_select::Selection

    source ·
    pub struct Selection {
    +Selection in bdk_coin_select - Rust

    Struct bdk_coin_select::Selection

    source ·
    pub struct Selection {
         pub selected: BTreeSet<usize>,
         pub excess: u64,
         pub excess_strategies: HashMap<ExcessStrategyKind, ExcessStrategy>,
    -}

    Fields§

    §selected: BTreeSet<usize>§excess: u64§excess_strategies: HashMap<ExcessStrategyKind, ExcessStrategy>

    Implementations§

    Returns the ExcessStrategy that results in the least waste.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Fields§

    §selected: BTreeSet<usize>§excess: u64§excess_strategies: HashMap<ExcessStrategyKind, ExcessStrategy>

    Implementations§

    source§

    impl Selection

    source

    pub fn apply_selection<'a, T>( + &'a self, + candidates: &'a [T] +) -> impl Iterator<Item = &'a T> + 'a

    source

    pub fn best_strategy(&self) -> (&ExcessStrategyKind, &ExcessStrategy)

    Returns the ExcessStrategy that results in the least waste.

    +

    Trait Implementations§

    source§

    impl Clone for Selection

    source§

    fn clone(&self) -> Selection

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Selection

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.SelectionError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.SelectionError.html index b5b8405466..888e52bff1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.SelectionError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.SelectionError.html @@ -1,6 +1,14 @@ -SelectionError in bdk_coin_select - Rust
    pub struct SelectionError { /* private fields */ }

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +SelectionError in bdk_coin_select - Rust

    Struct bdk_coin_select::SelectionError

    source ·
    pub struct SelectionError { /* private fields */ }

    Trait Implementations§

    source§

    impl Clone for SelectionError

    source§

    fn clone(&self) -> SelectionError

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SelectionError

    source§

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

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

    impl Display for SelectionError

    source§

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

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

    impl Error for SelectionError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.WeightedValue.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.WeightedValue.html index 7298fb14e0..a6ef0ca535 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.WeightedValue.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/struct.WeightedValue.html @@ -1,21 +1,33 @@ -WeightedValue in bdk_coin_select - Rust
    pub struct WeightedValue {
    +WeightedValue in bdk_coin_select - Rust

    Struct bdk_coin_select::WeightedValue

    source ·
    pub struct WeightedValue {
         pub value: u64,
         pub weight: u32,
         pub input_count: usize,
         pub is_segwit: bool,
    -}
    Expand description

    A WeightedValue represents an input candidate for CoinSelector. This can either be a +}

    Expand description

    A WeightedValue represents an input candidate for CoinSelector. This can either be a single UTXO, or a group of UTXOs that should be spent together.

    -

    Fields§

    §value: u64

    Total value of the UTXO(s) that this WeightedValue represents.

    -
    §weight: u32

    Total weight of including this/these UTXO(s). +

    Fields§

    §value: u64

    Total value of the UTXO(s) that this WeightedValue represents.

    +
    §weight: u32

    Total weight of including this/these UTXO(s). txin fields: prevout, nSequence, scriptSigLen, scriptSig, scriptWitnessLen, scriptWitness should all be included.

    -
    §input_count: usize

    The total number of inputs; so we can calculate extra varint weight due to vin length changes.

    -
    §is_segwit: bool

    Whether this WeightedValue contains at least one segwit spend.

    -

    Implementations§

    Create a new WeightedValue that represents a single input.

    +
    §input_count: usize

    The total number of inputs; so we can calculate extra varint weight due to vin length changes.

    +
    §is_segwit: bool

    Whether this WeightedValue contains at least one segwit spend.

    +

    Implementations§

    source§

    impl WeightedValue

    source

    pub fn new( + value: u64, + satisfaction_weight: u32, + is_segwit: bool +) -> WeightedValue

    Create a new WeightedValue that represents a single input.

    satisfaction_weight is the weight of scriptSigLen + scriptSig + scriptWitnessLen + scriptWitness.

    -

    Effective value of this input candidate: actual_value - input_weight * feerate (sats/wu).

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    source

    pub fn effective_value(&self, effective_feerate: f32) -> i64

    Effective value of this input candidate: actual_value - input_weight * feerate (sats/wu).

    +

    Trait Implementations§

    source§

    impl Clone for WeightedValue

    source§

    fn clone(&self) -> WeightedValue

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WeightedValue

    source§

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

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

    impl Copy for WeightedValue

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/type.DecideStrategy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/type.DecideStrategy.html index a22fb9a8a2..8b3dc58932 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/type.DecideStrategy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_coin_select/type.DecideStrategy.html @@ -1,3 +1,3 @@ -DecideStrategy in bdk_coin_select - Rust

    Type Definition bdk_coin_select::DecideStrategy

    source ·
    pub type DecideStrategy<'c, S> = dyn Fn(&Bnb<'c, S>) -> (BranchStrategy, Option<S>);
    Expand description

    Closure to decide the branching strategy, alongside a score (if the current selection is a +DecideStrategy in bdk_coin_select - Rust

    Type Alias bdk_coin_select::DecideStrategy

    source ·
    pub type DecideStrategy<'c, S> = dyn Fn(&Bnb<'c, S>) -> (BranchStrategy, Option<S>);
    Expand description

    Closure to decide the branching strategy, alongside a score (if the current selection is a candidate solution).

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/all.html index ae468f8ae4..e708fc6b3d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/index.html index ab0b3598fe..ee5aa5b0ac 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/index.html @@ -1,11 +1,11 @@ -bdk_electrum - Rust

    Crate bdk_electrum

    source ·
    Expand description

    This crate is used for updating structures of bdk_chain with data from an Electrum server.

    -

    The two primary methods are ElectrumExt::sync and ElectrumExt::full_scan. In most cases -ElectrumExt::sync is used to sync the transaction histories of scripts that the application +bdk_electrum - Rust

    Crate bdk_electrum

    source ·
    Expand description

    This crate is used for updating structures of [bdk_chain] with data from an Electrum server.

    +

    The two primary methods are ElectrumExt::sync and ElectrumExt::full_scan. In most cases +ElectrumExt::sync is used to sync the transaction histories of scripts that the application cares about, for example the scripts for all the receive addresses of a Wallet’s keychain that it -has shown a user. ElectrumExt::full_scan is meant to be used when importing or restoring a +has shown a user. ElectrumExt::full_scan is meant to be used when importing or restoring a keychain where the range of possibly used scripts is not known. In this case it is necessary to scan all keychain scripts until a number (the “stop gap”) of unused scripts is discovered. For a sync or full scan the user receives relevant blockchain data and output updates for -bdk_chain.

    +[bdk_chain].

    Refer to example_electrum for a complete example.

    -

    Re-exports

    pub use bdk_chain;
    pub use electrum_client;

    Structs

    Traits

    Trait to extend [electrum_client::Client] functionality.
    \ No newline at end of file +

    Re-exports§

    • pub use bdk_chain;
    • pub use electrum_client;

    Structs§

    Traits§

    • Trait to extend [electrum_client::Client] functionality.
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/sidebar-items.js index aa8a639412..77a99e21c4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["ElectrumFullScanResult","The result of [`ElectrumExt::full_scan`]."],["ElectrumSyncResult","The result of [`ElectrumExt::sync`]."]],"trait":[["ElectrumExt","Trait to extend [`electrum_client::Client`] functionality."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["ElectrumFullScanResult","ElectrumSyncResult"],"trait":["ElectrumExt"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/struct.ElectrumFullScanResult.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/struct.ElectrumFullScanResult.html index e505b22049..f31036ff08 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/struct.ElectrumFullScanResult.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/struct.ElectrumFullScanResult.html @@ -1,11 +1,27 @@ -ElectrumFullScanResult in bdk_electrum - Rust
    pub struct ElectrumFullScanResult<K>(_);
    Expand description

    The result of ElectrumExt::full_scan.

    -

    This can be transformed into a FullScanResult with either ConfirmationHeightAnchor or -ConfirmationTimeHeightAnchor anchor types.

    -

    Implementations§

    Return FullScanResult with ConfirmationTimeHeightAnchor.

    +ElectrumFullScanResult in bdk_electrum - Rust

    Struct bdk_electrum::ElectrumFullScanResult

    source ·
    pub struct ElectrumFullScanResult<K>(/* private fields */);
    Expand description

    The result of ElectrumExt::full_scan.

    +

    This can be transformed into a [FullScanResult] with either [ConfirmationHeightAnchor] or +[ConfirmationTimeHeightAnchor] anchor types.

    +

    Implementations§

    source§

    impl<K> ElectrumFullScanResult<K>

    source

    pub fn with_confirmation_height_anchor( + self +) -> FullScanResult<K, ConfirmationHeightAnchor>

    Return [FullScanResult] with [ConfirmationHeightAnchor].

    +
    source

    pub fn with_confirmation_time_height_anchor( + self, + client: &impl ElectrumApi +) -> Result<FullScanResult<K, ConfirmationTimeHeightAnchor>, Error>

    Return [FullScanResult] with [ConfirmationTimeHeightAnchor].

    This requires additional calls to the Electrum server.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/struct.ElectrumSyncResult.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/struct.ElectrumSyncResult.html index 27b17697e1..65287dcbdf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/struct.ElectrumSyncResult.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/struct.ElectrumSyncResult.html @@ -1,11 +1,23 @@ -ElectrumSyncResult in bdk_electrum - Rust
    pub struct ElectrumSyncResult(_);
    Expand description

    The result of ElectrumExt::sync.

    -

    This can be transformed into a SyncResult with either ConfirmationHeightAnchor or -ConfirmationTimeHeightAnchor anchor types.

    -

    Implementations§

    Return SyncResult with ConfirmationTimeHeightAnchor.

    +ElectrumSyncResult in bdk_electrum - Rust

    Struct bdk_electrum::ElectrumSyncResult

    source ·
    pub struct ElectrumSyncResult(/* private fields */);
    Expand description

    The result of ElectrumExt::sync.

    +

    This can be transformed into a [SyncResult] with either [ConfirmationHeightAnchor] or +[ConfirmationTimeHeightAnchor] anchor types.

    +

    Implementations§

    source§

    impl ElectrumSyncResult

    source

    pub fn with_confirmation_height_anchor( + self +) -> SyncResult<ConfirmationHeightAnchor>

    Return [SyncResult] with [ConfirmationHeightAnchor].

    +
    source

    pub fn with_confirmation_time_height_anchor( + self, + client: &impl ElectrumApi +) -> Result<SyncResult<ConfirmationTimeHeightAnchor>, Error>

    Return [SyncResult] with [ConfirmationTimeHeightAnchor].

    This requires additional calls to the Electrum server.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/trait.ElectrumExt.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/trait.ElectrumExt.html index 2f942acd17..ab48c1d8f6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/trait.ElectrumExt.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_electrum/trait.ElectrumExt.html @@ -1,12 +1,30 @@ -ElectrumExt in bdk_electrum - Rust
    pub trait ElectrumExt {
    -    fn full_scan<K: Ord + Clone>(
            &self,
            request: FullScanRequest<K>,
            stop_gap: usize,
            batch_size: usize,
            fetch_prev_txouts: bool
        ) -> Result<ElectrumFullScanResult<K>, Error>; - fn sync(
            &self,
            request: SyncRequest,
            batch_size: usize,
            fetch_prev_txouts: bool
        ) -> Result<ElectrumSyncResult, Error>; -}
    Expand description

    Trait to extend [electrum_client::Client] functionality.

    -

    Required Methods§

    Full scan the keychain scripts specified with the blockchain (via an Electrum client) and -returns updates for bdk_chain data structures.

    +ElectrumExt in bdk_electrum - Rust

    Trait bdk_electrum::ElectrumExt

    source ·
    pub trait ElectrumExt {
    +    // Required methods
    +    fn full_scan<K: Ord + Clone>(
    +        &self,
    +        request: FullScanRequest<K>,
    +        stop_gap: usize,
    +        batch_size: usize,
    +        fetch_prev_txouts: bool
    +    ) -> Result<ElectrumFullScanResult<K>, Error>;
    +    fn sync(
    +        &self,
    +        request: SyncRequest,
    +        batch_size: usize,
    +        fetch_prev_txouts: bool
    +    ) -> Result<ElectrumSyncResult, Error>;
    +}
    Expand description

    Trait to extend [electrum_client::Client] functionality.

    +

    Required Methods§

    source

    fn full_scan<K: Ord + Clone>( + &self, + request: FullScanRequest<K>, + stop_gap: usize, + batch_size: usize, + fetch_prev_txouts: bool +) -> Result<ElectrumFullScanResult<K>, Error>

    Full scan the keychain scripts specified with the blockchain (via an Electrum client) and +returns updates for [bdk_chain] data structures.

    • request: struct with data required to perform a spk-based blockchain client full scan, -see FullScanRequest
    • +see [FullScanRequest]
    • stop_gap: the full scan for each keychain stops after a gap of script pubkeys with no associated transactions
    • batch_size: specifies the max number of script pubkeys to request for in a single batch @@ -14,16 +32,21 @@ request
    • fetch_prev_txouts: specifies whether or not we want previous TxOuts for fee calculation
    -

    Sync a set of scripts with the blockchain (via an Electrum client) for the data specified -and returns updates for bdk_chain data structures.

    +
    source

    fn sync( + &self, + request: SyncRequest, + batch_size: usize, + fetch_prev_txouts: bool +) -> Result<ElectrumSyncResult, Error>

    Sync a set of scripts with the blockchain (via an Electrum client) for the data specified +and returns updates for [bdk_chain] data structures.

    • request: struct with data required to perform a spk-based blockchain client sync, -see SyncRequest
    • +see [SyncRequest]
    • batch_size: specifies the max number of script pubkeys to request for in a single batch request
    • fetch_prev_txouts: specifies whether or not we want previous TxOuts for fee calculation

    If the scripts to sync are unknown, such as when restoring or importing a keychain that -may include scripts that have been used, use full_scan with the keychain.

    -

    Implementors§

    \ No newline at end of file +may include scripts that have been used, use full_scan with the keychain.

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<E: ElectrumApi> ElectrumExt for E

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/all.html index 57e4414480..d8402e1072 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Traits

    Type Definitions

    \ No newline at end of file +List of all items in this crate

    List of all items

    Traits

    Type Aliases

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/index.html index 6ae2f57f67..231fc484dc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/index.html @@ -1,7 +1,7 @@ -bdk_esplora - Rust

    Crate bdk_esplora

    source ·
    Expand description

    BDK Esplora

    +bdk_esplora - Rust

    Crate bdk_esplora

    source ·
    Expand description

    §BDK Esplora

    BDK Esplora extends esplora-client to update bdk_chain structures from an Esplora server.

    -

    Usage

    +

    §Usage

    There are two versions of the extension trait (blocking and async).

    For blocking-only:

    bdk_esplora = { version = "0.3", features = ["blocking"] }
    @@ -20,13 +20,13 @@ from an Esplora server.

    // use bdk_esplora::EsploraAsyncExt;

    For full examples, refer to example-crates/wallet_esplora_blocking and example-crates/wallet_esplora_async.

    This crate is used for updating structures of bdk_chain with data from an Esplora server.

    -

    The two primary methods are EsploraExt::sync and EsploraExt::full_scan. In most cases -EsploraExt::sync is used to sync the transaction histories of scripts that the application +

    The two primary methods are EsploraExt::sync and EsploraExt::full_scan. In most cases +EsploraExt::sync is used to sync the transaction histories of scripts that the application cares about, for example the scripts for all the receive addresses of a Wallet’s keychain that it -has shown a user. EsploraExt::full_scan is meant to be used when importing or restoring a +has shown a user. EsploraExt::full_scan is meant to be used when importing or restoring a keychain where the range of possibly used scripts is not known. In this case it is necessary to scan all keychain scripts until a number (the “stop gap”) of unused scripts is discovered. For a sync or full scan the user receives relevant blockchain data and output updates for bdk_chain -via a new TxGraph to be appended to any existing TxGraph data.

    +via a new TxGraph to be appended to any existing TxGraph data.

    Refer to example_esplora for a complete example.

    -

    Re-exports

    pub use esplora_client;

    Traits

    Trait to extend the functionality of [esplora_client::AsyncClient].
    Trait to extend the functionality of [esplora_client::BlockingClient].

    Type Definitions

    [esplora_client::Error]
    \ No newline at end of file +

    Re-exports§

    • pub use esplora_client;

    Traits§

    • Trait to extend the functionality of [esplora_client::AsyncClient].
    • Trait to extend the functionality of [esplora_client::BlockingClient].

    Type Aliases§

    • [esplora_client::Error]
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/sidebar-items.js index 552c0c06a4..720d8022a1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"trait":[["EsploraAsyncExt","Trait to extend the functionality of [`esplora_client::AsyncClient`]."],["EsploraExt","Trait to extend the functionality of [`esplora_client::BlockingClient`]."]],"type":[["Error","[`esplora_client::Error`]"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"trait":["EsploraAsyncExt","EsploraExt"],"type":["Error"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/trait.EsploraAsyncExt.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/trait.EsploraAsyncExt.html index 574dcad981..7f2133bc3c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/trait.EsploraAsyncExt.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/trait.EsploraAsyncExt.html @@ -1,18 +1,41 @@ -EsploraAsyncExt in bdk_esplora - Rust
    pub trait EsploraAsyncExt {
    -    fn full_scan<'life0, 'async_trait, K>(
            &'life0 self,
            request: FullScanRequest<K>,
            stop_gap: usize,
            parallel_requests: usize
        ) -> Pin<Box<dyn Future<Output = Result<FullScanResult<K>, Box<Error>>> + Send + 'async_trait>>
        where
            K: 'async_trait + Ord + Clone + Send,
            Self: 'async_trait,
            'life0: 'async_trait
    ; - fn sync<'life0, 'async_trait>(
            &'life0 self,
            request: SyncRequest,
            parallel_requests: usize
        ) -> Pin<Box<dyn Future<Output = Result<SyncResult, Box<Error>>> + Send + 'async_trait>>
        where
            Self: 'async_trait,
            'life0: 'async_trait
    ; -}
    Expand description

    Trait to extend the functionality of [esplora_client::AsyncClient].

    -

    Refer to crate-level documentation for more.

    -

    Required Methods§

    Scan keychain scripts for transactions against Esplora, returning an update that can be +EsploraAsyncExt in bdk_esplora - Rust

    Trait bdk_esplora::EsploraAsyncExt

    source ·
    pub trait EsploraAsyncExt {
    +    // Required methods
    +    fn full_scan<'life0, 'async_trait, K>(
    +        &'life0 self,
    +        request: FullScanRequest<K>,
    +        stop_gap: usize,
    +        parallel_requests: usize
    +    ) -> Pin<Box<dyn Future<Output = Result<FullScanResult<K>, Box<Error>>> + Send + 'async_trait>>
    +       where K: 'async_trait + Ord + Clone + Send,
    +             Self: 'async_trait,
    +             'life0: 'async_trait;
    +    fn sync<'life0, 'async_trait>(
    +        &'life0 self,
    +        request: SyncRequest,
    +        parallel_requests: usize
    +    ) -> Pin<Box<dyn Future<Output = Result<SyncResult, Box<Error>>> + Send + 'async_trait>>
    +       where Self: 'async_trait,
    +             'life0: 'async_trait;
    +}
    Expand description

    Trait to extend the functionality of [esplora_client::AsyncClient].

    +

    Refer to crate-level documentation for more.

    +

    Required Methods§

    source

    fn full_scan<'life0, 'async_trait, K>( + &'life0 self, + request: FullScanRequest<K>, + stop_gap: usize, + parallel_requests: usize +) -> Pin<Box<dyn Future<Output = Result<FullScanResult<K>, Box<Error>>> + Send + 'async_trait>>
    where + K: 'async_trait + Ord + Clone + Send, + Self: 'async_trait, + 'life0: 'async_trait,

    Scan keychain scripts for transactions against Esplora, returning an update that can be applied to the receiving structures.

    • request: struct with data required to perform a spk-based blockchain client full scan, -see FullScanRequest
    • +see [FullScanRequest]

    The full scan for each keychain stops after a gap of stop_gap script pubkeys with no associated transactions. parallel_requests specifies the max number of HTTP requests to make in parallel.

    -
    Note
    +
    §Note

    stop_gap is defined as “the maximum number of consecutive unused addresses”. For example, with a stop_gap of 3, full_scan will keep scanning until it encounters 3 consecutive script pubkeys with no associated transactions.

    @@ -21,12 +44,32 @@ such as BTCPay Server, and Sparrow.

    A stop_gap of 0 will be treated as a stop_gap of 1.

    -

    Sync a set of scripts with the blockchain (via an Esplora client) for the data -specified and return a TxGraph.

    +
    source

    fn sync<'life0, 'async_trait>( + &'life0 self, + request: SyncRequest, + parallel_requests: usize +) -> Pin<Box<dyn Future<Output = Result<SyncResult, Box<Error>>> + Send + 'async_trait>>
    where + Self: 'async_trait, + 'life0: 'async_trait,

    Sync a set of scripts with the blockchain (via an Esplora client) for the data +specified and return a [TxGraph].

    • request: struct with data required to perform a spk-based blockchain client sync, see -SyncRequest
    • +[SyncRequest]

    If the scripts to sync are unknown, such as when restoring or importing a keychain that -may include scripts that have been used, use full_scan with the keychain.

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +may include scripts that have been used, use full_scan with the keychain.

    +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl EsploraAsyncExt for AsyncClient

    source§

    fn full_scan<'life0, 'async_trait, K>( + &'life0 self, + request: FullScanRequest<K>, + stop_gap: usize, + parallel_requests: usize +) -> Pin<Box<dyn Future<Output = Result<FullScanResult<K>, Box<Error>>> + Send + 'async_trait>>
    where + K: 'async_trait + Ord + Clone + Send, + Self: 'async_trait, + 'life0: 'async_trait,

    source§

    fn sync<'life0, 'async_trait>( + &'life0 self, + request: SyncRequest, + parallel_requests: usize +) -> Pin<Box<dyn Future<Output = Result<SyncResult, Box<Error>>> + Send + 'async_trait>>
    where + Self: 'async_trait, + 'life0: 'async_trait,

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/trait.EsploraExt.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/trait.EsploraExt.html index f65d8becd2..db8773976b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/trait.EsploraExt.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/trait.EsploraExt.html @@ -1,18 +1,33 @@ -EsploraExt in bdk_esplora - Rust

    Trait bdk_esplora::EsploraExt

    source ·
    pub trait EsploraExt {
    -    fn full_scan<K: Ord + Clone>(
            &self,
            request: FullScanRequest<K>,
            stop_gap: usize,
            parallel_requests: usize
        ) -> Result<FullScanResult<K>, Error>; - fn sync(
            &self,
            request: SyncRequest,
            parallel_requests: usize
        ) -> Result<SyncResult, Error>; -}
    Expand description

    Trait to extend the functionality of [esplora_client::BlockingClient].

    -

    Refer to crate-level documentation for more.

    -

    Required Methods§

    Scan keychain scripts for transactions against Esplora, returning an update that can be +EsploraExt in bdk_esplora - Rust

    Trait bdk_esplora::EsploraExt

    source ·
    pub trait EsploraExt {
    +    // Required methods
    +    fn full_scan<K: Ord + Clone>(
    +        &self,
    +        request: FullScanRequest<K>,
    +        stop_gap: usize,
    +        parallel_requests: usize
    +    ) -> Result<FullScanResult<K>, Error>;
    +    fn sync(
    +        &self,
    +        request: SyncRequest,
    +        parallel_requests: usize
    +    ) -> Result<SyncResult, Error>;
    +}
    Expand description

    Trait to extend the functionality of [esplora_client::BlockingClient].

    +

    Refer to crate-level documentation for more.

    +

    Required Methods§

    source

    fn full_scan<K: Ord + Clone>( + &self, + request: FullScanRequest<K>, + stop_gap: usize, + parallel_requests: usize +) -> Result<FullScanResult<K>, Error>

    Scan keychain scripts for transactions against Esplora, returning an update that can be applied to the receiving structures.

    • request: struct with data required to perform a spk-based blockchain client full scan, -see FullScanRequest
    • +see [FullScanRequest]

    The full scan for each keychain stops after a gap of stop_gap script pubkeys with no associated transactions. parallel_requests specifies the max number of HTTP requests to make in parallel.

    -
    Note
    +
    §Note

    stop_gap is defined as “the maximum number of consecutive unused addresses”. For example, with a stop_gap of 3, full_scan will keep scanning until it encounters 3 consecutive script pubkeys with no associated transactions.

    @@ -21,12 +36,25 @@ such as BTCPay Server, and Sparrow.

    A stop_gap of 0 will be treated as a stop_gap of 1.

    -

    Sync a set of scripts with the blockchain (via an Esplora client) for the data -specified and return a TxGraph.

    +
    source

    fn sync( + &self, + request: SyncRequest, + parallel_requests: usize +) -> Result<SyncResult, Error>

    Sync a set of scripts with the blockchain (via an Esplora client) for the data +specified and return a [TxGraph].

    • request: struct with data required to perform a spk-based blockchain client sync, see -SyncRequest
    • +[SyncRequest]

    If the scripts to sync are unknown, such as when restoring or importing a keychain that -may include scripts that have been used, use full_scan with the keychain.

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +may include scripts that have been used, use full_scan with the keychain.

    +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl EsploraExt for BlockingClient

    source§

    fn full_scan<K: Ord + Clone>( + &self, + request: FullScanRequest<K>, + stop_gap: usize, + parallel_requests: usize +) -> Result<FullScanResult<K>, Error>

    source§

    fn sync( + &self, + request: SyncRequest, + parallel_requests: usize +) -> Result<SyncResult, Error>

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/type.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/type.Error.html index 384570dd78..626dee4fa0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/type.Error.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_esplora/type.Error.html @@ -1,2 +1,2 @@ -Error in bdk_esplora - Rust

    Type Definition bdk_esplora::Error

    source ·
    pub type Error = Box<Error>;
    Expand description

    [esplora_client::Error]

    -
    \ No newline at end of file +Error in bdk_esplora - Rust

    Type Alias bdk_esplora::Error

    source ·
    pub type Error = Box<Error>;
    Expand description

    [esplora_client::Error]

    +

    Aliased Type§

    struct Error(/* private fields */);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/all.html index 98d00e8365..a089fceda2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.FileError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.FileError.html index cdc1ead1e5..bd8ffb3745 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.FileError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.FileError.html @@ -1,15 +1,22 @@ -FileError in bdk_file_store - Rust
    pub enum FileError {
    +FileError in bdk_file_store - Rust

    Enum bdk_file_store::FileError

    source ·
    pub enum FileError {
         Io(Error),
         InvalidMagicBytes {
             got: Vec<u8>,
             expected: Vec<u8>,
         },
    -}
    Expand description

    Error that occurs due to problems encountered with the file.

    -

    Variants§

    §

    Io(Error)

    IO error, this may mean that the file is too short.

    -
    §

    InvalidMagicBytes

    Fields

    §got: Vec<u8>
    §expected: Vec<u8>

    Magic bytes do not match what is expected.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Error that occurs due to problems encountered with the file.

    +

    Variants§

    §

    Io(Error)

    IO error, this may mean that the file is too short.

    +
    §

    InvalidMagicBytes

    Magic bytes do not match what is expected.

    +

    Fields

    §got: Vec<u8>
    §expected: Vec<u8>

    Trait Implementations§

    source§

    impl Debug for FileError

    source§

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

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

    impl Display for FileError

    source§

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

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

    impl Error for FileError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for FileError

    source§

    fn from(value: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.IterError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.IterError.html index ab33001255..3aed4232d1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.IterError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/enum.IterError.html @@ -1,12 +1,19 @@ -IterError in bdk_file_store - Rust
    pub enum IterError {
    +IterError in bdk_file_store - Rust

    Enum bdk_file_store::IterError

    source ·
    pub enum IterError {
         Io(Error),
         Bincode(ErrorKind),
    -}
    Expand description

    Error type for EntryIter.

    -

    Variants§

    §

    Io(Error)

    Failure to read from the file.

    +}
    Expand description

    Error type for EntryIter.

    +

    Variants§

    §

    Io(Error)

    Failure to read from the file.

    §

    Bincode(ErrorKind)

    Failure to decode data from the file.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for IterError

    source§

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

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

    impl Display for IterError

    source§

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

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

    impl Error for IterError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for IterError

    source§

    fn from(value: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/index.html index 6098846d96..f479b6c04f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/index.html @@ -1,6 +1,4 @@ -bdk_file_store - Rust

    Crate bdk_file_store

    source ·
    Expand description

    BDK File Store

    -

    This is a simple append-only flat file implementation of -PersistBackend.

    -

    The main structure is Store, which can be used with bdk’s -Wallet to persist wallet data into a flat file.

    -

    Structs

    Iterator over entries in a file store.
    Persists an append-only list of changesets (C) to a single file.

    Enums

    Error that occurs due to problems encountered with the file.
    Error type for EntryIter.
    \ No newline at end of file +bdk_file_store - Rust

    Crate bdk_file_store

    source ·
    Expand description

    §BDK File Store

    +

    This is a simple append-only flat file implementation of PersistBackend.

    +

    The main structure is Store which works with any bdk_chain based changesets to persist data into a flat file.

    +

    Structs§

    Enums§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/sidebar-items.js index 48d362efa5..24c9fbb586 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["FileError","Error that occurs due to problems encountered with the file."],["IterError","Error type for [`EntryIter`]."]],"struct":[["AggregateChangesetsError","Error type for [`Store::aggregate_changesets`]."],["EntryIter","Iterator over entries in a file store."],["Store","Persists an append-only list of changesets (`C`) to a single file."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["FileError","IterError"],"struct":["AggregateChangesetsError","EntryIter","Store"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.AggregateChangesetsError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.AggregateChangesetsError.html index c506d8f89a..22de702e77 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.AggregateChangesetsError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.AggregateChangesetsError.html @@ -1,12 +1,23 @@ -AggregateChangesetsError in bdk_file_store - Rust
    pub struct AggregateChangesetsError<C> {
    +AggregateChangesetsError in bdk_file_store - Rust

    Struct bdk_file_store::AggregateChangesetsError

    source ·
    pub struct AggregateChangesetsError<C> {
         pub changeset: Option<C>,
         pub iter_error: IterError,
    -}
    Expand description

    Error type for Store::aggregate_changesets.

    -

    Fields§

    §changeset: Option<C>

    The partially-aggregated changeset.

    -
    §iter_error: IterError

    The error returned by EntryIter.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Error type for Store::aggregate_changesets.

    +

    Fields§

    §changeset: Option<C>

    The partially-aggregated changeset.

    +
    §iter_error: IterError

    The error returned by EntryIter.

    +

    Trait Implementations§

    source§

    impl<C: Debug> Debug for AggregateChangesetsError<C>

    source§

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

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

    impl<C> Display for AggregateChangesetsError<C>

    source§

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

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

    impl<C: Debug> Error for AggregateChangesetsError<C>

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.EntryIter.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.EntryIter.html index ec989b2ffe..a55029e363 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.EntryIter.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.EntryIter.html @@ -1,41 +1,204 @@ -EntryIter in bdk_file_store - Rust

    Struct bdk_file_store::EntryIter

    source ·
    pub struct EntryIter<'t, T> { /* private fields */ }
    Expand description

    Iterator over entries in a file store.

    -

    Reads and returns an entry each time next is called. If an error occurs while reading the +EntryIter in bdk_file_store - Rust

    Struct bdk_file_store::EntryIter

    source ·
    pub struct EntryIter<'t, T> { /* private fields */ }
    Expand description

    Iterator over entries in a file store.

    +

    Reads and returns an entry each time next is called. If an error occurs while reading the iterator will yield a Result::Err(_) instead and then None for the next call to next.

    -

    Implementations§

    Trait Implementations§

    Executes the destructor for this type. Read more
    The type of the elements being iterated over.
    Advances the iterator and returns the next value. Read more
    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    Returns the bounds on the remaining length of the iterator. Read more
    Consumes the iterator, counting the number of iterations and returning it. Read more
    Consumes the iterator, returning the last element. Read more
    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    Returns the nth element of the iterator. Read more
    Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
    Takes two iterators and creates a new iterator over both in sequence. Read more
    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
    Takes a closure and creates an iterator which calls that closure on each -element. Read more
    Calls a closure on each element of an iterator. Read more
    Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
    Creates an iterator that both filters and maps. Read more
    Creates an iterator which gives the current iteration count as well as -the next value. Read more
    Creates an iterator which can use the peek and peek_mut methods +

    Implementations§

    source§

    impl<'t, T> EntryIter<'t, T>

    source

    pub fn new(start_pos: u64, db_file: &'t mut File) -> Self

    Trait Implementations§

    source§

    impl<'t, T> Drop for EntryIter<'t, T>

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    source§

    impl<'t, T> Iterator for EntryIter<'t, T>
    where + T: DeserializeOwned,

    §

    type Item = Result<T, IterError>

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn next_chunk<const N: usize>( + &mut self +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where + Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    1.0.0 · source§

    fn last(self) -> Option<Self::Item>
    where + Self: Sized,

    Consumes the iterator, returning the last element. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.0.0 · source§

    fn nth(&mut self, n: usize) -> Option<Self::Item>

    Returns the nth element of the iterator. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where + Self: Sized,

    Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where + Self: Sized, + U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where + Self: Sized, + G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each +element. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where + Self: Sized, + F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where + Self: Sized,

    Creates an iterator which gives the current iteration count as well as +the next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where + Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
    Creates an iterator that skips elements based on a predicate. Read more
    Creates an iterator that yields elements based on a predicate. Read more
    Creates an iterator that both yields elements based on a predicate and maps. Read more
    Creates an iterator that skips the first n elements. Read more
    Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
    An iterator adapter similar to fold that holds internal state and -produces a new iterator. Read more
    Creates an iterator that works like map, but flattens nested structure. Read more
    Creates an iterator which ends after the first None. Read more
    Does something with each element of an iterator, passing the value on. Read more
    Borrows an iterator, rather than consuming it. Read more
    Transforms an iterator into a collection. Read more
    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    Consumes an iterator, creating two collections from it. Read more
    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
    An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
    An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
    Folds every element into an accumulator by applying an operation, -returning the final result. Read more
    Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
    Tests if every element of the iterator matches a predicate. Read more
    Tests if any element of the iterator matches a predicate. Read more
    Searches for an element of an iterator that satisfies a predicate. Read more
    Applies function to the elements of iterator and returns -the first non-none result. Read more
    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns -the first true result or the first error. Read more
    Searches for an element in an iterator, returning its index. Read more
    Returns the element that gives the maximum value from the -specified function. Read more
    Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
    Returns the element that gives the minimum value from the -specified function. Read more
    Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
    Converts an iterator of pairs into a pair of containers. Read more
    Creates an iterator which copies all of its elements. Read more
    Creates an iterator which clones all of its elements. Read more
    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    Sums the elements of an iterator. Read more
    Iterates over the entire iterator, multiplying all the elements Read more
    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    Lexicographically compares the elements of this Iterator with those -of another. Read more
    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
    Determines if the elements of this Iterator are equal to those of -another. Read more
    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
    Determines if the elements of this Iterator are unequal to those of -another. Read more
    Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
    Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
    Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
    Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +their documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where + Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where + Self: Sized,

    Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where + Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where + Self: Sized, + F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where + Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where + B: FromIterator<Self::Item>, + Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where + E: Extend<Self::Item>, + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

    An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation, +returning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
    source§

    fn try_reduce<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns +the first non-none result. Read more
    source§

    fn try_find<F, R>( + &mut self, + f: F +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns +the first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where + Self: Sized, + P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the +specified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the +specified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where + Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where + Self: Sized, + S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where + Self: Sized, + P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit +evaluation, returning a result without comparing the remaining elements. +As soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are equal to those of +another. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are not equal to those of +another. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

    Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

    Auto Trait Implementations§

    §

    impl<'t, T> Freeze for EntryIter<'t, T>

    §

    impl<'t, T> RefUnwindSafe for EntryIter<'t, T>
    where + T: RefUnwindSafe,

    §

    impl<'t, T> Send for EntryIter<'t, T>
    where + T: Send,

    §

    impl<'t, T> Sync for EntryIter<'t, T>
    where + T: Sync,

    §

    impl<'t, T> Unpin for EntryIter<'t, T>
    where + T: Unpin,

    §

    impl<'t, T> !UnwindSafe for EntryIter<'t, T>

    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> 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.

    -
    The type of the elements being iterated over.
    Which kind of iterator are we turning this into?
    Creates an iterator from a value. Read more
    Choose one element at random from the iterator. Read more
    Choose one element at random from the iterator. Read more
    Collects values at random from the iterator into a supplied buffer -until that buffer is filled. Read more
    Collects amount values at random from the iterator into a vector. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<I> IntoIterator for I
    where + I: Iterator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    §

    type IntoIter = I

    Which kind of iterator are we turning this into?
    const: unstable · source§

    fn into_iter(self) -> I

    Creates an iterator from a value. Read more
    source§

    impl<I> IteratorRandom for I
    where + I: Iterator,

    source§

    fn choose<R>(self, rng: &mut R) -> Option<Self::Item>
    where + R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_stable<R>(self, rng: &mut R) -> Option<Self::Item>
    where + R: Rng + ?Sized,

    Choose one element at random from the iterator. Read more
    source§

    fn choose_multiple_fill<R>(self, rng: &mut R, buf: &mut [Self::Item]) -> usize
    where + R: Rng + ?Sized,

    Collects values at random from the iterator into a supplied buffer +until that buffer is filled. Read more
    source§

    fn choose_multiple<R>(self, rng: &mut R, amount: usize) -> Vec<Self::Item>
    where + R: Rng + ?Sized,

    Collects amount values at random from the iterator into a vector. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.Store.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.Store.html index 1f4fdb45be..410417f2e6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.Store.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_file_store/struct.Store.html @@ -1,22 +1,32 @@ -Store in bdk_file_store - Rust

    Struct bdk_file_store::Store

    source ·
    pub struct Store<C>where
        C: Sync + Send,
    { /* private fields */ }
    Expand description

    Persists an append-only list of changesets (C) to a single file.

    -

    Implementations§

    Create a new Store file in write-only mode; error if the file exists.

    +Store in bdk_file_store - Rust

    Struct bdk_file_store::Store

    source ·
    pub struct Store<C>
    where + C: Sync + Send,
    { /* private fields */ }
    Expand description

    Persists an append-only list of changesets (C) to a single file.

    +

    Implementations§

    source§

    impl<C> Store<C>
    where + C: Append + Serialize + DeserializeOwned + Send + Sync,

    source

    pub fn create_new<P>(magic: &[u8], file_path: P) -> Result<Self, FileError>
    where + P: AsRef<Path>,

    Create a new Store file in write-only mode; error if the file exists.

    magic is the prefixed bytes to write to the new file. This will be checked when opening -the Store in the future with open.

    -

    Open an existing Store.

    -

    Use create_new to create a new Store.

    -
    Errors
    +the Store in the future with open.

    +
    source

    pub fn open<P>(magic: &[u8], file_path: P) -> Result<Self, FileError>
    where + P: AsRef<Path>,

    Open an existing Store.

    +

    Use create_new to create a new Store.

    +
    §Errors

    If the prefixed bytes of the opened file does not match the provided magic, the -FileError::InvalidMagicBytes error variant will be returned.

    -

    Attempt to open existing Store file; create it if the file is non-existent.

    -

    Internally, this calls either open or create_new.

    -

    Iterates over the stored changeset from first to last, changing the seek position at each +FileError::InvalidMagicBytes error variant will be returned.

    +
    source

    pub fn open_or_create_new<P>( + magic: &[u8], + file_path: P +) -> Result<Self, FileError>
    where + P: AsRef<Path>,

    Attempt to open existing Store file; create it if the file is non-existent.

    +

    Internally, this calls either open or create_new.

    +
    source

    pub fn iter_changesets(&mut self) -> EntryIter<'_, C> ⓘ

    Iterates over the stored changeset from first to last, changing the seek position at each iteration.

    The iterator may fail to read an entry and therefore return an error. However, the first time it returns an error will be the last. After doing so, the iterator will always yield None.

    WARNING: This method changes the write position in the underlying file. You should always iterate over all entries until None is returned if you want your next write to go at the end; otherwise, you will write over existing entries.

    -

    Loads all the changesets that have been stored as one giant changeset.

    +
    source

    pub fn aggregate_changesets( + &mut self +) -> Result<Option<C>, AggregateChangesetsError<C>>

    Loads all the changesets that have been stored as one giant changeset.

    This function returns the aggregate changeset, or None if nothing was persisted. If reading or deserializing any of the entries fails, an error is returned that consists of all those it was able to read.

    @@ -25,12 +35,24 @@ wallet scan with a stop-gap after getting an error, since it is likely that one changesets was unable to read changes of the derivation indices of a keychain.

    WARNING: This method changes the write position of the underlying file. The next changeset will be written over the erroring entry (or the end of the file if none existed).

    -

    Append a new changeset to the file and truncate the file to the end of the appended +

    source

    pub fn append_changeset(&mut self, changeset: &C) -> Result<(), Error>

    Append a new changeset to the file and truncate the file to the end of the appended changeset.

    The truncation is to avoid the possibility of having a valid but inconsistent changeset directly after the appended changeset.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Writes a changeset to the persistence backend. Read more
    Return the aggregate changeset C from persistence.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<C> Debug for Store<C>
    where + C: Sync + Send + Debug,

    source§

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

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

    impl<C> PersistBackend<C> for Store<C>
    where + C: Append + Serialize + DeserializeOwned + Send + Sync,

    source§

    fn write_changes(&mut self, changeset: &C) -> Result<()>

    Writes a changeset to the persistence backend. Read more
    source§

    fn load_from_persistence(&mut self) -> Result<Option<C>>

    Return the aggregate changeset C from persistence.

    Auto Trait Implementations§

    §

    impl<C> Freeze for Store<C>

    §

    impl<C> RefUnwindSafe for Store<C>
    where + C: RefUnwindSafe,

    §

    impl<C> Send for Store<C>

    §

    impl<C> Sync for Store<C>

    §

    impl<C> Unpin for Store<C>
    where + C: Unpin,

    §

    impl<C> UnwindSafe for Store<C>
    where + C: UnwindSafe,

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/all.html index 3124be994c..391c7b5b2f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/index.html index 64e92c30ef..9e9033ce07 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/index.html @@ -1,10 +1,10 @@ -bdk_hwi - Rust

    Crate bdk_hwi

    source ·
    Expand description

    HWI Signer

    +bdk_hwi - Rust

    Crate bdk_hwi

    source ·
    Expand description

    HWI Signer

    This crate contains HWISigner, an implementation of a TransactionSigner to be used with hardware wallets.

    let mut devices = HWIClient::enumerate()?;
     if devices.is_empty() {
    -    panic!("No devices found!");
    +    panic!("No devices found!");
     }
     let first_device = devices.remove(0)?;
     let custom_signer = HWISigner::from_device(&first_device, Network::Testnet.into())?;
    @@ -16,4 +16,4 @@ used with hardware wallets.

    Arc::new(custom_signer), );
    -

    Structs

    Custom signer for Hardware Wallets
    \ No newline at end of file +

    Structs§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/sidebar-items.js index 1db16cc1ab..49923377ab 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["HWISigner","Custom signer for Hardware Wallets"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["HWISigner"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/struct.HWISigner.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/struct.HWISigner.html index b18d2baff8..fa80e34aca 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/struct.HWISigner.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_hwi/struct.HWISigner.html @@ -1,8 +1,23 @@ -HWISigner in bdk_hwi - Rust

    Struct bdk_hwi::HWISigner

    source ·
    pub struct HWISigner { /* private fields */ }
    Expand description

    Custom signer for Hardware Wallets

    +HWISigner in bdk_hwi - Rust

    Struct bdk_hwi::HWISigner

    source ·
    pub struct HWISigner { /* private fields */ }
    Expand description

    Custom signer for Hardware Wallets

    This ignores sign_options and leaves the decisions up to the hardware wallet.

    -

    Implementations§

    Create a instance from the specified device and chain

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Return the [SignerId] for this signer Read more
    Return the secret key for the signer Read more
    Sign all the inputs of the psbt

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Implementations§

    source§

    impl HWISigner

    source

    pub fn from_device( + device: &HWIDevice, + chain: HWIChain +) -> Result<HWISigner, Error>

    Create a instance from the specified device and chain

    +

    Trait Implementations§

    source§

    impl Debug for HWISigner

    source§

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

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

    impl SignerCommon for HWISigner

    source§

    fn id(&self, _secp: &Secp256k1<All>) -> SignerId

    Return the [SignerId] for this signer Read more
    §

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more
    source§

    impl TransactionSigner for HWISigner

    source§

    fn sign_transaction( + &self, + psbt: &mut Psbt, + _sign_options: &SignOptions, + _secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign all the inputs of the psbt

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/all.html index 4bbb8aa0e0..62d3d93b39 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    Traits

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    Traits

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/changeset/struct.CombinedChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/changeset/struct.CombinedChangeSet.html new file mode 100644 index 0000000000..4eb5416ef3 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/changeset/struct.CombinedChangeSet.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../bdk_persist/struct.CombinedChangeSet.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/index.html index c465fb2226..64d72b5e61 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/index.html @@ -1,4 +1,5 @@ -bdk_persist - Rust

    Crate bdk_persist

    source ·
    Expand description

    BDK Persist

    -

    This crate is home to the PersistBackend trait which defines the behavior of a database to perform the task of persisting changes made to BDK data structures. The Persist type provides a convenient wrapper around a PersistBackend that allows staging changes before committing them.

    -

    Structs

    Persist wraps a PersistBackend to create a convenient staging area for changes (C) -before they are persisted.

    Traits

    A persistence backend for Persist.
    \ No newline at end of file +bdk_persist - Rust

    Crate bdk_persist

    source ·
    Expand description

    §BDK Persist

    +

    This crate is home to the PersistBackend trait which defines the behavior of a database to perform the task of persisting changes made to BDK data structures.

    +

    The Persist type provides a convenient wrapper around a PersistBackend that allows staging changes before committing them.

    +

    Structs§

    Traits§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/sidebar-items.js index c78120f47f..b877ef96cf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["Persist","`Persist` wraps a [`PersistBackend`] to create a convenient staging area for changes (`C`) before they are persisted."]],"trait":[["PersistBackend","A persistence backend for [`Persist`]."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["CombinedChangeSet","Persist"],"trait":["PersistBackend"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/struct.CombinedChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/struct.CombinedChangeSet.html new file mode 100644 index 0000000000..c44d6efd6a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/struct.CombinedChangeSet.html @@ -0,0 +1,38 @@ +CombinedChangeSet in bdk_persist - Rust

    Struct bdk_persist::CombinedChangeSet

    source ·
    pub struct CombinedChangeSet<K, A> {
    +    pub chain: ChangeSet,
    +    pub indexed_tx_graph: ChangeSet<A, ChangeSet<K>>,
    +    pub network: Option<Network>,
    +}
    Expand description

    Changes from a combination of [bdk_chain] structures.

    +

    Fields§

    §chain: ChangeSet

    Changes to the LocalChain.

    +
    §indexed_tx_graph: ChangeSet<A, ChangeSet<K>>

    Changes to IndexedTxGraph.

    +
    §network: Option<Network>

    Stores the network type of the transaction data.

    +

    Trait Implementations§

    source§

    impl<K: Ord, A: Anchor> Append for CombinedChangeSet<K, A>

    source§

    fn append(&mut self, other: Self)

    Append another object of the same type onto self.
    source§

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    source§

    impl<K: Clone, A: Clone> Clone for CombinedChangeSet<K, A>

    source§

    fn clone(&self) -> CombinedChangeSet<K, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug, A: Debug> Debug for CombinedChangeSet<K, A>

    source§

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

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

    impl<K, A> Default for CombinedChangeSet<K, A>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl<'de, K, A> Deserialize<'de> for CombinedChangeSet<K, A>
    where + A: Ord + Deserialize<'de>, + K: Ord + Deserialize<'de>,

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl<K, A> From<BTreeMap<u32, Option<BlockHash>>> for CombinedChangeSet<K, A>

    source§

    fn from(chain: ChangeSet) -> Self

    Converts to this type from the input type.
    source§

    impl<K, A> From<ChangeSet<A, ChangeSet<K>>> for CombinedChangeSet<K, A>

    source§

    fn from(indexed_tx_graph: ChangeSet<A, ChangeSet<K>>) -> Self

    Converts to this type from the input type.
    source§

    impl<K: PartialEq, A: PartialEq> PartialEq for CombinedChangeSet<K, A>

    source§

    fn eq(&self, other: &CombinedChangeSet<K, A>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl<K, A> Serialize for CombinedChangeSet<K, A>
    where + A: Ord + Serialize, + K: Ord + Serialize,

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl<K, A> StructuralPartialEq for CombinedChangeSet<K, A>

    Auto Trait Implementations§

    §

    impl<K, A> Freeze for CombinedChangeSet<K, A>

    §

    impl<K, A> RefUnwindSafe for CombinedChangeSet<K, A>
    where + K: RefUnwindSafe, + A: RefUnwindSafe,

    §

    impl<K, A> Send for CombinedChangeSet<K, A>
    where + K: Send, + A: Send,

    §

    impl<K, A> Sync for CombinedChangeSet<K, A>
    where + K: Sync, + A: Sync,

    §

    impl<K, A> Unpin for CombinedChangeSet<K, A>

    §

    impl<K, A> UnwindSafe for CombinedChangeSet<K, A>
    where + K: RefUnwindSafe, + A: RefUnwindSafe,

    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> 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,

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/struct.Persist.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/struct.Persist.html index a0eda7aa30..3ba80f0e5f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/struct.Persist.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/struct.Persist.html @@ -1,20 +1,32 @@ -Persist in bdk_persist - Rust

    Struct bdk_persist::Persist

    source ·
    pub struct Persist<C> { /* private fields */ }
    Expand description

    Persist wraps a PersistBackend to create a convenient staging area for changes (C) +Persist in bdk_persist - Rust

    Struct bdk_persist::Persist

    source ·
    pub struct Persist<C> { /* private fields */ }
    Expand description

    Persist wraps a PersistBackend to create a convenient staging area for changes (C) before they are persisted.

    Not all changes to the in-memory representation needs to be written to disk right away, so -Persist::stage can be used to stage changes first and then Persist::commit can be used +Persist::stage can be used to stage changes first and then Persist::commit can be used to write changes to disk.

    -

    Implementations§

    Create a new Persist from PersistBackend.

    -

    Stage a changeset to be committed later with commit.

    -

    Get the changes that have not been committed yet.

    -

    Commit the staged changes to the underlying persistence backend.

    +

    Implementations§

    source§

    impl<C> Persist<C>
    where + C: Default + Append,

    source

    pub fn new(backend: impl PersistBackend<C> + Send + Sync + 'static) -> Self

    Create a new Persist from PersistBackend.

    +
    source

    pub fn stage(&mut self, changeset: C)

    Stage a changeset to be committed later with commit.

    +
    source

    pub fn staged(&self) -> &C

    Get the changes that have not been committed yet.

    +
    source

    pub fn commit(&mut self) -> Result<Option<C>>

    Commit the staged changes to the underlying persistence backend.

    Changes that are committed (if any) are returned.

    -
    Error
    +
    §Error

    Returns a backend-defined error if this fails.

    -

    Stages a new changeset and commits it (along with any other previously staged changes) to +

    source

    pub fn stage_and_commit(&mut self, changeset: C) -> Result<Option<C>>

    Stages a new changeset and commits it (along with any other previously staged changes) to the persistence backend

    -

    Convenience method for calling stage and then commit.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Convenience method for calling stage and then commit.

    +

    Trait Implementations§

    source§

    impl<C: Debug> Debug for Persist<C>

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<C> Freeze for Persist<C>
    where + C: Freeze,

    §

    impl<C> !RefUnwindSafe for Persist<C>

    §

    impl<C> Send for Persist<C>
    where + C: Send,

    §

    impl<C> Sync for Persist<C>
    where + C: Sync,

    §

    impl<C> Unpin for Persist<C>
    where + C: Unpin,

    §

    impl<C> !UnwindSafe for Persist<C>

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/trait.PersistBackend.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/trait.PersistBackend.html index 42cb239929..fea6b8f260 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/trait.PersistBackend.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_persist/trait.PersistBackend.html @@ -1,13 +1,14 @@ -PersistBackend in bdk_persist - Rust
    pub trait PersistBackend<C> {
    -    fn write_changes(&mut self, changeset: &C) -> Result<()>;
    -    fn load_from_persistence(&mut self) -> Result<Option<C>>;
    -}
    Expand description

    A persistence backend for Persist.

    +PersistBackend in bdk_persist - Rust

    Trait bdk_persist::PersistBackend

    source ·
    pub trait PersistBackend<C> {
    +    // Required methods
    +    fn write_changes(&mut self, changeset: &C) -> Result<()>;
    +    fn load_from_persistence(&mut self) -> Result<Option<C>>;
    +}
    Expand description

    A persistence backend for Persist.

    C represents the changeset; a datatype that records changes made to in-memory data structures that are to be persisted, or retrieved from persistence.

    -

    Required Methods§

    Writes a changeset to the persistence backend.

    +

    Required Methods§

    source

    fn write_changes(&mut self, changeset: &C) -> Result<()>

    Writes a changeset to the persistence backend.

    It is up to the backend what it does with this. It could store every changeset in a list or it inserts the actual changes into a more structured database. All it needs to guarantee is that load_from_persistence restores a keychain tracker to what it should be if all changesets had been applied sequentially.

    -

    Return the aggregate changeset C from persistence.

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +
    source

    fn load_from_persistence(&mut self) -> Result<Option<C>>

    Return the aggregate changeset C from persistence.

    +

    Implementations on Foreign Types§

    source§

    impl<C> PersistBackend<C> for ()

    source§

    fn write_changes(&mut self, _changeset: &C) -> Result<()>

    source§

    fn load_from_persistence(&mut self) -> Result<Option<C>>

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/all.html new file mode 100644 index 0000000000..cfb2fa05ab --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/all.html @@ -0,0 +1 @@ +List of all items in this crate

    List of all items

    Structs

    Enums

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/enum.Error.html new file mode 100644 index 0000000000..07ed6a7bdf --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/enum.Error.html @@ -0,0 +1,22 @@ +Error in bdk_sqlite - Rust

    Enum bdk_sqlite::Error

    source ·
    pub enum Error {
    +    Network {
    +        expected: Network,
    +        given: Network,
    +    },
    +    Sqlite(Error),
    +}
    Expand description

    Error that occurs while reading or writing change sets with the SQLite database.

    +

    Variants§

    §

    Network

    Invalid network, cannot change the one already stored in the database.

    +

    Fields

    §expected: Network
    §given: Network
    §

    Sqlite(Error)

    SQLite error.

    +

    Trait Implementations§

    source§

    impl Debug for Error

    source§

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

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

    impl Display for Error

    source§

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

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

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/index.html new file mode 100644 index 0000000000..9309c88a10 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/index.html @@ -0,0 +1,4 @@ +bdk_sqlite - Rust

    Crate bdk_sqlite

    source ·
    Expand description

    §BDK SQLite

    +

    This is a simple SQLite relational database schema backed implementation of PersistBackend.

    +

    The main structure is Store which persists bdk_persist CombinedChangeSet data into a SQLite database file.

    +

    Re-exports§

    • pub use rusqlite;

    Structs§

    • Persists data in to a relational schema based SQLite database file.

    Enums§

    • Error that occurs while reading or writing change sets with the SQLite database.
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/sidebar-items.js new file mode 100644 index 0000000000..f6fa423217 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/sidebar-items.js @@ -0,0 +1 @@ +window.SIDEBAR_ITEMS = {"enum":["Error"],"struct":["Store"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/store/struct.Store.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/store/struct.Store.html new file mode 100644 index 0000000000..9b86b16482 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/store/struct.Store.html @@ -0,0 +1,11 @@ + + + + + Redirection + + +

    Redirecting to ../../bdk_sqlite/struct.Store.html...

    + + + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/struct.Store.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/struct.Store.html new file mode 100644 index 0000000000..d43e27d2c7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_sqlite/struct.Store.html @@ -0,0 +1,30 @@ +Store in bdk_sqlite - Rust

    Struct bdk_sqlite::Store

    source ·
    pub struct Store<K, A> { /* private fields */ }
    Expand description

    Persists data in to a relational schema based SQLite database file.

    +

    The changesets loaded or stored represent changes to keychain and blockchain data.

    +

    Implementations§

    source§

    impl<K, A> Store<K, A>
    where + K: Ord + for<'de> Deserialize<'de> + Serialize + Send, + A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,

    source

    pub fn new(conn: Connection) -> Result<Self, Error>

    Creates a new store from a [Connection].

    +

    Trait Implementations§

    source§

    impl<K, A> Debug for Store<K, A>

    source§

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

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

    impl<K, A, C> PersistBackend<C> for Store<K, A>
    where + K: Ord + for<'de> Deserialize<'de> + Serialize + Send, + A: Anchor + for<'de> Deserialize<'de> + Serialize + Send, + C: Clone + From<CombinedChangeSet<K, A>> + Into<CombinedChangeSet<K, A>>,

    source§

    fn write_changes(&mut self, changeset: &C) -> Result<()>

    Writes a changeset to the persistence backend. Read more
    source§

    fn load_from_persistence(&mut self) -> Result<Option<C>>

    Return the aggregate changeset C from persistence.

    Auto Trait Implementations§

    §

    impl<K, A> !Freeze for Store<K, A>

    §

    impl<K, A> RefUnwindSafe for Store<K, A>
    where + K: RefUnwindSafe, + A: RefUnwindSafe,

    §

    impl<K, A> Send for Store<K, A>
    where + K: Send, + A: Send,

    §

    impl<K, A> Sync for Store<K, A>
    where + K: Sync, + A: Sync,

    §

    impl<K, A> Unpin for Store<K, A>
    where + K: Unpin, + A: Unpin,

    §

    impl<K, A> UnwindSafe for Store<K, A>
    where + K: UnwindSafe, + A: UnwindSafe,

    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> 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, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/all.html index 9c6251c6b0..048f6a5609 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/index.html index b3170ef85c..28f143f104 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/index.html @@ -1,2 +1,2 @@ -bdk_testenv - Rust

    Crate bdk_testenv

    source ·

    Re-exports

    pub use electrsd;
    pub use electrsd::bitcoind;
    pub use electrsd::bitcoind::anyhow;
    pub use electrsd::bitcoind::bitcoincore_rpc;
    pub use electrsd::electrum_client;

    Structs

    Struct for running a regtest environment with a single bitcoind node with an electrs -instance connected to it.
    \ No newline at end of file +bdk_testenv - Rust

    Crate bdk_testenv

    source ·

    Re-exports§

    • pub use electrsd;
    • pub use electrsd::bitcoind;
    • pub use electrsd::bitcoind::anyhow;
    • pub use electrsd::bitcoind::bitcoincore_rpc;
    • pub use electrsd::electrum_client;

    Structs§

    • Struct for running a regtest environment with a single bitcoind node with an electrs +instance connected to it.
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/sidebar-items.js index f2610af341..633f36644a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["TestEnv","Struct for running a regtest environment with a single `bitcoind` node with an `electrs` instance connected to it."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["TestEnv"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/struct.TestEnv.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/struct.TestEnv.html index f60eeeb3e3..146c78c09c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/struct.TestEnv.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_testenv/struct.TestEnv.html @@ -1,30 +1,49 @@ -TestEnv in bdk_testenv - Rust

    Struct bdk_testenv::TestEnv

    source ·
    pub struct TestEnv {
    +TestEnv in bdk_testenv - Rust

    Struct bdk_testenv::TestEnv

    source ·
    pub struct TestEnv {
         pub bitcoind: BitcoinD,
         pub electrsd: ElectrsD,
    -}
    Expand description

    Struct for running a regtest environment with a single bitcoind node with an electrs +}

    Expand description

    Struct for running a regtest environment with a single bitcoind node with an electrs instance connected to it.

    -

    Fields§

    §bitcoind: BitcoinD§electrsd: ElectrsD

    Implementations§

    Construct a new TestEnv instance with default configurations.

    -

    Exposes the [ElectrumApi] calls from the Electrum client.

    -

    Exposes the [RpcApi] calls from [bitcoincore_rpc].

    -

    Mine a number of blocks of a given size count, which may be specified to a given coinbase +

    Fields§

    §bitcoind: BitcoinD§electrsd: ElectrsD

    Implementations§

    source§

    impl TestEnv

    source

    pub fn new() -> Result<Self>

    Construct a new TestEnv instance with default configurations.

    +
    source

    pub fn electrum_client(&self) -> &impl ElectrumApi

    Exposes the [ElectrumApi] calls from the Electrum client.

    +
    source

    pub fn rpc_client(&self) -> &impl RpcApi

    Exposes the [RpcApi] calls from [bitcoincore_rpc].

    +
    source

    pub fn reset_electrsd(self) -> Result<Self>

    source

    pub fn mine_blocks( + &self, + count: usize, + address: Option<Address> +) -> Result<Vec<BlockHash>>

    Mine a number of blocks of a given size count, which may be specified to a given coinbase address.

    -

    Mine a block that is guaranteed to be empty even with transactions in the mempool.

    -

    This method waits for the Electrum notification indicating that a new block has been mined.

    -

    Invalidate a number of blocks of a given size count.

    -

    Reorg a number of blocks of a given size count. -Refer to TestEnv::mine_empty_block for more information.

    -

    Reorg with a number of empty blocks of a given size count.

    -

    Send a tx of a given amount to a given address.

    -

    Create a checkpoint linked list of all the blocks in the chain.

    -

    Get the genesis hash of the blockchain.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    source

    pub fn mine_empty_block(&self) -> Result<(usize, BlockHash)>

    Mine a block that is guaranteed to be empty even with transactions in the mempool.

    +
    source

    pub fn wait_until_electrum_sees_block(&self) -> Result<()>

    This method waits for the Electrum notification indicating that a new block has been mined.

    +
    source

    pub fn invalidate_blocks(&self, count: usize) -> Result<()>

    Invalidate a number of blocks of a given size count.

    +
    source

    pub fn reorg(&self, count: usize) -> Result<Vec<BlockHash>>

    Reorg a number of blocks of a given size count. +Refer to TestEnv::mine_empty_block for more information.

    +
    source

    pub fn reorg_empty_blocks( + &self, + count: usize +) -> Result<Vec<(usize, BlockHash)>>

    Reorg with a number of empty blocks of a given size count.

    +
    source

    pub fn send( + &self, + address: &Address<NetworkChecked>, + amount: Amount +) -> Result<Txid>

    Send a tx of a given amount to a given address.

    +
    source

    pub fn make_checkpoint_tip(&self) -> CheckPoint

    Create a checkpoint linked list of all the blocks in the chain.

    +
    source

    pub fn genesis_hash(&self) -> Result<BlockHash>

    Get the genesis hash of the blockchain.

    +

    Auto Trait Implementations§

    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> 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.

    -
    Converts self into a Left variant of Either<Self, Self> +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoEither for T

    source§

    fn into_either(self, into_left: bool) -> Either<Self, Self>

    Converts self into a Left variant of Either<Self, Self> if into_left is true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    Converts self into a Left variant of Either<Self, Self> +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
    source§

    fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
    where + F: FnOnce(&Self) -> bool,

    Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/all.html index e9afdc85cc..8a1c391e6b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.PlanState.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.PlanState.html index f08e374012..0947b35c48 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.PlanState.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.PlanState.html @@ -1,15 +1,28 @@ -PlanState in bdk_tmp_plan - Rust

    Enum bdk_tmp_plan::PlanState

    source ·
    pub enum PlanState<Ak> {
    +PlanState in bdk_tmp_plan - Rust

    Enum bdk_tmp_plan::PlanState

    source ·
    pub enum PlanState<Ak> {
         Complete {
             final_script_sig: Option<ScriptBuf>,
             final_script_witness: Option<Witness>,
         },
         Incomplete(Requirements<Ak>),
    -}
    Expand description

    The returned value from Plan::try_complete.

    -

    Variants§

    §

    Complete

    Fields

    §final_script_sig: Option<ScriptBuf>

    The script sig that should be set on the input

    -
    §final_script_witness: Option<Witness>

    The witness that should be set on the input

    -

    The plan is complete

    -
    §

    Incomplete(Requirements<Ak>)

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    The returned value from Plan::try_complete.

    +

    Variants§

    §

    Complete

    The plan is complete

    +

    Fields

    §final_script_sig: Option<ScriptBuf>

    The script sig that should be set on the input

    +
    §final_script_witness: Option<Witness>

    The witness that should be set on the input

    +
    §

    Incomplete(Requirements<Ak>)

    Auto Trait Implementations§

    §

    impl<Ak> Freeze for PlanState<Ak>
    where + Ak: Freeze,

    §

    impl<Ak> RefUnwindSafe for PlanState<Ak>
    where + Ak: RefUnwindSafe,

    §

    impl<Ak> Send for PlanState<Ak>
    where + Ak: Send,

    §

    impl<Ak> Sync for PlanState<Ak>
    where + Ak: Sync,

    §

    impl<Ak> Unpin for PlanState<Ak>
    where + Ak: Unpin,

    §

    impl<Ak> UnwindSafe for PlanState<Ak>
    where + Ak: UnwindSafe,

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.RequiredSignatures.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.RequiredSignatures.html index d54bc9f568..70cbb58340 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.RequiredSignatures.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.RequiredSignatures.html @@ -1,4 +1,4 @@ -RequiredSignatures in bdk_tmp_plan - Rust
    pub enum RequiredSignatures<Ak> {
    +RequiredSignatures in bdk_tmp_plan - Rust

    Enum bdk_tmp_plan::RequiredSignatures

    source ·
    pub enum RequiredSignatures<Ak> {
         Legacy {
             keys: Vec<PlanKey<Ak>>,
         },
    @@ -13,17 +13,41 @@
             leaf_hash: TapLeafHash,
             plan_keys: Vec<PlanKey<Ak>>,
         },
    -}
    Expand description

    The signatures required to complete the plan

    -

    Variants§

    §

    Legacy

    Fields

    §keys: Vec<PlanKey<Ak>>

    Legacy ECDSA signatures are required

    -
    §

    Segwitv0

    Fields

    §keys: Vec<PlanKey<Ak>>

    Segwitv0 ECDSA signatures are required

    -
    §

    TapKey

    Fields

    §plan_key: PlanKey<Ak>

    the internal key

    -
    §merkle_root: Option<TapNodeHash>

    The merkle root of the taproot output

    -

    A Taproot key spend signature is required

    -
    §

    TapScript

    Fields

    §leaf_hash: TapLeafHash

    The leaf hash of the script being used

    -
    §plan_keys: Vec<PlanKey<Ak>>

    The keys in the script that require signatures

    -

    Taproot script path signatures are required

    -

    Implementations§

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    The signatures required to complete the plan

    +

    Variants§

    §

    Legacy

    Legacy ECDSA signatures are required

    +

    Fields

    §keys: Vec<PlanKey<Ak>>
    §

    Segwitv0

    Segwitv0 ECDSA signatures are required

    +

    Fields

    §keys: Vec<PlanKey<Ak>>
    §

    TapKey

    A Taproot key spend signature is required

    +

    Fields

    §plan_key: PlanKey<Ak>

    the internal key

    +
    §merkle_root: Option<TapNodeHash>

    The merkle root of the taproot output

    +
    §

    TapScript

    Taproot script path signatures are required

    +

    Fields

    §leaf_hash: TapLeafHash

    The leaf hash of the script being used

    +
    §plan_keys: Vec<PlanKey<Ak>>

    The keys in the script that require signatures

    +

    Implementations§

    source§

    impl RequiredSignatures<DescriptorPublicKey>

    source

    pub fn sign_with_keymap<T: Borrow<Transaction>>( + &self, + input_index: usize, + keymap: &KeyMap, + prevouts: &Prevouts<'_, impl Borrow<TxOut>>, + schnorr_sighashty: Option<TapSighashType>, + _ecdsa_sighashty: Option<EcdsaSighashType>, + sighash_cache: &mut SighashCache<T>, + auth_data: &mut SatisfactionMaterial, + secp: &Secp256k1<impl Signing + Verification> +) -> Result<bool, SigningError>

    Trait Implementations§

    source§

    impl<Ak: Clone> Clone for RequiredSignatures<Ak>

    source§

    fn clone(&self) -> RequiredSignatures<Ak>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<Ak: Debug> Debug for RequiredSignatures<Ak>

    source§

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

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

    impl<Ak> Default for RequiredSignatures<Ak>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<Ak> Freeze for RequiredSignatures<Ak>
    where + Ak: Freeze,

    §

    impl<Ak> RefUnwindSafe for RequiredSignatures<Ak>
    where + Ak: RefUnwindSafe,

    §

    impl<Ak> Send for RequiredSignatures<Ak>
    where + Ak: Send,

    §

    impl<Ak> Sync for RequiredSignatures<Ak>
    where + Ak: Sync,

    §

    impl<Ak> Unpin for RequiredSignatures<Ak>
    where + Ak: Unpin,

    §

    impl<Ak> UnwindSafe for RequiredSignatures<Ak>
    where + Ak: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.SigningError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.SigningError.html index 25e3744a8e..f30e27d24e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.SigningError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/enum.SigningError.html @@ -1,9 +1,17 @@ -SigningError in bdk_tmp_plan - Rust
    pub enum SigningError {
    +SigningError in bdk_tmp_plan - Rust

    Enum bdk_tmp_plan::SigningError

    source ·
    pub enum SigningError {
         SigHashError(Error),
         DerivationError(Error),
    -}

    Variants§

    §

    SigHashError(Error)

    §

    DerivationError(Error)

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    SigHashError(Error)

    §

    DerivationError(Error)

    Trait Implementations§

    source§

    impl Clone for SigningError

    source§

    fn clone(&self) -> SigningError

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SigningError

    source§

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

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

    impl Display for SigningError

    source§

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

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

    impl Error for SigningError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for SigningError

    source§

    fn from(e: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for SigningError

    source§

    fn from(e: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/fn.plan_satisfaction.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/fn.plan_satisfaction.html index 2f629678d3..bd158ccbb9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/fn.plan_satisfaction.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/fn.plan_satisfaction.html @@ -1 +1,5 @@ -plan_satisfaction in bdk_tmp_plan - Rust
    pub fn plan_satisfaction<Ak>(
        desc: &Descriptor<DefiniteDescriptorKey>,
        assets: &Assets<Ak>
    ) -> Option<Plan<Ak>>where
        Ak: CanDerive + Clone,
    \ No newline at end of file +plan_satisfaction in bdk_tmp_plan - Rust

    Function bdk_tmp_plan::plan_satisfaction

    source ·
    pub fn plan_satisfaction<Ak>(
    +    desc: &Descriptor<DefiniteDescriptorKey>,
    +    assets: &Assets<Ak>
    +) -> Option<Plan<Ak>>
    where + Ak: CanDerive + Clone,
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/index.html index 64f2931367..326f28b1b1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/index.html @@ -1,4 +1,4 @@ -bdk_tmp_plan - Rust

    Crate bdk_tmp_plan

    source ·
    Expand description

    A spending plan or plan for short is a representation of a particular spending path on a +bdk_tmp_plan - Rust

    Crate bdk_tmp_plan

    source ·
    Expand description

    A spending plan or plan for short is a representation of a particular spending path on a descriptor. This allows us to analayze a choice of spending path without producing any signatures or other witness data for it.

    To make a plan you provide the descriptor with “assets” like which keys you are able to use, hash @@ -8,5 +8,5 @@ doing coin selection. Furthermore it provides which subset of those keys and has will actually need as well as what locktime or sequence number you need to set.

    Once you’ve obstained signatures, hash pre-images etc required by the plan, it can create a witness/script_sig for the input.

    -

    Structs

    A plan represents a particular spending path for a descriptor.
    A plan key contains the asset key originally provided along with key in the descriptor it -purports to be able to derive for along with a “hint” on how to derive it.
    Signatures and hash pre-images that must be provided to complete the plan.
    Signatures and hash pre-images that can be used to complete a plan.

    Enums

    The returned value from Plan::try_complete.
    The signatures required to complete the plan

    Traits

    Functions

    \ No newline at end of file +

    Structs§

    • A plan represents a particular spending path for a descriptor.
    • A plan key contains the asset key originally provided along with key in the descriptor it +purports to be able to derive for along with a “hint” on how to derive it.
    • Signatures and hash pre-images that must be provided to complete the plan.
    • Signatures and hash pre-images that can be used to complete a plan.

    Enums§

    Traits§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/sidebar-items.js index 5dcb351bd4..9e726c8fa9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["PlanState","The returned value from [`Plan::try_complete`]."],["RequiredSignatures","The signatures required to complete the plan"],["SigningError",""]],"fn":[["plan_satisfaction",""]],"struct":[["Assets",""],["Plan","A plan represents a particular spending path for a descriptor."],["PlanKey","A plan key contains the asset key originally provided along with key in the descriptor it purports to be able to derive for along with a “hint” on how to derive it."],["Requirements","Signatures and hash pre-images that must be provided to complete the plan."],["SatisfactionMaterial","Signatures and hash pre-images that can be used to complete a plan."]],"trait":[["CanDerive",""]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["PlanState","RequiredSignatures","SigningError"],"fn":["plan_satisfaction"],"struct":["Assets","Plan","PlanKey","Requirements","SatisfactionMaterial"],"trait":["CanDerive"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Assets.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Assets.html index 0157d66fc8..6e1570464f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Assets.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Assets.html @@ -1,4 +1,4 @@ -Assets in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::Assets

    source ·
    pub struct Assets<K> {
    +Assets in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::Assets

    source ·
    pub struct Assets<K> {
         pub keys: Vec<K>,
         pub txo_age: Option<Sequence>,
         pub max_locktime: Option<LockTime>,
    @@ -6,8 +6,21 @@
         pub hash256: Vec<Hash>,
         pub ripemd160: Vec<Hash>,
         pub hash160: Vec<Hash>,
    -}

    Fields§

    §keys: Vec<K>§txo_age: Option<Sequence>§max_locktime: Option<LockTime>§sha256: Vec<Hash>§hash256: Vec<Hash>§ripemd160: Vec<Hash>§hash160: Vec<Hash>

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Fields§

    §keys: Vec<K>§txo_age: Option<Sequence>§max_locktime: Option<LockTime>§sha256: Vec<Hash>§hash256: Vec<Hash>§ripemd160: Vec<Hash>§hash160: Vec<Hash>

    Trait Implementations§

    source§

    impl<K: Clone> Clone for Assets<K>

    source§

    fn clone(&self) -> Assets<K>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<K: Debug> Debug for Assets<K>

    source§

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

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

    impl<K> Default for Assets<K>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<K> Freeze for Assets<K>

    §

    impl<K> RefUnwindSafe for Assets<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Assets<K>
    where + K: Send,

    §

    impl<K> Sync for Assets<K>
    where + K: Sync,

    §

    impl<K> Unpin for Assets<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Assets<K>
    where + K: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Plan.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Plan.html index 170f8b590f..9937abfbda 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Plan.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Plan.html @@ -1,12 +1,26 @@ -Plan in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::Plan

    source ·
    pub struct Plan<AK> { /* private fields */ }
    Expand description

    A plan represents a particular spending path for a descriptor.

    +Plan in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::Plan

    source ·
    pub struct Plan<AK> { /* private fields */ }
    Expand description

    A plan represents a particular spending path for a descriptor.

    See the module level documentation for more info.

    -

    Implementations§

    The expected satisfaction weight for the plan if it is completed.

    -

    Witness version for the plan

    -

    The minimum required locktime height or time on the transaction using the plan.

    -

    The minimum required sequence (height or time) on the input to satisfy the plan

    -

    The minimum required transaction version required on the transaction using the plan.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Implementations§

    source§

    impl<Ak> Plan<Ak>
    where + Ak: Clone,

    source

    pub fn expected_weight(&self) -> usize

    The expected satisfaction weight for the plan if it is completed.

    +
    source

    pub fn requirements(&self) -> Requirements<Ak>

    source

    pub fn try_complete(&self, auth_data: &SatisfactionMaterial) -> PlanState<Ak>

    source

    pub fn witness_version(&self) -> Option<WitnessVersion>

    Witness version for the plan

    +
    source

    pub fn required_locktime(&self) -> Option<LockTime>

    The minimum required locktime height or time on the transaction using the plan.

    +
    source

    pub fn required_sequence(&self) -> Option<Sequence>

    The minimum required sequence (height or time) on the input to satisfy the plan

    +
    source

    pub fn min_version(&self) -> Option<u32>

    The minimum required transaction version required on the transaction using the plan.

    +

    Trait Implementations§

    source§

    impl<AK: Clone> Clone for Plan<AK>

    source§

    fn clone(&self) -> Plan<AK>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<AK: Debug> Debug for Plan<AK>

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<AK> !Freeze for Plan<AK>

    §

    impl<AK> RefUnwindSafe for Plan<AK>
    where + AK: RefUnwindSafe,

    §

    impl<AK> Send for Plan<AK>
    where + AK: Send,

    §

    impl<AK> Sync for Plan<AK>
    where + AK: Sync,

    §

    impl<AK> Unpin for Plan<AK>
    where + AK: Unpin,

    §

    impl<AK> UnwindSafe for Plan<AK>
    where + AK: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.PlanKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.PlanKey.html index a539e7ac48..75412ec65d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.PlanKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.PlanKey.html @@ -1,15 +1,29 @@ -PlanKey in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::PlanKey

    source ·
    pub struct PlanKey<Ak> {
    +PlanKey in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::PlanKey

    source ·
    pub struct PlanKey<Ak> {
         pub asset_key: Ak,
         pub derivation_hint: DerivationPath,
         pub descriptor_key: DefiniteDescriptorKey,
    -}
    Expand description

    A plan key contains the asset key originally provided along with key in the descriptor it +}

    Expand description

    A plan key contains the asset key originally provided along with key in the descriptor it purports to be able to derive for along with a “hint” on how to derive it.

    -

    Fields§

    §asset_key: Ak

    The key the planner will sign with

    -
    §derivation_hint: DerivationPath

    A hint from how to get from the asset key to the concrete key we need to sign with.

    -
    §descriptor_key: DefiniteDescriptorKey

    The key that was in the descriptor that we are satisfying with the signature from the asset +

    Fields§

    §asset_key: Ak

    The key the planner will sign with

    +
    §derivation_hint: DerivationPath

    A hint from how to get from the asset key to the concrete key we need to sign with.

    +
    §descriptor_key: DefiniteDescriptorKey

    The key that was in the descriptor that we are satisfying with the signature from the asset key.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<Ak: Clone> Clone for PlanKey<Ak>

    source§

    fn clone(&self) -> PlanKey<Ak>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<Ak: Debug> Debug for PlanKey<Ak>

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<Ak> Freeze for PlanKey<Ak>
    where + Ak: Freeze,

    §

    impl<Ak> RefUnwindSafe for PlanKey<Ak>
    where + Ak: RefUnwindSafe,

    §

    impl<Ak> Send for PlanKey<Ak>
    where + Ak: Send,

    §

    impl<Ak> Sync for PlanKey<Ak>
    where + Ak: Sync,

    §

    impl<Ak> Unpin for PlanKey<Ak>
    where + Ak: Unpin,

    §

    impl<Ak> UnwindSafe for PlanKey<Ak>
    where + Ak: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Requirements.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Requirements.html index 74e8b6140c..e1035cd772 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Requirements.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.Requirements.html @@ -1,18 +1,32 @@ -Requirements in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::Requirements

    source ·
    pub struct Requirements<Ak> {
    +Requirements in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::Requirements

    source ·
    pub struct Requirements<Ak> {
         pub signatures: RequiredSignatures<Ak>,
         pub sha256_images: HashSet<Hash>,
         pub hash160_images: HashSet<Hash>,
         pub hash256_images: HashSet<Hash>,
         pub ripemd160_images: HashSet<Hash>,
    -}
    Expand description

    Signatures and hash pre-images that must be provided to complete the plan.

    -

    Fields§

    §signatures: RequiredSignatures<Ak>

    required signatures

    -
    §sha256_images: HashSet<Hash>

    required sha256 pre-images

    -
    §hash160_images: HashSet<Hash>

    required hash160 pre-images

    -
    §hash256_images: HashSet<Hash>

    required hash256 pre-images

    -
    §ripemd160_images: HashSet<Hash>

    required ripemd160 pre-images

    -

    Implementations§

    Whether any hash pre-images are required in the plan

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Signatures and hash pre-images that must be provided to complete the plan.

    +

    Fields§

    §signatures: RequiredSignatures<Ak>

    required signatures

    +
    §sha256_images: HashSet<Hash>

    required sha256 pre-images

    +
    §hash160_images: HashSet<Hash>

    required hash160 pre-images

    +
    §hash256_images: HashSet<Hash>

    required hash256 pre-images

    +
    §ripemd160_images: HashSet<Hash>

    required ripemd160 pre-images

    +

    Implementations§

    source§

    impl<Ak> Requirements<Ak>

    source

    pub fn requires_hash_preimages(&self) -> bool

    Whether any hash pre-images are required in the plan

    +

    Trait Implementations§

    source§

    impl<Ak: Clone> Clone for Requirements<Ak>

    source§

    fn clone(&self) -> Requirements<Ak>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<Ak: Debug> Debug for Requirements<Ak>

    source§

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

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

    impl<Ak> Default for Requirements<Ak>

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    §

    impl<Ak> Freeze for Requirements<Ak>
    where + Ak: Freeze,

    §

    impl<Ak> RefUnwindSafe for Requirements<Ak>
    where + Ak: RefUnwindSafe,

    §

    impl<Ak> Send for Requirements<Ak>
    where + Ak: Send,

    §

    impl<Ak> Sync for Requirements<Ak>
    where + Ak: Sync,

    §

    impl<Ak> Unpin for Requirements<Ak>
    where + Ak: Unpin,

    §

    impl<Ak> UnwindSafe for Requirements<Ak>
    where + Ak: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.SatisfactionMaterial.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.SatisfactionMaterial.html index ffd2ba058b..46cf0d486d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.SatisfactionMaterial.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/struct.SatisfactionMaterial.html @@ -1,19 +1,27 @@ -SatisfactionMaterial in bdk_tmp_plan - Rust
    pub struct SatisfactionMaterial {
    +SatisfactionMaterial in bdk_tmp_plan - Rust

    Struct bdk_tmp_plan::SatisfactionMaterial

    source ·
    pub struct SatisfactionMaterial {
         pub schnorr_sigs: BTreeMap<DefiniteDescriptorKey, Signature>,
         pub ecdsa_sigs: BTreeMap<DefiniteDescriptorKey, Signature>,
         pub sha256_preimages: BTreeMap<Hash, Vec<u8>>,
         pub hash160_preimages: BTreeMap<Hash, Vec<u8>>,
         pub hash256_preimages: BTreeMap<Hash, Vec<u8>>,
         pub ripemd160_preimages: BTreeMap<Hash, Vec<u8>>,
    -}
    Expand description

    Signatures and hash pre-images that can be used to complete a plan.

    -

    Fields§

    §schnorr_sigs: BTreeMap<DefiniteDescriptorKey, Signature>

    Schnorr signautres under their keys

    -
    §ecdsa_sigs: BTreeMap<DefiniteDescriptorKey, Signature>

    ECDSA signatures under their keys

    -
    §sha256_preimages: BTreeMap<Hash, Vec<u8>>

    SHA256 pre-images under their images

    -
    §hash160_preimages: BTreeMap<Hash, Vec<u8>>

    hash160 pre-images under their images

    -
    §hash256_preimages: BTreeMap<Hash, Vec<u8>>

    hash256 pre-images under their images

    -
    §ripemd160_preimages: BTreeMap<Hash, Vec<u8>>

    ripemd160 pre-images under their images

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Signatures and hash pre-images that can be used to complete a plan.

    +

    Fields§

    §schnorr_sigs: BTreeMap<DefiniteDescriptorKey, Signature>

    Schnorr signautres under their keys

    +
    §ecdsa_sigs: BTreeMap<DefiniteDescriptorKey, Signature>

    ECDSA signatures under their keys

    +
    §sha256_preimages: BTreeMap<Hash, Vec<u8>>

    SHA256 pre-images under their images

    +
    §hash160_preimages: BTreeMap<Hash, Vec<u8>>

    hash160 pre-images under their images

    +
    §hash256_preimages: BTreeMap<Hash, Vec<u8>>

    hash256 pre-images under their images

    +
    §ripemd160_preimages: BTreeMap<Hash, Vec<u8>>

    ripemd160 pre-images under their images

    +

    Trait Implementations§

    source§

    impl Clone for SatisfactionMaterial

    source§

    fn clone(&self) -> SatisfactionMaterial

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SatisfactionMaterial

    source§

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

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

    impl Default for SatisfactionMaterial

    source§

    fn default() -> SatisfactionMaterial

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/trait.CanDerive.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/trait.CanDerive.html index 0210a5a2e6..3e6cb2f8e2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/trait.CanDerive.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_tmp_plan/trait.CanDerive.html @@ -1,3 +1,4 @@ -CanDerive in bdk_tmp_plan - Rust

    Trait bdk_tmp_plan::CanDerive

    source ·
    pub trait CanDerive {
    +CanDerive in bdk_tmp_plan - Rust

    Trait bdk_tmp_plan::CanDerive

    source ·
    pub trait CanDerive {
    +    // Required method
         fn can_derive(&self, key: &DefiniteDescriptorKey) -> Option<DerivationPath>;
    -}

    Required Methods§

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +}

    Required Methods§

    source

    fn can_derive(&self, key: &DefiniteDescriptorKey) -> Option<DerivationPath>

    Implementations on Foreign Types§

    source§

    impl CanDerive for DescriptorPublicKey

    source§

    fn can_derive(&self, key: &DefiniteDescriptorKey) -> Option<DerivationPath>

    source§

    impl CanDerive for KeySource

    source§

    fn can_derive(&self, key: &DefiniteDescriptorKey) -> Option<DerivationPath>

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/all.html index 52a72a9f1e..bc9d8bff95 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/all.html @@ -1,2 +1 @@ -List of all items in this crate

    List of all items

    Structs

    Enums

    Traits

    Macros

    Functions

    Type Definitions

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    Enums

    Traits

    Macros

    Functions

    Type Aliases

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/fn.calc_checksum.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/fn.calc_checksum.html index 6948110a7a..ca31a1c750 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/fn.calc_checksum.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/fn.calc_checksum.html @@ -1,3 +1,2 @@ -calc_checksum in bdk_wallet::descriptor::checksum - Rust
    pub fn calc_checksum(desc: &str) -> Result<String, DescriptorError>
    Expand description

    Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation

    -
    \ No newline at end of file +calc_checksum in bdk_wallet::descriptor::checksum - Rust

    Function bdk_wallet::descriptor::checksum::calc_checksum

    source ·
    pub fn calc_checksum(desc: &str) -> Result<String, DescriptorError>
    Expand description

    Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/fn.calc_checksum_bytes.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/fn.calc_checksum_bytes.html index c359bae810..62c8f24029 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/fn.calc_checksum_bytes.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/fn.calc_checksum_bytes.html @@ -1,3 +1,2 @@ -calc_checksum_bytes in bdk_wallet::descriptor::checksum - Rust
    pub fn calc_checksum_bytes(desc: &str) -> Result<[u8; 8], DescriptorError>
    Expand description

    Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation

    -
    \ No newline at end of file +calc_checksum_bytes in bdk_wallet::descriptor::checksum - Rust

    Function bdk_wallet::descriptor::checksum::calc_checksum_bytes

    source ·
    pub fn calc_checksum_bytes(desc: &str) -> Result<[u8; 8], DescriptorError>
    Expand description

    Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/index.html index ab6975cd0f..f8d9e74cc5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/index.html @@ -1,5 +1,4 @@ -bdk_wallet::descriptor::checksum - Rust
    Expand description

    Descriptor checksum

    +bdk_wallet::descriptor::checksum - Rust

    Module bdk_wallet::descriptor::checksum

    source ·
    Expand description

    Descriptor checksum

    This module contains a re-implementation of the function used by Bitcoin Core to calculate the checksum of a descriptor

    -

    Functions

    Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation
    Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation
    \ No newline at end of file +

    Functions§

    • Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation
    • Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/sidebar-items.js index c3609de7d4..b5189973bf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/checksum/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"fn":[["calc_checksum","Compute the checksum of a descriptor, excludes any existing checksum in the descriptor string from the calculation"],["calc_checksum_bytes","Compute the checksum bytes of a descriptor, excludes any existing checksum in the descriptor string from the calculation"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"fn":["calc_checksum","calc_checksum_bytes"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Descriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Descriptor.html index b3217c0862..c0376d21fe 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Descriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Descriptor.html @@ -1,57 +1,70 @@ -Descriptor in bdk_wallet::descriptor - Rust
    pub enum Descriptor<Pk>where
        Pk: MiniscriptKey,
    { +Descriptor in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Descriptor

    pub enum Descriptor<Pk>
    where + Pk: MiniscriptKey,
    { Bare(Bare<Pk>), Pkh(Pkh<Pk>), Wpkh(Wpkh<Pk>), Sh(Sh<Pk>), Wsh(Wsh<Pk>), Tr(Tr<Pk>), -}
    Expand description

    Script descriptor

    -

    Variants§

    §

    Bare(Bare<Pk>)

    A raw scriptpubkey (including pay-to-pubkey) under Legacy context

    +}
    Expand description

    Script descriptor

    +

    Variants§

    §

    Bare(Bare<Pk>)

    A raw scriptpubkey (including pay-to-pubkey) under Legacy context

    §

    Pkh(Pkh<Pk>)

    Pay-to-PubKey-Hash

    §

    Wpkh(Wpkh<Pk>)

    Pay-to-Witness-PubKey-Hash

    §

    Sh(Sh<Pk>)

    Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)

    §

    Wsh(Wsh<Pk>)

    Pay-to-Witness-ScriptHash with Segwitv0 context

    §

    Tr(Tr<Pk>)

    Pay-to-Taproot

    -

    Implementations§

    Create a new pk descriptor

    -

    Create a new PkH descriptor

    -

    Create a new Wpkh descriptor +

    Implementations§

    §

    impl<Pk> Descriptor<Pk>
    where + Pk: MiniscriptKey,

    pub fn new_pk(pk: Pk) -> Descriptor<Pk>

    Create a new pk descriptor

    +

    pub fn new_pkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new PkH descriptor

    +

    pub fn new_wpkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new Wpkh descriptor Will return Err if uncompressed key is used

    -

    Create a new sh wrapped wpkh from Pk. +

    pub fn new_sh_wpkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wpkh from Pk. Errors when uncompressed keys are supplied

    -

    Create a new sh for a given redeem script +

    pub fn new_sh(ms: Miniscript<Pk, Legacy>) -> Result<Descriptor<Pk>, Error>

    Create a new sh for a given redeem script Errors when miniscript exceeds resource limits under p2sh context or does not type check at the top level

    -

    Create a new wsh descriptor from witness script +

    pub fn new_wsh(ms: Miniscript<Pk, Segwitv0>) -> Result<Descriptor<Pk>, Error>

    Create a new wsh descriptor from witness script Errors when miniscript exceeds resource limits under p2sh context or does not type check at the top level

    -

    Create a new sh wrapped wsh descriptor with witness script +

    pub fn new_sh_wsh(ms: Miniscript<Pk, Segwitv0>) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wsh descriptor with witness script Errors when miniscript exceeds resource limits under wsh context or does not type check at the top level

    -

    Create a new bare descriptor from witness script +

    pub fn new_bare(ms: Miniscript<Pk, BareCtx>) -> Result<Descriptor<Pk>, Error>

    Create a new bare descriptor from witness script Errors when miniscript exceeds resource limits under bare context or does not type check at the top level

    -

    Create a new sh wrapper for the given wpkh descriptor

    -

    Create a new sh wrapper for the given wsh descriptor

    -

    Create a new sh sortedmulti descriptor with threshold k +

    pub fn new_sh_with_wpkh(wpkh: Wpkh<Pk>) -> Descriptor<Pk>

    Create a new sh wrapper for the given wpkh descriptor

    +

    pub fn new_sh_with_wsh(wsh: Wsh<Pk>) -> Descriptor<Pk>

    Create a new sh wrapper for the given wsh descriptor

    +

    pub fn new_sh_sortedmulti( + k: usize, + pks: Vec<Pk> +) -> Result<Descriptor<Pk>, Error>

    Create a new sh sortedmulti descriptor with threshold k and Vec of pks. Errors when miniscript exceeds resource limits under p2sh context

    -

    Create a new sh wrapped wsh sortedmulti descriptor from threshold +

    pub fn new_sh_wsh_sortedmulti( + k: usize, + pks: Vec<Pk> +) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wsh sortedmulti descriptor from threshold k and Vec of pks Errors when miniscript exceeds resource limits under segwit context

    -

    Create a new wsh sorted multi descriptor +

    pub fn new_wsh_sortedmulti( + k: usize, + pks: Vec<Pk> +) -> Result<Descriptor<Pk>, Error>

    Create a new wsh sorted multi descriptor Errors when miniscript exceeds resource limits under p2sh context

    -

    Create new tr descriptor +

    pub fn new_tr( + key: Pk, + script: Option<TapTree<Pk>> +) -> Result<Descriptor<Pk>, Error>

    Create new tr descriptor Errors when miniscript exceeds resource limits under Tap context

    -

    Get the [DescriptorType] of Descriptor

    -

    Checks whether the descriptor is safe.

    +

    pub fn desc_type(&self) -> DescriptorType

    Get the [DescriptorType] of Descriptor

    +

    pub fn sanity_check(&self) -> Result<(), Error>

    Checks whether the descriptor is safe.

    Checks whether all the spend paths in the descriptor are possible on the bitcoin network under the current standardness and consensus rules. Also checks whether the descriptor requires signatures on all spend paths and whether the script is malleable.

    In general, all the guarantees of miniscript hold only for safe scripts. The signer may not be able to find satisfactions even if one exists.

    -

    Computes an upper bound on the difference between a non-satisfied +

    pub fn max_weight_to_satisfy(&self) -> Result<usize, Error>

    Computes an upper bound on the difference between a non-satisfied TxIn’s segwit_weight and a satisfied TxIn’s segwit_weight

    Since this method uses segwit_weight instead of legacy_weight, if you want to include only legacy inputs in your transaction, @@ -61,7 +74,7 @@ for a more accurate estimate.

    segwit transactions, the following will hold for each input if that input was satisfied with the largest possible witness:

    -
    ⓘ
    for i in 0..transaction.input.len() {
    +
    ⓘ
    for i in 0..transaction.input.len() {
         assert_eq!(
             descriptor_for_input[i].max_weight_to_satisfy(),
             transaction.input[i].segwit_weight() - TxIn::default().segwit_weight()
    @@ -70,7 +83,7 @@ that input was satisfied with the largest possible witness:

    Instead, for legacy transactions, the following will hold for each input if that input was satisfied with the largest possible witness:

    -
    ⓘ
    for i in 0..transaction.input.len() {
    +
    ⓘ
    for i in 0..transaction.input.len() {
         assert_eq!(
             descriptor_for_input[i].max_weight_to_satisfy(),
             transaction.input[i].legacy_weight() - TxIn::default().legacy_weight()
    @@ -80,111 +93,269 @@ if that input was satisfied with the largest possible witness:

    sighash suffix. Assumes all Schnorr signatures are 66 bytes, including push opcode and sighash suffix.

    -
    Errors
    +
    §Errors

    When the descriptor is impossible to safisfy (ex: sh(OP_FALSE)).

    -
    👎Deprecated: use max_weight_to_satisfy instead

    Computes an upper bound on the weight of a satisfying witness to the +

    pub fn max_satisfaction_weight(&self) -> Result<usize, Error>

    👎Deprecated: use max_weight_to_satisfy instead

    Computes an upper bound on the weight of a satisfying witness to the transaction.

    Assumes all ec-signatures are 73 bytes, including push opcode and sighash suffix. Includes the weight of the VarInts encoding the scriptSig and witness stack length.

    -
    Errors
    +
    §Errors

    When the descriptor is impossible to safisfy (ex: sh(OP_FALSE)).

    -

    Computes the Bitcoin address of the descriptor, if one exists

    +
    §

    impl<Pk> Descriptor<Pk>
    where + Pk: MiniscriptKey + ToPublicKey,

    pub fn address(&self, network: Network) -> Result<Address, Error>

    Computes the Bitcoin address of the descriptor, if one exists

    Some descriptors like pk() don’t have an address.

    -
    Errors
    +
    §Errors

    For raw/bare descriptors that don’t have an address.

    -

    Computes the scriptpubkey of the descriptor.

    -

    Computes the scriptSig that will be in place for an unsigned input +

    pub fn script_pubkey(&self) -> ScriptBuf

    Computes the scriptpubkey of the descriptor.

    +

    pub fn unsigned_script_sig(&self) -> ScriptBuf

    Computes the scriptSig that will be in place for an unsigned input spending an output with this descriptor. For pre-segwit descriptors, which use the scriptSig for signatures, this returns the empty script.

    This is used in Segwit transactions to produce an unsigned transaction whose txid will not change during signing (since only the witness data will change).

    -

    Computes the the underlying script before any hashing is done. For +

    pub fn explicit_script(&self) -> Result<ScriptBuf, Error>

    Computes the the underlying script before any hashing is done. For Bare, Pkh and Wpkh this is the scriptPubkey; for ShWpkh and Sh this is the redeemScript; for the others it is the witness script.

    -
    Errors
    +
    §Errors

    If the descriptor is a taproot descriptor.

    -

    Computes the scriptCode of a transaction output.

    +

    pub fn script_code(&self) -> Result<ScriptBuf, Error>

    Computes the scriptCode of a transaction output.

    The scriptCode is the Script of the previous transaction output being serialized in the sighash when evaluating a CHECKSIG & co. OP code.

    -
    Errors
    +
    §Errors

    If the descriptor is a taproot descriptor.

    -

    Returns satisfying non-malleable witness and scriptSig to spend an +

    pub fn get_satisfaction<S>( + &self, + satisfier: S +) -> Result<(Vec<Vec<u8>>, ScriptBuf), Error>
    where + S: Satisfier<Pk>,

    Returns satisfying non-malleable witness and scriptSig to spend an output controlled by the given descriptor if it possible to construct one using the satisfier S.

    -

    Returns a possilbly mallable satisfying non-malleable witness and scriptSig to spend an +

    pub fn get_satisfaction_mall<S>( + &self, + satisfier: S +) -> Result<(Vec<Vec<u8>>, ScriptBuf), Error>
    where + S: Satisfier<Pk>,

    Returns a possilbly mallable satisfying non-malleable witness and scriptSig to spend an output controlled by the given descriptor if it possible to construct one using the satisfier S.

    -

    Attempts to produce a non-malleable satisfying witness and scriptSig to spend an +

    pub fn satisfy<S>(&self, txin: &mut TxIn, satisfier: S) -> Result<(), Error>
    where + S: Satisfier<Pk>,

    Attempts to produce a non-malleable satisfying witness and scriptSig to spend an output controlled by the given descriptor; add the data to a given TxIn output.

    -

    Returns a plan if the provided assets are sufficient to produce a non-malleable satisfaction

    +
    §

    impl Descriptor<DefiniteDescriptorKey>

    pub fn plan<P>( + self, + provider: &P +) -> Result<Plan, Descriptor<DefiniteDescriptorKey>>
    where + P: AssetProvider<DefiniteDescriptorKey>,

    Returns a plan if the provided assets are sufficient to produce a non-malleable satisfaction

    If the assets aren’t sufficient for generating a Plan, the descriptor is returned

    -

    Returns a plan if the provided assets are sufficient to produce a malleable satisfaction

    +

    pub fn plan_mall<P>( + self, + provider: &P +) -> Result<Plan, Descriptor<DefiniteDescriptorKey>>
    where + P: AssetProvider<DefiniteDescriptorKey>,

    Returns a plan if the provided assets are sufficient to produce a malleable satisfaction

    If the assets aren’t sufficient for generating a Plan, the descriptor is returned

    -
    👎Deprecated: use has_wildcards instead

    Whether or not the descriptor has any wildcards

    -

    Whether or not the descriptor has any wildcards i.e. /*.

    -

    Replaces all wildcards (i.e. /*) in the descriptor with a particular derivation index, +

    §

    impl Descriptor<DescriptorPublicKey>

    pub fn is_deriveable(&self) -> bool

    👎Deprecated: use has_wildcards instead

    Whether or not the descriptor has any wildcards

    +

    pub fn has_wildcard(&self) -> bool

    Whether or not the descriptor has any wildcards i.e. /*.

    +

    pub fn at_derivation_index( + &self, + index: u32 +) -> Result<Descriptor<DefiniteDescriptorKey>, ConversionError>

    Replaces all wildcards (i.e. /*) in the descriptor with a particular derivation index, turning it into a definite descriptor.

    -
    Errors
    +
    §Errors
    • If index ≥ 2^31
    -
    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    -

    Convert all the public keys in the descriptor to [bitcoin::PublicKey] by deriving them or +

    pub fn derive( + &self, + index: u32 +) -> Result<Descriptor<DefiniteDescriptorKey>, ConversionError>

    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    +

    pub fn derived_descriptor<C>( + &self, + secp: &Secp256k1<C>, + index: u32 +) -> Result<Descriptor<PublicKey>, ConversionError>
    where + C: Verification,

    Convert all the public keys in the descriptor to [bitcoin::PublicKey] by deriving them or otherwise converting them. All [bitcoin::secp256k1::XOnlyPublicKey]s are converted to by adding a default(0x02) y-coordinate.

    This is a shorthand for:

    -
        .expect("Valid ranged descriptor");
    +
        .expect("Valid ranged descriptor");
     let derived_descriptor = descriptor.at_derivation_index(index).unwrap().derived_descriptor(&secp).unwrap();

    and is only here really here for backwards compatbility. -See at_derivation_index and [derived_descriptor] for more documentation.

    -
    Errors
    +See at_derivation_index and [derived_descriptor] for more documentation.

    +
    §Errors

    This function will return an error if hardened derivation is attempted.

    -

    Parse a descriptor that may contain secret keys

    +

    pub fn parse_descriptor<C>( + secp: &Secp256k1<C>, + s: &str +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>
    where + C: Signing,

    Parse a descriptor that may contain secret keys

    Internally turns every secret key found into the corresponding public key and then returns a a descriptor that only contains public keys and a map to lookup the secret key given a public key.

    -

    Serialize a descriptor to string with its secret keys

    -

    Utility method for deriving the descriptor at each index in a range to find one matching +

    pub fn to_string_with_secret( + &self, + key_map: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey> +) -> String

    Serialize a descriptor to string with its secret keys

    +

    pub fn find_derivation_index_for_spk<C>( + &self, + secp: &Secp256k1<C>, + script_pubkey: &Script, + range: Range<u32> +) -> Result<Option<(u32, Descriptor<PublicKey>)>, ConversionError>
    where + C: Verification,

    Utility method for deriving the descriptor at each index in a range to find one matching script_pubkey.

    If it finds a match then it returns the index it was derived at and the concrete descriptor at that index. If the descriptor is non-derivable then it will simply check the script pubkey against the descriptor and return it if it matches (in this case the index returned will be meaningless).

    -

    Whether this descriptor contains a key that has multiple derivation paths.

    -

    Get as many descriptors as different paths in this descriptor.

    +

    pub fn is_multipath(&self) -> bool

    Whether this descriptor contains a key that has multiple derivation paths.

    +

    pub fn into_single_descriptors( + self +) -> Result<Vec<Descriptor<DescriptorPublicKey>>, Error>

    Get as many descriptors as different paths in this descriptor.

    For multipath descriptors it will return as many descriptors as there is “parallel” paths. For regular descriptors it will just return itself.

    -

    Convert all the public keys in the descriptor to [bitcoin::PublicKey] by deriving them or +

    §

    impl Descriptor<DefiniteDescriptorKey>

    pub fn derived_descriptor<C>( + &self, + secp: &Secp256k1<C> +) -> Result<Descriptor<PublicKey>, ConversionError>
    where + C: Verification,

    Convert all the public keys in the descriptor to [bitcoin::PublicKey] by deriving them or otherwise converting them. All [bitcoin::secp256k1::XOnlyPublicKey]s are converted to by adding a default(0x02) y-coordinate.

    -
    Examples
    +
    §Examples
    use miniscript::descriptor::{Descriptor, DescriptorPublicKey};
     use miniscript::bitcoin::secp256k1;
     use std::str::FromStr;
     
     // test from bip 86
     let secp = secp256k1::Secp256k1::verification_only();
    -let descriptor = Descriptor::<DescriptorPublicKey>::from_str("tr(xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/*)")
    -    .expect("Valid ranged descriptor");
    -let result = descriptor.at_derivation_index(0).unwrap().derived_descriptor(&secp).expect("Non-hardened derivation");
    -assert_eq!(result.to_string(), "tr(03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115)#6qm9h8ym");
    -
    Errors
    +let descriptor = Descriptor::<DescriptorPublicKey>::from_str("tr(xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/*)") + .expect("Valid ranged descriptor"); +let result = descriptor.at_derivation_index(0).unwrap().derived_descriptor(&secp).expect("Non-hardened derivation"); +assert_eq!(result.to_string(), "tr(03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115)#6qm9h8ym");
    +
    §Errors

    This function will return an error if hardened derivation is attempted.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the minimum value (in satoshis) at which an output is broadcastable. -Panics if the descriptor wildcard is hardened. Read more
    Returns the descriptor id, calculated as the sha256 of the descriptor, checksum not -included. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Formats the value using the given formatter. Read more
    Extract the spending policy
    Run a predicate on every key in the descriptor, returning whether -the predicate returned true for every key Read more
    Run a predicate on every key in the descriptor, returning whether -the predicate returned true for any key Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    The associated error which can be returned from parsing.
    Parses a string s to return a value of this type. Read more

    Parse an expression tree into a descriptor.

    -
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    Converts this object into an abstract policy.
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    Serialize this value into the given Serde serializer. Read more

    Converts a descriptor using abstract keys to one using specific keys.

    -
    The associated output type. This must be Self<Q>.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    §

    impl<Pk> Clone for Descriptor<Pk>
    where + Pk: Clone + MiniscriptKey,

    §

    fn clone(&self) -> Descriptor<Pk>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl<Pk> Debug for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

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

    Formats the value using the given formatter. Read more
    §

    impl DescriptorExt for Descriptor<DescriptorPublicKey>

    §

    fn dust_value(&self) -> u64

    Returns the minimum value (in satoshis) at which an output is broadcastable. +Panics if the descriptor wildcard is hardened.
    §

    fn descriptor_id(&self) -> DescriptorId

    Returns the descriptor id, calculated as the sha256 of the descriptor, checksum not +included.
    §

    impl<'de, Pk> Deserialize<'de> for Descriptor<Pk>
    where + Pk: MiniscriptKey + FromStr, + <Pk as MiniscriptKey>::Sha256: FromStr, + <Pk as MiniscriptKey>::Hash256: FromStr, + <Pk as MiniscriptKey>::Ripemd160: FromStr, + <Pk as MiniscriptKey>::Hash160: FromStr, + <Pk as FromStr>::Err: Display, + <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: Display, + <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: Display, + <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: Display, + <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: Display,

    §

    fn deserialize<D>( + deserializer: D +) -> Result<Descriptor<Pk>, <D as Deserializer<'de>>::Error>
    where + D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl<Pk> Display for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

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

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

    impl ExtractPolicy for Descriptor<DescriptorPublicKey>

    source§

    fn extract_policy( + &self, + signers: &SignersContainer, + build_sat: BuildSatisfaction<'_>, + secp: &Secp256k1<All> +) -> Result<Option<Policy>, Error>

    Extract the spending policy
    §

    impl<Pk> ForEachKey<Pk> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn for_each_key<'a, F>(&'a self, pred: F) -> bool
    where + F: FnMut(&'a Pk) -> bool,

    Run a predicate on every key in the descriptor, returning whether +the predicate returned true for every key
    §

    fn for_any_key<'a, F>(&'a self, pred: F) -> bool
    where + F: FnMut(&'a Pk) -> bool, + Pk: 'a,

    Run a predicate on every key in the descriptor, returning whether +the predicate returned true for any key
    §

    impl<Pk> From<Bare<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Bare<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Pkh<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Pkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Sh<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Sh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Tr<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Tr<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Wpkh<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Wpkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> From<Wsh<Pk>> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn from(inner: Wsh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    §

    impl<Pk> FromStr for Descriptor<Pk>
    where + Pk: MiniscriptKey + FromStr, + <Pk as MiniscriptKey>::Sha256: FromStr, + <Pk as MiniscriptKey>::Hash256: FromStr, + <Pk as MiniscriptKey>::Ripemd160: FromStr, + <Pk as MiniscriptKey>::Hash160: FromStr, + <Pk as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: ToString,

    §

    type Err = Error

    The associated error which can be returned from parsing.
    §

    fn from_str(s: &str) -> Result<Descriptor<Pk>, Error>

    Parses a string s to return a value of this type. Read more
    §

    impl<Pk> FromTree for Descriptor<Pk>
    where + Pk: MiniscriptKey + FromStr, + <Pk as MiniscriptKey>::Sha256: FromStr, + <Pk as MiniscriptKey>::Hash256: FromStr, + <Pk as MiniscriptKey>::Ripemd160: FromStr, + <Pk as MiniscriptKey>::Hash160: FromStr, + <Pk as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: ToString,

    §

    fn from_tree(top: &Tree<'_>) -> Result<Descriptor<Pk>, Error>

    Parse an expression tree into a descriptor.

    +
    §

    impl<Pk> Hash for Descriptor<Pk>
    where + Pk: Hash + MiniscriptKey,

    §

    fn hash<__H>(&self, state: &mut __H)
    where + __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl<Pk> Liftable<Pk> for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn lift(&self) -> Result<Policy<Pk>, Error>

    Converts this object into an abstract policy.
    §

    impl<Pk> Ord for Descriptor<Pk>
    where + Pk: Ord + MiniscriptKey,

    §

    fn cmp(&self, other: &Descriptor<Pk>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl<Pk> PartialEq for Descriptor<Pk>
    where + Pk: PartialEq + MiniscriptKey,

    §

    fn eq(&self, other: &Descriptor<Pk>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl<Pk> PartialOrd for Descriptor<Pk>
    where + Pk: PartialOrd + MiniscriptKey,

    §

    fn partial_cmp(&self, other: &Descriptor<Pk>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl<'de, Pk> Serialize for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    §

    fn serialize<S>( + &self, + serializer: S +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where + S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl<P, Q> TranslatePk<P, Q> for Descriptor<P>
    where + P: MiniscriptKey, + Q: MiniscriptKey,

    §

    fn translate_pk<T, E>( + &self, + t: &mut T +) -> Result<<Descriptor<P> as TranslatePk<P, Q>>::Output, TranslateErr<E>>
    where + T: Translator<P, Q, E>,

    Converts a descriptor using abstract keys to one using specific keys.

    +
    §

    type Output = Descriptor<Q>

    The associated output type. This must be Self<Q>.
    §

    impl<Pk> Eq for Descriptor<Pk>
    where + Pk: Eq + MiniscriptKey,

    §

    impl<Pk> StructuralPartialEq for Descriptor<Pk>
    where + Pk: MiniscriptKey,

    Auto Trait Implementations§

    §

    impl<Pk> !Freeze for Descriptor<Pk>

    §

    impl<Pk> RefUnwindSafe for Descriptor<Pk>
    where + Pk: RefUnwindSafe, + <Pk as MiniscriptKey>::Sha256: RefUnwindSafe, + <Pk as MiniscriptKey>::Hash256: RefUnwindSafe, + <Pk as MiniscriptKey>::Ripemd160: RefUnwindSafe, + <Pk as MiniscriptKey>::Hash160: RefUnwindSafe,

    §

    impl<Pk> Send for Descriptor<Pk>
    where + Pk: Send + Sync, + <Pk as MiniscriptKey>::Sha256: Send + Sync, + <Pk as MiniscriptKey>::Hash256: Send + Sync, + <Pk as MiniscriptKey>::Ripemd160: Send + Sync, + <Pk as MiniscriptKey>::Hash160: Send + Sync,

    §

    impl<Pk> Sync for Descriptor<Pk>
    where + Pk: Sync + Send, + <Pk as MiniscriptKey>::Sha256: Sync + Send, + <Pk as MiniscriptKey>::Hash256: Sync + Send, + <Pk as MiniscriptKey>::Ripemd160: Sync + Send, + <Pk as MiniscriptKey>::Hash160: Sync + Send,

    §

    impl<Pk> Unpin for Descriptor<Pk>
    where + Pk: Unpin, + <Pk as MiniscriptKey>::Sha256: Unpin, + <Pk as MiniscriptKey>::Hash256: Unpin, + <Pk as MiniscriptKey>::Ripemd160: Unpin, + <Pk as MiniscriptKey>::Hash160: Unpin,

    §

    impl<Pk> UnwindSafe for Descriptor<Pk>
    where + Pk: UnwindSafe + RefUnwindSafe, + <Pk as MiniscriptKey>::Sha256: UnwindSafe + RefUnwindSafe, + <Pk as MiniscriptKey>::Hash256: UnwindSafe + RefUnwindSafe, + <Pk as MiniscriptKey>::Ripemd160: UnwindSafe + RefUnwindSafe, + <Pk as MiniscriptKey>::Hash160: UnwindSafe + RefUnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.DescriptorPublicKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.DescriptorPublicKey.html index 263296e360..1fb4ee45e2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.DescriptorPublicKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.DescriptorPublicKey.html @@ -1,55 +1,85 @@ -DescriptorPublicKey in bdk_wallet::descriptor - Rust
    pub enum DescriptorPublicKey {
    +DescriptorPublicKey in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::DescriptorPublicKey

    pub enum DescriptorPublicKey {
         Single(SinglePub),
         XPub(DescriptorXKey<Xpub>),
         MultiXPub(DescriptorMultiXKey<Xpub>),
    -}
    Expand description

    The descriptor pubkey, either a single pubkey or an xpub.

    -

    Variants§

    §

    Single(SinglePub)

    Single public key.

    +}
    Expand description

    The descriptor pubkey, either a single pubkey or an xpub.

    +

    Variants§

    §

    Single(SinglePub)

    Single public key.

    §

    XPub(DescriptorXKey<Xpub>)

    Extended public key (xpub).

    §

    MultiXPub(DescriptorMultiXKey<Xpub>)

    Multiple extended public keys.

    -

    Implementations§

    The fingerprint of the master key associated with this key, 0x00000000 if none.

    -

    Full path, from the master key

    +

    Implementations§

    §

    impl DescriptorPublicKey

    pub fn master_fingerprint(&self) -> Fingerprint

    The fingerprint of the master key associated with this key, 0x00000000 if none.

    +

    pub fn full_derivation_path(&self) -> Option<DerivationPath>

    Full path, from the master key

    For wildcard keys this will return the path up to the wildcard, so you can get full paths by appending one additional derivation step, according to the wildcard type (hardened or normal).

    For multipath extended keys, this returns None.

    -

    Returns a vector containing the full derivation paths from the master key. +

    pub fn full_derivation_paths(&self) -> Vec<DerivationPath>

    Returns a vector containing the full derivation paths from the master key. The vector will contain just one element for single keys, and multiple elements for multipath extended keys.

    For wildcard keys this will return the path up to the wildcard, so you can get full paths by appending one additional derivation step, according to the wildcard type (hardened or normal).

    -
    👎Deprecated: use has_wildcard instead

    Whether or not the key has a wildcard

    -

    Whether or not the key has a wildcard

    -
    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    -

    Replaces any wildcard (i.e. /*) in the key with a particular derivation index, turning it into a +

    pub fn is_deriveable(&self) -> bool

    👎Deprecated: use has_wildcard instead

    Whether or not the key has a wildcard

    +

    pub fn has_wildcard(&self) -> bool

    Whether or not the key has a wildcard

    +

    pub fn derive( + self, + index: u32 +) -> Result<DefiniteDescriptorKey, ConversionError>

    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    +

    pub fn at_derivation_index( + self, + index: u32 +) -> Result<DefiniteDescriptorKey, ConversionError>

    Replaces any wildcard (i.e. /*) in the key with a particular derivation index, turning it into a definite key (i.e. one where all the derivation paths are set).

    -
    Returns
    +
    §Returns
    • If this key is not an xpub, returns self.
    • If this key is an xpub but does not have a wildcard, returns self.
    • Otherwise, returns the xpub at derivation index (removing the wildcard).
    -
    Errors
    +
    §Errors
    • If index is hardened.
    -

    Whether or not this key has multiple derivation paths.

    -

    Get as many keys as derivation paths in this key.

    +

    pub fn is_multipath(&self) -> bool

    Whether or not this key has multiple derivation paths.

    +

    pub fn into_single_keys(self) -> Vec<DescriptorPublicKey>

    Get as many keys as derivation paths in this key.

    For raw public key and single-path extended keys it will return the key itself. For multipath extended keys it will return a single-path extended key per derivation path.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    The associated error which can be returned from parsing.
    Parses a string s to return a value of this type. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    Convert self into a Assets struct
    Turn the key into a DescriptorKey within the requested ScriptContext
    The associated [bitcoin::hashes::sha256::Hash] for this [MiniscriptKey], used in the -sha256 fragment. Read more
    The associated [miniscript::hash256::Hash] for this [MiniscriptKey], used in the -hash256 fragment. Read more
    The associated [bitcoin::hashes::ripemd160::Hash] for this [MiniscriptKey] type, used -in the ripemd160 fragment. Read more
    The associated [bitcoin::hashes::hash160::Hash] for this [MiniscriptKey] type, used in -the hash160 fragment. Read more
    Returns true if the pubkey is uncompressed. Defaults to false.
    Returns true if the pubkey is an x-only pubkey. Defaults to false.
    Returns the number of different derivation paths in this key. Only >1 for keys -in BIP389 multipath descriptors. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    §

    impl Clone for DescriptorPublicKey

    §

    fn clone(&self) -> DescriptorPublicKey

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for DescriptorPublicKey

    §

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

    Formats the value using the given formatter. Read more
    §

    impl<'de> Deserialize<'de> for DescriptorPublicKey

    §

    fn deserialize<D>( + deserializer: D +) -> Result<DescriptorPublicKey, <D as Deserializer<'de>>::Error>
    where + D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl Display for DescriptorPublicKey

    §

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

    Formats the value using the given formatter. Read more
    §

    impl From<DefiniteDescriptorKey> for DescriptorPublicKey

    §

    fn from(d: DefiniteDescriptorKey) -> DescriptorPublicKey

    Converts to this type from the input type.
    §

    impl FromStr for DescriptorPublicKey

    §

    type Err = DescriptorKeyParseError

    The associated error which can be returned from parsing.
    §

    fn from_str( + s: &str +) -> Result<DescriptorPublicKey, <DescriptorPublicKey as FromStr>::Err>

    Parses a string s to return a value of this type. Read more
    §

    impl Hash for DescriptorPublicKey

    §

    fn hash<__H>(&self, state: &mut __H)
    where + __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl IntoAssets for DescriptorPublicKey

    §

    fn into_assets(self) -> Assets

    Convert self into a Assets struct
    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorPublicKey

    source§

    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>

    Turn the key into a DescriptorKey within the requested ScriptContext
    §

    impl MiniscriptKey for DescriptorPublicKey

    §

    type Sha256 = Hash

    The associated [bitcoin::hashes::sha256::Hash] for this [MiniscriptKey], used in the +sha256 fragment.
    §

    type Hash256 = Hash

    The associated [miniscript::hash256::Hash] for this [MiniscriptKey], used in the +hash256 fragment.
    §

    type Ripemd160 = Hash

    The associated [bitcoin::hashes::ripemd160::Hash] for this [MiniscriptKey] type, used +in the ripemd160 fragment.
    §

    type Hash160 = Hash

    The associated [bitcoin::hashes::hash160::Hash] for this [MiniscriptKey] type, used in +the hash160 fragment.
    §

    fn is_uncompressed(&self) -> bool

    Returns true if the pubkey is uncompressed. Defaults to false.
    §

    fn is_x_only_key(&self) -> bool

    Returns true if the pubkey is an x-only pubkey. Defaults to false.
    §

    fn num_der_paths(&self) -> usize

    Returns the number of different derivation paths in this key. Only >1 for keys +in BIP389 multipath descriptors.
    §

    impl Ord for DescriptorPublicKey

    §

    fn cmp(&self, other: &DescriptorPublicKey) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl PartialEq for DescriptorPublicKey

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl PartialOrd for DescriptorPublicKey

    §

    fn partial_cmp(&self, other: &DescriptorPublicKey) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl Serialize for DescriptorPublicKey

    §

    fn serialize<S>( + &self, + serializer: S +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where + S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl Eq for DescriptorPublicKey

    §

    impl StructuralPartialEq for DescriptorPublicKey

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Legacy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Legacy.html index 06a02a1e8a..caefdb30a3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Legacy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Legacy.html @@ -1,25 +1,38 @@ -Legacy in bdk_wallet::descriptor - Rust
    pub enum Legacy {}
    Expand description

    Legacy ScriptContext +Legacy in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Legacy

    pub enum Legacy {}
    Expand description

    Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under Bare ScriptContext

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    The consensus key associated with the type. Must be a parseable key
    Depending on ScriptContext, fragments can be malleable. For Example, +

    Trait Implementations§

    §

    impl Clone for Legacy

    §

    fn clone(&self) -> Legacy

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for Legacy

    §

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

    Formats the value using the given formatter. Read more
    §

    impl Hash for Legacy

    §

    fn hash<__H>(&self, state: &mut __H)
    where + __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl Ord for Legacy

    §

    fn cmp(&self, other: &Legacy) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl PartialEq for Legacy

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl PartialOrd for Legacy

    §

    fn partial_cmp(&self, other: &Legacy) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl ScriptContext for Legacy

    §

    type Key = PublicKey

    The consensus key associated with the type. Must be a parseable key
    §

    fn check_terminal_non_malleable<Pk>( + frag: &Terminal<Pk, Legacy> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on ScriptContext, fragments can be malleable. For Example, under Legacy context, PkH is malleable because it is possible to estimate the cost of satisfaction because of compressed keys This is currently only used in compiler code for removing malleable compilations. This does NOT recursively check if the children of the fragment are valid or not. Since the compilation proceeds in a leaf to root fashion, -a recursive check is unnecessary. Read more
    Each context has slightly different rules on what Pks are allowed in descriptors +a recursive check is unnecessary.
    §

    fn check_pk<Pk>(pk: &Pk) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Each context has slightly different rules on what Pks are allowed in descriptors Legacy/Bare does not allow x_only keys Segwit does not allow uncompressed keys and x_only keys -Tapscript does not allow uncompressed keys Read more
    Check whether the given satisfaction is valid under the ScriptContext +Tapscript does not allow uncompressed keys
    §

    fn check_witness<Pk>(witness: &[Vec<u8>]) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check whether the given satisfaction is valid under the ScriptContext For example, segwit satisfactions may fail if the witness len is more -3600 or number of stack elements are more than 100. Read more
    Depending on script Context, some of the Terminals might not +3600 or number of stack elements are more than 100.
    §

    fn check_global_consensus_validity<Pk>( + ms: &Miniscript<Pk, Legacy> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on script Context, some of the Terminals might not be valid under the current consensus rules. Or some of the script resource limits may have been exceeded. These miniscripts would never be accepted by the Bitcoin network and hence @@ -28,27 +41,56 @@ For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey uncompressed public keys are non-standard and thus invalid. In LegacyP2SH context, scripts above 520 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. -This does NOT recursively check the miniscript fragments. Read more
    Consensus rules at the Miniscript satisfaction time. +This does NOT recursively check the miniscript fragments.
    §

    fn check_local_consensus_validity<Pk>( + ms: &Miniscript<Pk, Legacy> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Consensus rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. -For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes. Read more
    Policy rules at the Miniscript satisfaction time. +For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes.
    §

    fn check_local_policy_validity<Pk>( + ms: &Miniscript<Pk, Legacy> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Policy rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path in Legacy context scriptSig more -than 1650 bytes Read more
    Depending on script context, the size of a satifaction witness may slightly differ.
    Get the len of public key when serialized based on context +than 1650 bytes
    §

    fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Legacy>) -> Option<usize>
    where + Pk: MiniscriptKey,

    Depending on script context, the size of a satifaction witness may slightly differ.
    §

    fn pk_len<Pk>(pk: &Pk) -> usize
    where + Pk: MiniscriptKey,

    Get the len of public key when serialized based on context Note that this includes the serialization prefix. Returns 34/66 for Bare/Legacy based on key compressedness -34 for Segwitv0, 33 for Tap Read more
    Local helper function to display error messages with context
    The type of signature required for satisfaction
    Depending on script Context, some of the script resource limits +34 for Segwitv0, 33 for Tap
    §

    fn name_str() -> &'static str

    Local helper function to display error messages with context
    §

    fn sig_type() -> SigType

    The type of signature required for satisfaction
    §

    fn check_global_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on script Context, some of the script resource limits may have been exceeded under the current bitcoin core policy rules These miniscripts would never be accepted by the Bitcoin network and hence it is safe to discard them. (unless explicitly disabled by non-standard flag) For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey scripts over 3600 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. -This does NOT recursively check the miniscript fragments. Read more
    Check the consensus + policy(if not disabled) rules that are not based -satisfaction Read more
    Check the consensus + policy(if not disabled) rules including the -ones for satisfaction Read more
    Check whether the top-level is type B
    Other top level checks that are context specific
    Check top level consensus rules.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more
    Returns whether the script context is Legacy
    Returns whether the script context is Segwitv0
    Returns whether the script context is Tap, aka Taproot or Segwit V1

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +This does NOT recursively check the miniscript fragments.
    §

    fn check_global_validity<Pk>( + ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check the consensus + policy(if not disabled) rules that are not based +satisfaction
    §

    fn check_local_validity<Pk>( + ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check the consensus + policy(if not disabled) rules including the +ones for satisfaction
    §

    fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Check whether the top-level is type B
    §

    fn other_top_level_checks<Pk>(_ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Other top level checks that are context specific
    §

    fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Check top level consensus rules.
    §

    impl Eq for Legacy

    §

    impl StructuralPartialEq for Legacy

    Auto Trait Implementations§

    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<Ctx> ExtScriptContext for Ctx
    where + Ctx: ScriptContext + 'static,

    source§

    fn as_enum() -> ScriptContextEnum

    source§

    fn is_legacy() -> bool

    Returns whether the script context is Legacy
    source§

    fn is_segwit_v0() -> bool

    Returns whether the script context is Segwitv0
    source§

    fn is_taproot() -> bool

    Returns whether the script context is Tap, aka Taproot or Segwit V1
    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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Segwitv0.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Segwitv0.html index 991314fe91..7728a26476 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Segwitv0.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/enum.Segwitv0.html @@ -1,22 +1,35 @@ -Segwitv0 in bdk_wallet::descriptor - Rust
    pub enum Segwitv0 {}
    Expand description

    Segwitv0 ScriptContext

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    The consensus key associated with the type. Must be a parseable key
    Depending on ScriptContext, fragments can be malleable. For Example, +Segwitv0 in bdk_wallet::descriptor - Rust

    Enum bdk_wallet::descriptor::Segwitv0

    pub enum Segwitv0 {}
    Expand description

    Segwitv0 ScriptContext

    +

    Trait Implementations§

    §

    impl Clone for Segwitv0

    §

    fn clone(&self) -> Segwitv0

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for Segwitv0

    §

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

    Formats the value using the given formatter. Read more
    §

    impl Hash for Segwitv0

    §

    fn hash<__H>(&self, state: &mut __H)
    where + __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl Ord for Segwitv0

    §

    fn cmp(&self, other: &Segwitv0) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl PartialEq for Segwitv0

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl PartialOrd for Segwitv0

    §

    fn partial_cmp(&self, other: &Segwitv0) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl ScriptContext for Segwitv0

    §

    type Key = PublicKey

    The consensus key associated with the type. Must be a parseable key
    §

    fn check_terminal_non_malleable<Pk>( + _frag: &Terminal<Pk, Segwitv0> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on ScriptContext, fragments can be malleable. For Example, under Legacy context, PkH is malleable because it is possible to estimate the cost of satisfaction because of compressed keys This is currently only used in compiler code for removing malleable compilations. This does NOT recursively check if the children of the fragment are valid or not. Since the compilation proceeds in a leaf to root fashion, -a recursive check is unnecessary. Read more
    Each context has slightly different rules on what Pks are allowed in descriptors +a recursive check is unnecessary.
    §

    fn check_pk<Pk>(pk: &Pk) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Each context has slightly different rules on what Pks are allowed in descriptors Legacy/Bare does not allow x_only keys Segwit does not allow uncompressed keys and x_only keys -Tapscript does not allow uncompressed keys Read more
    Check whether the given satisfaction is valid under the ScriptContext +Tapscript does not allow uncompressed keys
    §

    fn check_witness<Pk>(witness: &[Vec<u8>]) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check whether the given satisfaction is valid under the ScriptContext For example, segwit satisfactions may fail if the witness len is more -3600 or number of stack elements are more than 100. Read more
    Depending on script Context, some of the Terminals might not +3600 or number of stack elements are more than 100.
    §

    fn check_global_consensus_validity<Pk>( + ms: &Miniscript<Pk, Segwitv0> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on script Context, some of the Terminals might not be valid under the current consensus rules. Or some of the script resource limits may have been exceeded. These miniscripts would never be accepted by the Bitcoin network and hence @@ -25,27 +38,56 @@ For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey uncompressed public keys are non-standard and thus invalid. In LegacyP2SH context, scripts above 520 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. -This does NOT recursively check the miniscript fragments. Read more
    Consensus rules at the Miniscript satisfaction time. +This does NOT recursively check the miniscript fragments.
    §

    fn check_local_consensus_validity<Pk>( + ms: &Miniscript<Pk, Segwitv0> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Consensus rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. -For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes. Read more
    Depending on script Context, some of the script resource limits +For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes.
    §

    fn check_global_policy_validity<Pk>( + ms: &Miniscript<Pk, Segwitv0> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on script Context, some of the script resource limits may have been exceeded under the current bitcoin core policy rules These miniscripts would never be accepted by the Bitcoin network and hence it is safe to discard them. (unless explicitly disabled by non-standard flag) For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey scripts over 3600 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. -This does NOT recursively check the miniscript fragments. Read more
    Policy rules at the Miniscript satisfaction time. +This does NOT recursively check the miniscript fragments.
    §

    fn check_local_policy_validity<Pk>( + ms: &Miniscript<Pk, Segwitv0> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Policy rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path in Legacy context scriptSig more -than 1650 bytes Read more
    Depending on script context, the size of a satifaction witness may slightly differ.
    Get the len of public key when serialized based on context +than 1650 bytes
    §

    fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Segwitv0>) -> Option<usize>
    where + Pk: MiniscriptKey,

    Depending on script context, the size of a satifaction witness may slightly differ.
    §

    fn pk_len<Pk>(_pk: &Pk) -> usize
    where + Pk: MiniscriptKey,

    Get the len of public key when serialized based on context Note that this includes the serialization prefix. Returns 34/66 for Bare/Legacy based on key compressedness -34 for Segwitv0, 33 for Tap Read more
    Local helper function to display error messages with context
    The type of signature required for satisfaction
    Check the consensus + policy(if not disabled) rules that are not based -satisfaction Read more
    Check the consensus + policy(if not disabled) rules including the -ones for satisfaction Read more
    Check whether the top-level is type B
    Other top level checks that are context specific
    Check top level consensus rules.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more
    Returns whether the script context is Legacy
    Returns whether the script context is Segwitv0
    Returns whether the script context is Tap, aka Taproot or Segwit V1

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +34 for Segwitv0, 33 for Tap
    §

    fn name_str() -> &'static str

    Local helper function to display error messages with context
    §

    fn sig_type() -> SigType

    The type of signature required for satisfaction
    §

    fn check_global_validity<Pk>( + ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check the consensus + policy(if not disabled) rules that are not based +satisfaction
    §

    fn check_local_validity<Pk>( + ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check the consensus + policy(if not disabled) rules including the +ones for satisfaction
    §

    fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Check whether the top-level is type B
    §

    fn other_top_level_checks<Pk>(_ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Other top level checks that are context specific
    §

    fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Check top level consensus rules.
    §

    impl Eq for Segwitv0

    §

    impl StructuralPartialEq for Segwitv0

    Auto Trait Implementations§

    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<Ctx> ExtScriptContext for Ctx
    where + Ctx: ScriptContext + 'static,

    source§

    fn as_enum() -> ScriptContextEnum

    source§

    fn is_legacy() -> bool

    Returns whether the script context is Legacy
    source§

    fn is_segwit_v0() -> bool

    Returns whether the script context is Segwitv0
    source§

    fn is_taproot() -> bool

    Returns whether the script context is Tap, aka Taproot or Segwit V1
    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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/enum.Error.html index 93e85084a6..9da66683c8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/enum.Error.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/enum.Error.html @@ -1,5 +1,4 @@ -Error in bdk_wallet::descriptor::error - Rust
    pub enum Error {
    +Error in bdk_wallet::descriptor::error - Rust

    Enum bdk_wallet::descriptor::error::Error

    source ·
    pub enum Error {
         InvalidHdKeyPath,
         InvalidDescriptorChecksum,
         HardenedDerivationXpub,
    @@ -12,12 +11,12 @@
         Pk(Error),
         Miniscript(Error),
         Hex(HexToBytesError),
    -}
    Expand description

    Errors related to the parsing and usage of descriptors

    -

    Variants§

    §

    InvalidHdKeyPath

    Invalid HD Key path, such as having a wildcard but a length != 1

    +}
    Expand description

    Errors related to the parsing and usage of descriptors

    +

    Variants§

    §

    InvalidHdKeyPath

    Invalid HD Key path, such as having a wildcard but a length != 1

    §

    InvalidDescriptorChecksum

    The provided descriptor doesn’t match its checksum

    §

    HardenedDerivationXpub

    The descriptor contains hardened derivation steps on public extended keys

    §

    MultiPath

    The descriptor contains multipath keys

    -
    §

    Key(KeyError)

    Error thrown while working with keys

    +
    §

    Key(KeyError)

    Error thrown while working with keys

    §

    Policy(PolicyError)

    Error while extracting and manipulating policies

    §

    InvalidDescriptorCharacter(u8)

    Invalid byte found in the descriptor checksum

    §

    Bip32(Error)

    BIP32 error

    @@ -25,9 +24,16 @@
    §

    Pk(Error)

    Key-related error

    §

    Miniscript(Error)

    Miniscript error

    §

    Hex(HexToBytesError)

    Hex decoding error

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for Error

    source§

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

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

    impl Display for Error

    source§

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

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

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for Error

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<HexToBytesError> for Error

    source§

    fn from(err: HexToBytesError) -> Self

    Converts to this type from the input type.
    source§

    impl From<KeyError> for Error

    source§

    fn from(key_error: KeyError) -> Error

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for Error

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/index.html index d8f68540f9..e891ea6ddc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/index.html @@ -1,3 +1,2 @@ -bdk_wallet::descriptor::error - Rust

    Module bdk_wallet::descriptor::error

    source ·
    Expand description

    Descriptor errors

    -

    Enums

    Errors related to the parsing and usage of descriptors
    \ No newline at end of file +bdk_wallet::descriptor::error - Rust

    Module bdk_wallet::descriptor::error

    source ·
    Expand description

    Descriptor errors

    +

    Enums§

    • Errors related to the parsing and usage of descriptors
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/sidebar-items.js index eb47e2c4d1..198d8c4275 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/error/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["Error","Errors related to the parsing and usage of descriptors"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["Error"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/index.html index 5ac9398405..44b0219e25 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/index.html @@ -1,13 +1,12 @@ -bdk_wallet::descriptor - Rust

    Module bdk_wallet::descriptor

    source ·
    Expand description

    Descriptors

    +bdk_wallet::descriptor - Rust

    Module bdk_wallet::descriptor

    source ·
    Expand description

    Descriptors

    This module contains generic utilities to work with descriptors, plus some re-exported types from [miniscript].

    -

    Re-exports

    pub use self::checksum::calc_checksum;
    pub use self::error::Error as DescriptorError;
    pub use self::policy::Policy;

    Modules

    Descriptor checksum
    Descriptor errors
    Descriptor policy
    Descriptor templates

    Structs

    The top-level miniscript abstract syntax tree (AST).

    Enums

    Script descriptor
    The descriptor pubkey, either a single pubkey or an xpub.
    Legacy ScriptContext +

    Re-exports§

    Modules§

    Structs§

    • The top-level miniscript abstract syntax tree (AST).

    Enums§

    • Script descriptor
    • The descriptor pubkey, either a single pubkey or an xpub.
    • Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript -under Bare ScriptContext
    Segwitv0 ScriptContext

    Traits

    Trait implemented on Descriptors to add a method to extract the spending policy
    Trait for types which can be converted into an ExtendedDescriptor and a KeyMap usable by a wallet in a specific [Network]
    The ScriptContext for Miniscript. Additional type information associated with +under Bare ScriptContext
  • Segwitv0 ScriptContext
  • Traits§

    • Trait implemented on Descriptors to add a method to extract the spending policy
    • Trait for types which can be converted into an ExtendedDescriptor and a KeyMap usable by a wallet in a specific [Network]
    • The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. -For example, disallowing uncompressed keys in Segwit context

    Type Definitions

    Alias for a Descriptor that contains extended derived keys
    Alias for a Descriptor that can contain extended keys using DescriptorPublicKey
    Alias for the type of maps that represent derivation paths in a psbt::Input or -psbt::Output
    Alias for the type of maps that represent taproot key origins in a psbt::Input or -psbt::Output
    \ No newline at end of file +For example, disallowing uncompressed keys in Segwit context

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.BuildSatisfaction.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.BuildSatisfaction.html index f55adcce65..300d5ef518 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.BuildSatisfaction.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.BuildSatisfaction.html @@ -1,5 +1,4 @@ -BuildSatisfaction in bdk_wallet::descriptor::policy - Rust
    pub enum BuildSatisfaction<'a> {
    +BuildSatisfaction in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::BuildSatisfaction

    source ·
    pub enum BuildSatisfaction<'a> {
         None,
         Psbt(&'a Psbt),
         PsbtTimelocks {
    @@ -7,16 +6,24 @@
             current_height: u32,
             input_max_height: u32,
         },
    -}
    Expand description

    Options to build the satisfaction field in the policy

    -

    Variants§

    §

    None

    Don’t generate satisfaction field

    +}
    Expand description

    Options to build the satisfaction field in the policy

    +

    Variants§

    §

    None

    Don’t generate satisfaction field

    §

    Psbt(&'a Psbt)

    Analyze the given PSBT to check for existing signatures

    -
    §

    PsbtTimelocks

    Fields

    §psbt: &'a Psbt

    Given PSBT

    -
    §current_height: u32

    Current blockchain height

    -
    §input_max_height: u32

    The highest confirmation height between the inputs +

    §

    PsbtTimelocks

    Like Psbt variant and also check for expired timelocks

    +

    Fields

    §psbt: &'a Psbt

    Given PSBT

    +
    §current_height: u32

    Current blockchain height

    +
    §input_max_height: u32

    The highest confirmation height between the inputs CSV should consider different inputs, but we consider the worst condition for the tx as whole

    -

    Like Psbt variant and also check for expired timelocks

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<'a> Clone for BuildSatisfaction<'a>

    source§

    fn clone(&self) -> BuildSatisfaction<'a>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<'a> Debug for BuildSatisfaction<'a>

    source§

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

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

    impl<'a> Copy for BuildSatisfaction<'a>

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PkOrF.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PkOrF.html index 26ee71c671..cd43047a56 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PkOrF.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PkOrF.html @@ -1,16 +1,26 @@ -PkOrF in bdk_wallet::descriptor::policy - Rust
    pub enum PkOrF {
    +PkOrF in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::PkOrF

    source ·
    pub enum PkOrF {
         Pubkey(PublicKey),
         XOnlyPubkey(XOnlyPublicKey),
         Fingerprint(Fingerprint),
    -}
    Expand description

    A unique identifier for a key

    -

    Variants§

    §

    Pubkey(PublicKey)

    A legacy public key

    +}
    Expand description

    A unique identifier for a key

    +

    Variants§

    §

    Pubkey(PublicKey)

    A legacy public key

    §

    XOnlyPubkey(XOnlyPublicKey)

    A x-only public key

    §

    Fingerprint(Fingerprint)

    An extended key fingerprint

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for PkOrF

    source§

    fn clone(&self) -> PkOrF

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PkOrF

    source§

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

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

    impl Hash for PkOrF

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for PkOrF

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for PkOrF

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for PkOrF

    source§

    impl StructuralPartialEq for PkOrF

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PolicyError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PolicyError.html index 00fc3d1f11..bbeee7eb20 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PolicyError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.PolicyError.html @@ -1,23 +1,29 @@ -PolicyError in bdk_wallet::descriptor::policy - Rust
    pub enum PolicyError {
    +PolicyError in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::PolicyError

    source ·
    pub enum PolicyError {
         NotEnoughItemsSelected(String),
         IndexOutOfRange(usize),
         AddOnLeaf,
         AddOnPartialComplete,
         MixedTimelockUnits,
         IncompatibleConditions,
    -}
    Expand description

    Errors that can happen while extracting and manipulating policies

    -

    Variants§

    §

    NotEnoughItemsSelected(String)

    Not enough items are selected to satisfy a SatisfiableItem::Thresh or a SatisfiableItem::Multisig

    -
    §

    IndexOutOfRange(usize)

    Index out of range for an item to satisfy a SatisfiableItem::Thresh or a SatisfiableItem::Multisig

    -
    §

    AddOnLeaf

    Can not add to an item that is Satisfaction::None or Satisfaction::Complete

    -
    §

    AddOnPartialComplete

    Can not add to an item that is Satisfaction::PartialComplete

    +}
    Expand description

    Errors that can happen while extracting and manipulating policies

    +

    Variants§

    §

    NotEnoughItemsSelected(String)

    Not enough items are selected to satisfy a SatisfiableItem::Thresh or a SatisfiableItem::Multisig

    +
    §

    IndexOutOfRange(usize)

    Index out of range for an item to satisfy a SatisfiableItem::Thresh or a SatisfiableItem::Multisig

    +
    §

    AddOnLeaf

    Can not add to an item that is Satisfaction::None or Satisfaction::Complete

    +
    §

    AddOnPartialComplete

    Can not add to an item that is Satisfaction::PartialComplete

    §

    MixedTimelockUnits

    Can not merge CSV or timelock values unless both are less than or both are equal or greater than 500_000_000

    §

    IncompatibleConditions

    Incompatible conditions (not currently used)

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for PolicyError

    source§

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

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

    impl Display for PolicyError

    source§

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

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

    impl Error for PolicyError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<PolicyError> for CreateTxError

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for Error

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for PolicyError

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for PolicyError

    source§

    impl StructuralPartialEq for PolicyError

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.Satisfaction.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.Satisfaction.html index 58b44c03e4..f2e838c815 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.Satisfaction.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.Satisfaction.html @@ -1,5 +1,4 @@ -Satisfaction in bdk_wallet::descriptor::policy - Rust
    pub enum Satisfaction {
    +Satisfaction in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::Satisfaction

    source ·
    pub enum Satisfaction {
         Partial {
             n: usize,
             m: usize,
    @@ -18,27 +17,36 @@
             condition: Condition,
         },
         None,
    -}
    Expand description

    Represent if and how much a policy item is satisfied by the wallet’s descriptor

    -

    Variants§

    §

    Partial

    Fields

    §n: usize

    Total number of items

    -
    §m: usize

    Threshold

    -
    §items: Vec<usize>

    The items that can be satisfied by the descriptor or are satisfied in the PSBT

    -
    §sorted: Option<bool>

    Whether the items are sorted in lexicographic order (used by sortedmulti)

    -
    §conditions: ConditionMap

    Extra conditions that also need to be satisfied

    -

    Only a partial satisfaction of some kind of threshold policy

    -
    §

    PartialComplete

    Fields

    §n: usize

    Total number of items

    -
    §m: usize

    Threshold

    -
    §items: Vec<usize>

    The items that can be satisfied by the descriptor

    -
    §sorted: Option<bool>

    Whether the items are sorted in lexicographic order (used by sortedmulti)

    -
    §conditions: FoldedConditionMap

    Extra conditions that also need to be satisfied

    -

    Can reach the threshold of some kind of threshold policy

    -
    §

    Complete

    Fields

    §condition: Condition

    Extra conditions that also need to be satisfied

    -

    Can satisfy the policy item

    -
    §

    None

    Cannot satisfy or contribute to the policy item

    -

    Implementations§

    Returns whether the Satisfaction is a leaf item

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Represent if and how much a policy item is satisfied by the wallet’s descriptor

    +

    Variants§

    §

    Partial

    Only a partial satisfaction of some kind of threshold policy

    +

    Fields

    §n: usize

    Total number of items

    +
    §m: usize

    Threshold

    +
    §items: Vec<usize>

    The items that can be satisfied by the descriptor or are satisfied in the PSBT

    +
    §sorted: Option<bool>

    Whether the items are sorted in lexicographic order (used by sortedmulti)

    +
    §conditions: ConditionMap

    Extra conditions that also need to be satisfied

    +
    §

    PartialComplete

    Can reach the threshold of some kind of threshold policy

    +

    Fields

    §n: usize

    Total number of items

    +
    §m: usize

    Threshold

    +
    §items: Vec<usize>

    The items that can be satisfied by the descriptor

    +
    §sorted: Option<bool>

    Whether the items are sorted in lexicographic order (used by sortedmulti)

    +
    §conditions: FoldedConditionMap

    Extra conditions that also need to be satisfied

    +
    §

    Complete

    Can satisfy the policy item

    +

    Fields

    §condition: Condition

    Extra conditions that also need to be satisfied

    +
    §

    None

    Cannot satisfy or contribute to the policy item

    +

    Implementations§

    source§

    impl Satisfaction

    source

    pub fn is_leaf(&self) -> bool

    Returns whether the Satisfaction is a leaf item

    +

    Trait Implementations§

    source§

    impl Clone for Satisfaction

    source§

    fn clone(&self) -> Satisfaction

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Satisfaction

    source§

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

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

    impl From<bool> for Satisfaction

    source§

    fn from(other: bool) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for Satisfaction

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for Satisfaction

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for Satisfaction

    source§

    impl StructuralPartialEq for Satisfaction

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.SatisfiableItem.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.SatisfiableItem.html index c6c897f26e..67b7cc8868 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.SatisfiableItem.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/enum.SatisfiableItem.html @@ -1,5 +1,4 @@ -SatisfiableItem in bdk_wallet::descriptor::policy - Rust
    pub enum SatisfiableItem {
    +SatisfiableItem in bdk_wallet::descriptor::policy - Rust

    Enum bdk_wallet::descriptor::policy::SatisfiableItem

    source ·
    pub enum SatisfiableItem {
         EcdsaSignature(PkOrF),
         SchnorrSignature(PkOrF),
         Sha256Preimage {
    @@ -28,33 +27,42 @@
             items: Vec<Policy>,
             threshold: usize,
         },
    -}
    Expand description

    An item that needs to be satisfied

    -

    Variants§

    §

    EcdsaSignature(PkOrF)

    ECDSA Signature for a raw public key

    +}
    Expand description

    An item that needs to be satisfied

    +

    Variants§

    §

    EcdsaSignature(PkOrF)

    ECDSA Signature for a raw public key

    §

    SchnorrSignature(PkOrF)

    Schnorr Signature for a raw public key

    -
    §

    Sha256Preimage

    Fields

    §hash: Hash

    The digest value

    -

    SHA256 preimage hash

    -
    §

    Hash256Preimage

    Fields

    §hash: Hash

    The digest value

    -

    Double SHA256 preimage hash

    -
    §

    Ripemd160Preimage

    Fields

    §hash: Hash

    The digest value

    -

    RIPEMD160 preimage hash

    -
    §

    Hash160Preimage

    Fields

    §hash: Hash

    The digest value

    -

    SHA256 then RIPEMD160 preimage hash

    -
    §

    AbsoluteTimelock

    Fields

    §value: LockTime

    The timelock value

    -

    Absolute timeclock timestamp

    -
    §

    RelativeTimelock

    Fields

    §value: Sequence

    The timelock value

    -

    Relative timelock locktime

    -
    §

    Multisig

    Fields

    §keys: Vec<PkOrF>

    The raw public key or extended key fingerprint

    -
    §threshold: usize

    The required threshold count

    -

    Multi-signature public keys with threshold count

    -
    §

    Thresh

    Fields

    §items: Vec<Policy>

    The policy items

    -
    §threshold: usize

    The required threshold count

    -

    Threshold items with threshold count

    -

    Implementations§

    Returns whether the SatisfiableItem is a leaf item

    -

    Returns a unique id for the SatisfiableItem

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    §

    Sha256Preimage

    SHA256 preimage hash

    +

    Fields

    §hash: Hash

    The digest value

    +
    §

    Hash256Preimage

    Double SHA256 preimage hash

    +

    Fields

    §hash: Hash

    The digest value

    +
    §

    Ripemd160Preimage

    RIPEMD160 preimage hash

    +

    Fields

    §hash: Hash

    The digest value

    +
    §

    Hash160Preimage

    SHA256 then RIPEMD160 preimage hash

    +

    Fields

    §hash: Hash

    The digest value

    +
    §

    AbsoluteTimelock

    Absolute timeclock timestamp

    +

    Fields

    §value: LockTime

    The timelock value

    +
    §

    RelativeTimelock

    Relative timelock locktime

    +

    Fields

    §value: Sequence

    The timelock value

    +
    §

    Multisig

    Multi-signature public keys with threshold count

    +

    Fields

    §keys: Vec<PkOrF>

    The raw public key or extended key fingerprint

    +
    §threshold: usize

    The required threshold count

    +
    §

    Thresh

    Threshold items with threshold count

    +

    Fields

    §items: Vec<Policy>

    The policy items

    +
    §threshold: usize

    The required threshold count

    +

    Implementations§

    source§

    impl SatisfiableItem

    source

    pub fn is_leaf(&self) -> bool

    Returns whether the SatisfiableItem is a leaf item

    +
    source

    pub fn id(&self) -> String

    Returns a unique id for the SatisfiableItem

    +

    Trait Implementations§

    source§

    impl Clone for SatisfiableItem

    source§

    fn clone(&self) -> SatisfiableItem

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SatisfiableItem

    source§

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

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

    impl From<SatisfiableItem> for Policy

    source§

    fn from(other: SatisfiableItem) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for SatisfiableItem

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for SatisfiableItem

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for SatisfiableItem

    source§

    impl StructuralPartialEq for SatisfiableItem

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/index.html index df565ed8d7..25edbd664a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/index.html @@ -1,18 +1,17 @@ -bdk_wallet::descriptor::policy - Rust

    Module bdk_wallet::descriptor::policy

    source ·
    Expand description

    Descriptor policy

    +bdk_wallet::descriptor::policy - Rust

    Module bdk_wallet::descriptor::policy

    source ·
    Expand description

    Descriptor policy

    This module implements the logic to extract and represent the spending policies of a descriptor in a more human-readable format.

    This is an EXPERIMENTAL feature, API and other major changes are expected.

    -

    Example

    +

    §Example

    use bdk_wallet::descriptor::policy::BuildSatisfaction;
     let secp = Secp256k1::new();
    -let desc = "wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))";
    +let desc = "wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))";
     
     let (extended_desc, key_map) = ExtendedDescriptor::parse_descriptor(&secp, desc)?;
    -println!("{:?}", extended_desc);
    +println!("{:?}", extended_desc);
     
     let signers = Arc::new(SignersContainer::build(key_map, &extended_desc, &secp));
     let policy = extended_desc.extract_policy(&signers, BuildSatisfaction::None, &secp)?;
    -println!("policy: {}", serde_json::to_string(&policy).unwrap());
    -

    Structs

    An extra condition that must be satisfied but that is out of control of the user -TODO: use bitcoin::LockTime and bitcoin::Sequence
    Descriptor spending policy

    Enums

    Options to build the satisfaction field in the policy
    A unique identifier for a key
    Errors that can happen while extracting and manipulating policies
    Represent if and how much a policy item is satisfied by the wallet’s descriptor
    An item that needs to be satisfied

    Type Definitions

    Type for a map of sets of Condition items keyed by each set’s index
    Type for a map of folded sets of Condition items keyed by a vector of the combined set’s indexes
    \ No newline at end of file +println!("policy: {}", serde_json::to_string(&policy).unwrap());
    +

    Structs§

    • An extra condition that must be satisfied but that is out of control of the user +TODO: use bitcoin::LockTime and bitcoin::Sequence
    • Descriptor spending policy

    Enums§

    • Options to build the satisfaction field in the policy
    • A unique identifier for a key
    • Errors that can happen while extracting and manipulating policies
    • Represent if and how much a policy item is satisfied by the wallet’s descriptor
    • An item that needs to be satisfied

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/sidebar-items.js index 0b375ed6fb..99e88c5f4f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["BuildSatisfaction","Options to build the satisfaction field in the policy"],["PkOrF","A unique identifier for a key"],["PolicyError","Errors that can happen while extracting and manipulating policies"],["Satisfaction","Represent if and how much a policy item is satisfied by the wallet’s descriptor"],["SatisfiableItem","An item that needs to be satisfied"]],"struct":[["Condition","An extra condition that must be satisfied but that is out of control of the user TODO: use `bitcoin::LockTime` and `bitcoin::Sequence`"],["Policy","Descriptor spending policy"]],"type":[["ConditionMap","Type for a map of sets of [`Condition`] items keyed by each set’s index"],["FoldedConditionMap","Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set’s indexes"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["BuildSatisfaction","PkOrF","PolicyError","Satisfaction","SatisfiableItem"],"struct":["Condition","Policy"],"type":["ConditionMap","FoldedConditionMap"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Condition.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Condition.html index acba45196d..b791d0a191 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Condition.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Condition.html @@ -1,18 +1,28 @@ -Condition in bdk_wallet::descriptor::policy - Rust
    pub struct Condition {
    +Condition in bdk_wallet::descriptor::policy - Rust

    Struct bdk_wallet::descriptor::policy::Condition

    source ·
    pub struct Condition {
         pub csv: Option<Sequence>,
         pub timelock: Option<LockTime>,
    -}
    Expand description

    An extra condition that must be satisfied but that is out of control of the user +}

    Expand description

    An extra condition that must be satisfied but that is out of control of the user TODO: use bitcoin::LockTime and bitcoin::Sequence

    -

    Fields§

    §csv: Option<Sequence>

    Optional CheckSequenceVerify condition

    -
    §timelock: Option<LockTime>

    Optional timelock condition

    -

    Implementations§

    Returns true if there are no extra conditions to verify

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Fields§

    §csv: Option<Sequence>

    Optional CheckSequenceVerify condition

    +
    §timelock: Option<LockTime>

    Optional timelock condition

    +

    Implementations§

    source§

    impl Condition

    source

    pub fn is_null(&self) -> bool

    Returns true if there are no extra conditions to verify

    +

    Trait Implementations§

    source§

    impl Clone for Condition

    source§

    fn clone(&self) -> Condition

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Condition

    source§

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

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

    impl Default for Condition

    source§

    fn default() -> Condition

    Returns the “default value” for a type. Read more
    source§

    impl Hash for Condition

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for Condition

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for Condition

    source§

    fn partial_cmp(&self, other: &Condition) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Serialize for Condition

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for Condition

    source§

    impl Eq for Condition

    source§

    impl StructuralPartialEq for Condition

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Policy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Policy.html index a0d2b7304a..de27c3cf8c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Policy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/struct.Policy.html @@ -1,25 +1,36 @@ -Policy in bdk_wallet::descriptor::policy - Rust
    pub struct Policy {
    +Policy in bdk_wallet::descriptor::policy - Rust

    Struct bdk_wallet::descriptor::policy::Policy

    source ·
    pub struct Policy {
         pub id: String,
         pub item: SatisfiableItem,
         pub satisfaction: Satisfaction,
         pub contribution: Satisfaction,
    -}
    Expand description

    Descriptor spending policy

    -

    Fields§

    §id: String

    Identifier for this policy node

    -
    §item: SatisfiableItem

    Type of this policy node

    -
    §satisfaction: Satisfaction

    How much a given PSBT already satisfies this policy node in terms of signatures

    -
    §contribution: Satisfaction

    How the wallet’s descriptor can satisfy this policy node

    -

    Implementations§

    Return whether or not a specific path in the policy tree is required to unambiguously +}

    Expand description

    Descriptor spending policy

    +

    Fields§

    §id: String

    Identifier for this policy node

    +
    §item: SatisfiableItem

    Type of this policy node

    +
    §satisfaction: Satisfaction

    How much a given PSBT already satisfies this policy node in terms of signatures

    +
    §contribution: Satisfaction

    How the wallet’s descriptor can satisfy this policy node

    +

    Implementations§

    source§

    impl Policy

    source

    pub fn requires_path(&self) -> bool

    Return whether or not a specific path in the policy tree is required to unambiguously create a transaction

    What this means is that for some spending policies the user should select which paths in the tree it intends to satisfy while signing, because the transaction must be created differently based on that.

    -

    Return the conditions that are set by the spending policy for a given path in the +

    source

    pub fn get_condition( + &self, + path: &BTreeMap<String, Vec<usize>> +) -> Result<Condition, PolicyError>

    Return the conditions that are set by the spending policy for a given path in the policy tree

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for Policy

    source§

    fn clone(&self) -> Policy

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Policy

    source§

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

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

    impl From<SatisfiableItem> for Policy

    source§

    fn from(other: SatisfiableItem) -> Self

    Converts to this type from the input type.
    source§

    impl PartialEq for Policy

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for Policy

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for Policy

    source§

    impl StructuralPartialEq for Policy

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/type.ConditionMap.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/type.ConditionMap.html index 1c070b4c6d..11c5c9046a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/type.ConditionMap.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/type.ConditionMap.html @@ -1,3 +1,2 @@ -ConditionMap in bdk_wallet::descriptor::policy - Rust

    Type Definition bdk_wallet::descriptor::policy::ConditionMap

    source ·
    pub type ConditionMap = BTreeMap<usize, HashSet<Condition>>;
    Expand description

    Type for a map of sets of Condition items keyed by each set’s index

    -
    \ No newline at end of file +ConditionMap in bdk_wallet::descriptor::policy - Rust

    Type Alias bdk_wallet::descriptor::policy::ConditionMap

    source ·
    pub type ConditionMap = BTreeMap<usize, HashSet<Condition>>;
    Expand description

    Type for a map of sets of Condition items keyed by each set’s index

    +

    Aliased Type§

    struct ConditionMap { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/type.FoldedConditionMap.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/type.FoldedConditionMap.html index f9199f9602..ca8ff6a4c7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/type.FoldedConditionMap.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/policy/type.FoldedConditionMap.html @@ -1,3 +1,2 @@ -FoldedConditionMap in bdk_wallet::descriptor::policy - Rust
    pub type FoldedConditionMap = BTreeMap<Vec<usize>, HashSet<Condition>>;
    Expand description

    Type for a map of folded sets of Condition items keyed by a vector of the combined set’s indexes

    -
    \ No newline at end of file +FoldedConditionMap in bdk_wallet::descriptor::policy - Rust

    Type Alias bdk_wallet::descriptor::policy::FoldedConditionMap

    source ·
    pub type FoldedConditionMap = BTreeMap<Vec<usize>, HashSet<Condition>>;
    Expand description

    Type for a map of folded sets of Condition items keyed by a vector of the combined set’s indexes

    +

    Aliased Type§

    struct FoldedConditionMap { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/sidebar-items.js index d738efbc83..c5f7a3e98d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["Descriptor","Script descriptor"],["DescriptorPublicKey","The descriptor pubkey, either a single pubkey or an xpub."],["Legacy","Legacy ScriptContext To be used as P2SH scripts For creation of Bare scriptpubkeys, construct the Miniscript under `Bare` ScriptContext"],["Segwitv0","Segwitv0 ScriptContext"]],"mod":[["checksum","Descriptor checksum"],["error","Descriptor errors"],["policy","Descriptor policy"],["template","Descriptor templates"]],"struct":[["Miniscript","The top-level miniscript abstract syntax tree (AST)."]],"trait":[["ExtractPolicy","Trait implemented on [`Descriptor`]s to add a method to extract the spending [`policy`]"],["IntoWalletDescriptor","Trait for types which can be converted into an [`ExtendedDescriptor`] and a [`KeyMap`] usable by a wallet in a specific [`Network`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["DerivedDescriptor","Alias for a [`Descriptor`] that contains extended derived keys"],["ExtendedDescriptor","Alias for a [`Descriptor`] that can contain extended keys using [`DescriptorPublicKey`]"],["HdKeyPaths","Alias for the type of maps that represent derivation paths in a `psbt::Input` or `psbt::Output`"],["TapKeyOrigins","Alias for the type of maps that represent taproot key origins in a `psbt::Input` or `psbt::Output`"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["Descriptor","DescriptorPublicKey","Legacy","Segwitv0"],"mod":["checksum","error","policy","template"],"struct":["Miniscript"],"trait":["ExtractPolicy","IntoWalletDescriptor","ScriptContext"],"type":["DerivedDescriptor","ExtendedDescriptor","HdKeyPaths","TapKeyOrigins"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/struct.Miniscript.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/struct.Miniscript.html index ed19482ee6..dc651769f2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/struct.Miniscript.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/struct.Miniscript.html @@ -1,20 +1,23 @@ -Miniscript in bdk_wallet::descriptor - Rust
    pub struct Miniscript<Pk, Ctx>where
        Pk: MiniscriptKey,
        Ctx: ScriptContext,
    { +Miniscript in bdk_wallet::descriptor - Rust

    Struct bdk_wallet::descriptor::Miniscript

    pub struct Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,
    { pub node: Terminal<Pk, Ctx>, pub ty: Type, pub ext: ExtData, - /* private fields */ -}
    Expand description

    The top-level miniscript abstract syntax tree (AST).

    -

    Fields§

    §node: Terminal<Pk, Ctx>

    A node in the AST.

    -
    §ty: Type

    The correctness and malleability type information for the AST node.

    -
    §ext: ExtData

    Additional information helpful for extra analysis.

    -

    Implementations§

    Whether all spend paths of miniscript require a signature

    -

    Whether the miniscript is malleable

    -

    Whether the miniscript can exceed the resource limits(Opcodes, Stack limit etc)

    -

    Whether the miniscript contains a combination of timelocks

    -

    Whether the miniscript has repeated Pk or Pkh

    -

    Whether the given miniscript contains a raw pkh fragment

    -

    Check whether the underlying Miniscript is safe under the current context + /* private fields */ +}

    Expand description

    The top-level miniscript abstract syntax tree (AST).

    +

    Fields§

    §node: Terminal<Pk, Ctx>

    A node in the AST.

    +
    §ty: Type

    The correctness and malleability type information for the AST node.

    +
    §ext: ExtData

    Additional information helpful for extra analysis.

    +

    Implementations§

    §

    impl<Pk, Ctx> Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    pub fn requires_sig(&self) -> bool

    Whether all spend paths of miniscript require a signature

    +

    pub fn is_non_malleable(&self) -> bool

    Whether the miniscript is malleable

    +

    pub fn within_resource_limits(&self) -> bool

    Whether the miniscript can exceed the resource limits(Opcodes, Stack limit etc)

    +

    pub fn has_mixed_timelocks(&self) -> bool

    Whether the miniscript contains a combination of timelocks

    +

    pub fn has_repeated_keys(&self) -> bool

    Whether the miniscript has repeated Pk or Pkh

    +

    pub fn contains_raw_pkh(&self) -> bool

    Whether the given miniscript contains a raw pkh fragment

    +

    pub fn sanity_check(&self) -> Result<(), AnalysisError>

    Check whether the underlying Miniscript is safe under the current context Lifting these polices would create a semantic representation that does not represent the underlying semantics when miniscript is spent. Signing logic may not find satisfaction even if one exists.

    @@ -22,43 +25,52 @@ Signing logic may not find satisfaction even if one exists.

    Use this function to check whether the guarantees of library hold. Most functions of the library like would still work, but results cannot be relied upon

    -

    Check whether the miniscript follows the given Extra policy [ExtParams]

    -

    Iterator-related extensions for Miniscript

    -

    Creates a new [Iter] iterator that will iterate over all Miniscript items within +

    pub fn ext_check(&self, ext: &ExtParams) -> Result<(), AnalysisError>

    Check whether the miniscript follows the given Extra policy [ExtParams]

    +
    §

    impl<Pk, Ctx> Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    Iterator-related extensions for Miniscript

    +

    pub fn iter(&self) -> Iter<'_, Pk, Ctx>

    Creates a new [Iter] iterator that will iterate over all Miniscript items within AST by traversing its branches. For the specific algorithm please see [Iter::next] function.

    -

    Creates a new [PkIter] iterator that will iterate over all plain public keys (and not -key hash values) present in Miniscript items within AST by traversing all its branches. +

    pub fn iter_pk(&self) -> PkIter<'_, Pk, Ctx>

    Creates a new [PkIter] iterator that will iterate over all plain public keys (and not +key hash values) present in Miniscript items within AST by traversing all its branches. For the specific algorithm please see [PkIter::next] function.

    -

    Enumerates all child nodes of the current AST node (self) and returns a Vec referencing +

    pub fn branches(&self) -> Vec<&Miniscript<Pk, Ctx>>

    Enumerates all child nodes of the current AST node (self) and returns a Vec referencing them.

    -

    Returns child node with given index, if any

    -

    Returns Option::Some with cloned n’th public key from the current miniscript item, +

    pub fn get_nth_child(&self, n: usize) -> Option<&Miniscript<Pk, Ctx>>

    Returns child node with given index, if any

    +

    pub fn get_nth_pk(&self, n: usize) -> Option<Pk>

    Returns Option::Some with cloned n’th public key from the current miniscript item, if any. Otherwise returns Option::None.

    NB: The function analyzes only single miniscript item and not any of its descendants in AST.

    -

    Add type information(Type and Extdata) to Miniscript based on +

    §

    impl<Pk, Ctx> Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    pub fn from_ast(t: Terminal<Pk, Ctx>) -> Result<Miniscript<Pk, Ctx>, Error>

    Add type information(Type and Extdata) to Miniscript based on AstElem fragment. Dependent on display and clone because of Error Display code of type_check.

    -

    Create a new Miniscript from a Terminal node and a Type annotation +

    pub fn from_components_unchecked( + node: Terminal<Pk, Ctx>, + ty: Type, + ext: ExtData +) -> Miniscript<Pk, Ctx>

    Create a new Miniscript from a Terminal node and a Type annotation This does not check the typing rules. The user is responsible for ensuring that the type provided is correct.

    You should almost always use Miniscript::from_ast instead of this function.

    -

    Extracts the AstElem representing the root of the miniscript

    -

    Get a reference to the inner AstElem representing the root of miniscript

    -

    Encode as a Bitcoin script

    -

    Size, in bytes of the script-pubkey. If this Miniscript is used outside +

    pub fn into_inner(self) -> Terminal<Pk, Ctx>

    Extracts the AstElem representing the root of the miniscript

    +

    pub fn as_inner(&self) -> &Terminal<Pk, Ctx>

    Get a reference to the inner AstElem representing the root of miniscript

    +

    pub fn encode(&self) -> ScriptBuf
    where + Pk: ToPublicKey,

    Encode as a Bitcoin script

    +

    pub fn script_size(&self) -> usize

    Size, in bytes of the script-pubkey. If this Miniscript is used outside of segwit (e.g. in a bare or P2SH descriptor), this quantity should be multiplied by 4 to compute the weight.

    In general, it is not recommended to use this function directly, but to instead call the corresponding function on a Descriptor, which will handle the segwit/non-segwit technicalities for you.

    -

    Maximum number of witness elements used to satisfy the Miniscript +

    pub fn max_satisfaction_witness_elements(&self) -> Result<usize, Error>

    Maximum number of witness elements used to satisfy the Miniscript fragment, including the witness script itself. Used to estimate the weight of the VarInt that specifies this number in a serialized transaction.

    This function may returns Error when the Miniscript is impossible to satisfy

    -

    Maximum size, in bytes, of a satisfying witness. For Segwit outputs +

    pub fn max_satisfaction_size(&self) -> Result<usize, Error>

    Maximum size, in bytes, of a satisfying witness. For Segwit outputs one_cost should be set to 2, since the number 1 requires two bytes to encode. For non-segwit outputs one_cost should be set to 1, since OP_1 is available in scriptSigs.

    @@ -68,30 +80,49 @@ will handle the segwit/non-segwit technicalities for you.

    All signatures are assumed to be 73 bytes in size, including the length prefix (segwit) or push opcode (pre-segwit) and sighash postfix.

    -

    Attempt to produce non-malleable satisfying witness for the +

    pub fn satisfy<S>(&self, satisfier: S) -> Result<Vec<Vec<u8>>, Error>
    where + S: Satisfier<Pk>, + Pk: ToPublicKey,

    Attempt to produce non-malleable satisfying witness for the witness script represented by the parse tree

    -

    Attempt to produce a malleable satisfying witness for the +

    pub fn satisfy_malleable<S>(&self, satisfier: S) -> Result<Vec<Vec<u8>>, Error>
    where + S: Satisfier<Pk>, + Pk: ToPublicKey,

    Attempt to produce a malleable satisfying witness for the witness script represented by the parse tree

    -

    Attempt to produce a non-malleable witness template given the assets available

    -

    Attempt to produce a malleable witness template given the assets available

    -

    Attempt to parse an insane(scripts don’t clear sanity checks) +

    pub fn build_template<P>(&self, provider: &P) -> Satisfaction<Placeholder<Pk>>
    where + P: AssetProvider<Pk>, + Pk: ToPublicKey,

    Attempt to produce a non-malleable witness template given the assets available

    +

    pub fn build_template_mall<P>( + &self, + provider: &P +) -> Satisfaction<Placeholder<Pk>>
    where + P: AssetProvider<Pk>, + Pk: ToPublicKey,

    Attempt to produce a malleable witness template given the assets available

    +
    §

    impl<Ctx> Miniscript<<Ctx as ScriptContext>::Key, Ctx>
    where + Ctx: ScriptContext,

    pub fn parse_insane( + script: &Script +) -> Result<Miniscript<<Ctx as ScriptContext>::Key, Ctx>, Error>

    Attempt to parse an insane(scripts don’t clear sanity checks) script into a Miniscript representation. Use this to parse scripts with repeated pubkeys, timelock mixing, malleable scripts without sig or scripts that can exceed resource limits. Some of the analysis guarantees of miniscript are lost when dealing with insane scripts. In general, in a multi-party setting users should only accept sane scripts.

    -

    Attempt to parse an miniscript with extra features that not yet specified in the spec. +

    pub fn parse_with_ext( + script: &Script, + ext: &ExtParams +) -> Result<Miniscript<<Ctx as ScriptContext>::Key, Ctx>, Error>

    Attempt to parse an miniscript with extra features that not yet specified in the spec. Users should not use this function unless they scripts can/will change in the future. Currently, this function supports the following features: - Parsing all insane scripts - Parsing miniscripts with raw pubkey hashes

    Allowed extra features can be specified by the ext [ExtParams] argument.

    -

    Attempt to parse a Script into Miniscript representation.

    +

    pub fn parse( + script: &Script +) -> Result<Miniscript<<Ctx as ScriptContext>::Key, Ctx>, Error>

    Attempt to parse a Script into Miniscript representation.

    This function will fail parsing for scripts that do not clear the -Miniscript::sanity_check checks. Use Miniscript::parse_insane to +Miniscript::sanity_check checks. Use Miniscript::parse_insane to parse such scripts.

    -
    Decode/Parse a miniscript from script hex
    +
    §Decode/Parse a miniscript from script hex
    use miniscript::{Miniscript, Segwitv0, Tap};
     use miniscript::bitcoin::secp256k1::XOnlyPublicKey;
     use miniscript::bitcoin::hashes::hex::FromHex;
    @@ -101,33 +132,65 @@ parse such scripts.

    // parse x-only miniscript in Taproot context let tapscript_ms = TapScript::parse(&bitcoin::ScriptBuf::from_hex( - "202788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac", -).expect("Even length hex")) - .expect("Xonly keys are valid only in taproot context"); + "202788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac", +).expect("Even length hex")) + .expect("Xonly keys are valid only in taproot context"); // tapscript fails decoding when we use them with compressed keys let err = TapScript::parse(&bitcoin::ScriptBuf::from_hex( - "21022788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac", -).expect("Even length hex")) - .expect_err("Compressed keys cannot be used in Taproot context"); + "21022788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac", +).expect("Even length hex")) + .expect_err("Compressed keys cannot be used in Taproot context"); // Segwitv0 succeeds decoding with full keys. Segwitv0Script::parse(&bitcoin::ScriptBuf::from_hex( - "21022788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac", -).expect("Even length hex")) - .expect("Compressed keys are allowed in Segwit context"); + "21022788ee41e76f4f3af603da5bc8fa22997bc0344bb0f95666ba6aaff0242baa99ac", +).expect("Even length hex")) + .expect("Compressed keys are allowed in Segwit context");
    -

    Substitutes raw public keys hashes with the public keys as provided by map.

    -

    Attempt to parse an insane(scripts don’t clear sanity checks) +

    §

    impl<Pk, Ctx> Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    pub fn substitute_raw_pkh( + &self, + pk_map: &BTreeMap<Hash, Pk> +) -> Miniscript<Pk, Ctx>

    Substitutes raw public keys hashes with the public keys as provided by map.

    +
    §

    impl<Pk, Ctx> Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey + FromStr, + <Pk as MiniscriptKey>::Sha256: FromStr, + <Pk as MiniscriptKey>::Hash256: FromStr, + <Pk as MiniscriptKey>::Ripemd160: FromStr, + <Pk as MiniscriptKey>::Hash160: FromStr, + <Pk as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: ToString, + Ctx: ScriptContext,

    pub fn from_str_insane(s: &str) -> Result<Miniscript<Pk, Ctx>, Error>

    Attempt to parse an insane(scripts don’t clear sanity checks) from string into a Miniscript representation. Use this to parse scripts with repeated pubkeys, timelock mixing, malleable scripts without sig or scripts that can exceed resource limits. Some of the analysis guarantees of miniscript are lost when dealing with insane scripts. In general, in a multi-party setting users should only accept sane scripts.

    -

    Attempt to parse an Miniscripts that don’t follow the spec. +

    §

    impl<Pk, Ctx> Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey + FromStr, + <Pk as MiniscriptKey>::Sha256: FromStr, + <Pk as MiniscriptKey>::Hash256: FromStr, + <Pk as MiniscriptKey>::Ripemd160: FromStr, + <Pk as MiniscriptKey>::Hash160: FromStr, + <Pk as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: ToString, + Ctx: ScriptContext,

    pub fn from_str_ext( + s: &str, + ext: &ExtParams +) -> Result<Miniscript<Pk, Ctx>, Error>

    Attempt to parse an Miniscripts that don’t follow the spec. Use this to parse scripts with repeated pubkeys, timelock mixing, malleable scripts, raw pubkey hashes without sig or scripts that can exceed resource limits.

    Use [ExtParams] builder to specify the types of non-sane rules to allow while parsing.

    -

    Lifting corresponds to conversion of a miniscript into a [Semantic] +

    §

    impl<Pk, Ctx> Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    pub fn lift_check(&self) -> Result<(), LiftError>

    Lifting corresponds to conversion of a miniscript into a [Semantic] policy for human readable or machine analysis. However, naively lifting miniscripts can result in incorrect interpretations that don’t correspond to the underlying semantics when we try to spend them on @@ -136,31 +199,161 @@ bitcoin network. This can occur if the miniscript contains:

  • A combination of timelocks
  • A spend that exceeds resource limits
  • -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Formats the value using the given formatter. Read more
    Extract the spending policy
    Run a predicate on every key in the descriptor, returning whether -the predicate returned true for every key Read more
    Run a predicate on every key in the descriptor, returning whether -the predicate returned true for any key Read more

    Parse a Miniscript from string and perform sanity checks -See Miniscript::from_str_insane to parse scripts from string that -do not clear the Miniscript::sanity_check checks.

    -
    The associated error which can be returned from parsing.

    Parse an expression tree into a Miniscript. As a general rule, this +

    Trait Implementations§

    §

    impl<Pk, Ctx> Clone for Miniscript<Pk, Ctx>
    where + Pk: Clone + MiniscriptKey, + Ctx: Clone + ScriptContext,

    §

    fn clone(&self) -> Miniscript<Pk, Ctx>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl<Pk, Ctx> Debug for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

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

    Formats the value using the given formatter. Read more
    §

    impl<'de, Pk, Ctx> Deserialize<'de> for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey + FromStr, + <Pk as MiniscriptKey>::Sha256: FromStr, + <Pk as MiniscriptKey>::Hash256: FromStr, + <Pk as MiniscriptKey>::Ripemd160: FromStr, + <Pk as MiniscriptKey>::Hash160: FromStr, + <Pk as FromStr>::Err: Display, + <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: Display, + <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: Display, + <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: Display, + <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: Display, + Ctx: ScriptContext,

    §

    fn deserialize<D>( + deserializer: D +) -> Result<Miniscript<Pk, Ctx>, <D as Deserializer<'de>>::Error>
    where + D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl<Pk, Ctx> Display for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

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

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

    impl<Ctx: ScriptContext + 'static> ExtractPolicy for Miniscript<DescriptorPublicKey, Ctx>

    source§

    fn extract_policy( + &self, + signers: &SignersContainer, + build_sat: BuildSatisfaction<'_>, + secp: &Secp256k1<All> +) -> Result<Option<Policy>, Error>

    Extract the spending policy
    §

    impl<Pk, Ctx> ForEachKey<Pk> for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

    fn for_each_key<'a, F>(&'a self, pred: F) -> bool
    where + F: FnMut(&'a Pk) -> bool,

    Run a predicate on every key in the descriptor, returning whether +the predicate returned true for every key
    §

    fn for_any_key<'a, F>(&'a self, pred: F) -> bool
    where + F: FnMut(&'a Pk) -> bool, + Pk: 'a,

    Run a predicate on every key in the descriptor, returning whether +the predicate returned true for any key
    §

    impl<Pk, Ctx> FromStr for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey + FromStr, + <Pk as MiniscriptKey>::Sha256: FromStr, + <Pk as MiniscriptKey>::Hash256: FromStr, + <Pk as MiniscriptKey>::Ripemd160: FromStr, + <Pk as MiniscriptKey>::Hash160: FromStr, + <Pk as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: ToString, + Ctx: ScriptContext,

    §

    fn from_str(s: &str) -> Result<Miniscript<Pk, Ctx>, Error>

    Parse a Miniscript from string and perform sanity checks +See Miniscript::from_str_insane to parse scripts from string that +do not clear the Miniscript::sanity_check checks.

    +
    §

    type Err = Error

    The associated error which can be returned from parsing.
    §

    impl<Pk, Ctx> FromTree for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey + FromStr, + <Pk as MiniscriptKey>::Sha256: FromStr, + <Pk as MiniscriptKey>::Hash256: FromStr, + <Pk as MiniscriptKey>::Ripemd160: FromStr, + <Pk as MiniscriptKey>::Hash160: FromStr, + <Pk as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: ToString, + <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: ToString, + Ctx: ScriptContext,

    §

    fn from_tree(top: &Tree<'_>) -> Result<Miniscript<Pk, Ctx>, Error>

    Parse an expression tree into a Miniscript. As a general rule, this should not be called directly; rather go through the descriptor API.

    -

    Hash of Miniscript must depend only on node and not the type information.

    +
    §

    impl<Pk, Ctx> Hash for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    Hash of Miniscript must depend only on node and not the type information.

    The type information and extra properties are implied by the AST.

    -
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    Converts this object into an abstract policy.

    Ord of Miniscript must depend only on node and not the type information.

    +
    §

    fn hash<H>(&self, state: &mut H)
    where + H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl<Pk, Ctx> Liftable<Pk> for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

    fn lift(&self) -> Result<Policy<Pk>, Error>

    Converts this object into an abstract policy.
    §

    impl<Pk, Ctx> Ord for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    Ord of Miniscript must depend only on node and not the type information.

    The type information and extra properties are implied by the AST.

    -
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more

    PartialEq of Miniscript must depend only on node and not the type information.

    +
    §

    fn cmp(&self, other: &Miniscript<Pk, Ctx>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl<Pk, Ctx> PartialEq for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    PartialEq of Miniscript must depend only on node and not the type information.

    The type information and extra properties are implied by the AST.

    -
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    PartialOrd of Miniscript must depend only on node and not the type information.

    +
    §

    fn eq(&self, other: &Miniscript<Pk, Ctx>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl<Pk, Ctx> PartialOrd for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    PartialOrd of Miniscript must depend only on node and not the type information.

    The type information and extra properties are implied by the AST.

    -
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    Serialize this value into the given Serde serializer. Read more

    Translates a struct from one generic to another where the translation +

    §

    fn partial_cmp(&self, other: &Miniscript<Pk, Ctx>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl<'de, Pk, Ctx> Serialize for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

    fn serialize<S>( + &self, + serializer: S +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where + S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl<Pk, Q, Ctx> TranslatePk<Pk, Q> for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Q: MiniscriptKey, + Ctx: ScriptContext,

    §

    fn translate_pk<T, E>( + &self, + t: &mut T +) -> Result<<Miniscript<Pk, Ctx> as TranslatePk<Pk, Q>>::Output, TranslateErr<E>>
    where + T: Translator<Pk, Q, E>,

    Translates a struct from one generic to another where the translation for Pk is provided by [Translator]

    -
    The associated output type. This must be Self<Q>.
    Interpret the node as an abstract node.
    Accessor for the number of children this node has.
    Accessor for the nth child of the node, if a child with that index exists.
    Obtains an iterator of all the nodes rooted at the node, in pre-order.
    Obtains a verbose iterator of all the nodes rooted at the DAG, in pre-order. Read more
    Obtains an iterator of all the nodes rooted at the DAG, in post order. Read more

    Eq of Miniscript must depend only on node and not the type information.

    +
    §

    type Output = Miniscript<Q, Ctx>

    The associated output type. This must be Self<Q>.
    §

    impl<'a, Pk, Ctx> TreeLike for &'a Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

    fn as_node(&self) -> Tree<&'a Miniscript<Pk, Ctx>>

    Interpret the node as an abstract node.
    §

    fn n_children(&self) -> usize

    Accessor for the number of children this node has.
    §

    fn nth_child(&self, n: usize) -> Option<Self>

    Accessor for the nth child of the node, if a child with that index exists.
    §

    fn pre_order_iter(self) -> PreOrderIter<Self>

    Obtains an iterator of all the nodes rooted at the node, in pre-order.
    §

    fn verbose_pre_order_iter(self) -> VerbosePreOrderIter<Self>

    Obtains a verbose iterator of all the nodes rooted at the DAG, in pre-order. Read more
    §

    fn post_order_iter(self) -> PostOrderIter<Self>

    Obtains an iterator of all the nodes rooted at the DAG, in post order. Read more
    §

    impl<Pk, Ctx> Eq for Miniscript<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    Eq of Miniscript must depend only on node and not the type information.

    The type information and extra properties are implied by the AST.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Auto Trait Implementations§

    §

    impl<Pk, Ctx> Freeze for Miniscript<Pk, Ctx>
    where + Pk: Freeze, + <Pk as MiniscriptKey>::Sha256: Freeze, + <Pk as MiniscriptKey>::Hash256: Freeze, + <Pk as MiniscriptKey>::Ripemd160: Freeze, + <Pk as MiniscriptKey>::Hash160: Freeze,

    §

    impl<Pk, Ctx> RefUnwindSafe for Miniscript<Pk, Ctx>
    where + Pk: RefUnwindSafe, + <Pk as MiniscriptKey>::Sha256: RefUnwindSafe, + <Pk as MiniscriptKey>::Hash256: RefUnwindSafe, + <Pk as MiniscriptKey>::Ripemd160: RefUnwindSafe, + <Pk as MiniscriptKey>::Hash160: RefUnwindSafe, + Ctx: RefUnwindSafe,

    §

    impl<Pk, Ctx> Send for Miniscript<Pk, Ctx>
    where + Pk: Send + Sync, + <Pk as MiniscriptKey>::Sha256: Send + Sync, + <Pk as MiniscriptKey>::Hash256: Send + Sync, + <Pk as MiniscriptKey>::Ripemd160: Send + Sync, + <Pk as MiniscriptKey>::Hash160: Send + Sync, + Ctx: Send + Sync,

    §

    impl<Pk, Ctx> Sync for Miniscript<Pk, Ctx>
    where + Pk: Sync + Send, + <Pk as MiniscriptKey>::Sha256: Sync + Send, + <Pk as MiniscriptKey>::Hash256: Sync + Send, + <Pk as MiniscriptKey>::Ripemd160: Sync + Send, + <Pk as MiniscriptKey>::Hash160: Sync + Send, + Ctx: Sync + Send,

    §

    impl<Pk, Ctx> Unpin for Miniscript<Pk, Ctx>
    where + Pk: Unpin, + <Pk as MiniscriptKey>::Sha256: Unpin, + <Pk as MiniscriptKey>::Hash256: Unpin, + <Pk as MiniscriptKey>::Ripemd160: Unpin, + <Pk as MiniscriptKey>::Hash160: Unpin, + Ctx: Unpin,

    §

    impl<Pk, Ctx> UnwindSafe for Miniscript<Pk, Ctx>
    where + Pk: UnwindSafe + RefUnwindSafe, + <Pk as MiniscriptKey>::Sha256: UnwindSafe + RefUnwindSafe, + <Pk as MiniscriptKey>::Hash256: UnwindSafe + RefUnwindSafe, + <Pk as MiniscriptKey>::Ripemd160: UnwindSafe + RefUnwindSafe, + <Pk as MiniscriptKey>::Hash160: UnwindSafe + RefUnwindSafe, + Ctx: UnwindSafe + RefUnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/index.html index e7a908b0d0..7d9fdfc7c9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/index.html @@ -1,5 +1,4 @@ -bdk_wallet::descriptor::template - Rust
    Expand description

    Descriptor templates

    +bdk_wallet::descriptor::template - Rust

    Module bdk_wallet::descriptor::template

    source ·
    Expand description

    Descriptor templates

    This module contains the definition of various common script templates that are ready to be used. See the documentation of each template for an example.

    -

    Structs

    BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)
    BIP44 public template. Expands to pkh(key/{0,1}/*)
    BIP49 template. Expands to sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))
    BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))
    BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)
    BIP84 public template. Expands to wpkh(key/{0,1}/*)
    BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)
    BIP86 public template. Expands to tr(key/{0,1}/*)
    P2PKH template. Expands to a descriptor pkh(key)
    P2TR template. Expands to a descriptor tr(key)
    P2WPKH template. Expands to a descriptor wpkh(key)
    P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))

    Traits

    Trait for descriptor templates that can be built into a full descriptor

    Type Definitions

    Type alias for the return type of DescriptorTemplate, descriptor! and others
    \ No newline at end of file +

    Structs§

    • BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)
    • BIP44 public template. Expands to pkh(key/{0,1}/*)
    • BIP49 template. Expands to sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))
    • BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))
    • BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)
    • BIP84 public template. Expands to wpkh(key/{0,1}/*)
    • BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)
    • BIP86 public template. Expands to tr(key/{0,1}/*)
    • P2PKH template. Expands to a descriptor pkh(key)
    • P2TR template. Expands to a descriptor tr(key)
    • P2WPKH template. Expands to a descriptor wpkh(key)
    • P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))

    Traits§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/sidebar-items.js index c4c1d6d2c1..d4d5f46ed1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["Bip44","BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`"],["Bip44Public","BIP44 public template. Expands to `pkh(key/{0,1}/*)`"],["Bip49","BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`"],["Bip49Public","BIP49 public template. Expands to `sh(wpkh(key/{0,1}/*))`"],["Bip84","BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`"],["Bip84Public","BIP84 public template. Expands to `wpkh(key/{0,1}/*)`"],["Bip86","BIP86 template. Expands to `tr(key/86'/{0,1}'/0'/{0,1}/*)`"],["Bip86Public","BIP86 public template. Expands to `tr(key/{0,1}/*)`"],["P2Pkh","P2PKH template. Expands to a descriptor `pkh(key)`"],["P2TR","P2TR template. Expands to a descriptor `tr(key)`"],["P2Wpkh","P2WPKH template. Expands to a descriptor `wpkh(key)`"],["P2Wpkh_P2Sh","P2WPKH-P2SH template. Expands to a descriptor `sh(wpkh(key))`"]],"trait":[["DescriptorTemplate","Trait for descriptor templates that can be built into a full descriptor"]],"type":[["DescriptorTemplateOut","Type alias for the return type of [`DescriptorTemplate`], `descriptor!` and others"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","Bip86","Bip86Public","P2Pkh","P2TR","P2Wpkh","P2Wpkh_P2Sh"],"trait":["DescriptorTemplate"],"type":["DescriptorTemplateOut"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44.html index 8bacd77b84..f6039bc97c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44.html @@ -1,21 +1,41 @@ -Bip44 in bdk_wallet::descriptor::template - Rust
    pub struct Bip44<K: DerivableKey<Legacy>>(pub K, pub KeychainKind);
    Expand description

    BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)

    +Bip44 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip44

    source ·
    pub struct Bip44<K: DerivableKey<Legacy>>(pub K, pub KeychainKind);
    Expand description

    BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)

    Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv).

    -

    See Bip44Public for a template that can work with a xpub/tpub.

    -

    Example

    +

    See Bip44Public for a template that can work with a xpub/tpub.

    +

    §Example

    use bdk_wallet::template::Bip44;
     
    -let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    +let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
     let mut wallet = Wallet::new_no_persist(
         Bip44(key.clone(), KeychainKind::External),
         Some(Bip44(key, KeychainKind::Internal)),
         Network::Testnet,
     )?;
     
    -assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89");
    -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
    -

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89"); +assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
    +

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44<K>

    source§

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip44<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for Bip44<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Bip44<K>
    where + K: Send,

    §

    impl<K> Sync for Bip44<K>
    where + K: Sync,

    §

    impl<K> Unpin for Bip44<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Bip44<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44Public.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44Public.html index 45702cbb2d..0f8505aa39 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44Public.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip44Public.html @@ -1,24 +1,44 @@ -Bip44Public in bdk_wallet::descriptor::template - Rust
    pub struct Bip44Public<K: DerivableKey<Legacy>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP44 public template. Expands to pkh(key/{0,1}/*)

    +Bip44Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip44Public

    source ·
    pub struct Bip44Public<K: DerivableKey<Legacy>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP44 public template. Expands to pkh(key/{0,1}/*)

    This assumes that the key used has already been derived with m/44'/0'/0' for Mainnet or m/44'/1'/0' for Testnet.

    This template requires the parent fingerprint to populate correctly the metadata of PSBTs.

    -

    See Bip44 for a template that does the full derivation, but requires private data +

    See Bip44 for a template that does the full derivation, but requires private data for the key.

    -

    Example

    +

    §Example

    use bdk_wallet::template::Bip44Public;
     
    -let key = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;
    -let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    +let key = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;
    +let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
     let mut wallet = Wallet::new_no_persist(
         Bip44Public(key.clone(), fingerprint, KeychainKind::External),
         Some(Bip44Public(key, fingerprint, KeychainKind::Internal)),
         Network::Testnet,
     )?;
     
    -assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR");
    -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#cfhumdqz");
    -

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR"); +assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#cfhumdqz");
    +

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44Public<K>

    source§

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip44Public<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for Bip44Public<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Bip44Public<K>
    where + K: Send,

    §

    impl<K> Sync for Bip44Public<K>
    where + K: Sync,

    §

    impl<K> Unpin for Bip44Public<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Bip44Public<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49.html index 4261eebd55..f48b277763 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49.html @@ -1,21 +1,41 @@ -Bip49 in bdk_wallet::descriptor::template - Rust
    pub struct Bip49<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    Expand description

    BIP49 template. Expands to sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))

    +Bip49 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip49

    source ·
    pub struct Bip49<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    Expand description

    BIP49 template. Expands to sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))

    Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv).

    -

    See Bip49Public for a template that can work with a xpub/tpub.

    -

    Example

    +

    See Bip49Public for a template that can work with a xpub/tpub.

    +

    §Example

    use bdk_wallet::template::Bip49;
     
    -let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    +let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
     let mut wallet = Wallet::new_no_persist(
         Bip49(key.clone(), KeychainKind::External),
         Some(Bip49(key, KeychainKind::Internal)),
         Network::Testnet,
     )?;
     
    -assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");
    -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
    -

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB"); +assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
    +

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49<K>

    source§

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip49<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for Bip49<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Bip49<K>
    where + K: Send,

    §

    impl<K> Sync for Bip49<K>
    where + K: Sync,

    §

    impl<K> Unpin for Bip49<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Bip49<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49Public.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49Public.html index 437675ad1e..08fe981a77 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49Public.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip49Public.html @@ -1,24 +1,44 @@ -Bip49Public in bdk_wallet::descriptor::template - Rust
    pub struct Bip49Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))

    +Bip49Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip49Public

    source ·
    pub struct Bip49Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))

    This assumes that the key used has already been derived with m/49'/0'/0' for Mainnet or m/49'/1'/0' for Testnet.

    This template requires the parent fingerprint to populate correctly the metadata of PSBTs.

    -

    See Bip49 for a template that does the full derivation, but requires private data +

    See Bip49 for a template that does the full derivation, but requires private data for the key.

    -

    Example

    +

    §Example

    use bdk_wallet::template::Bip49Public;
     
    -let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;
    -let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    +let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;
    +let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
     let mut wallet = Wallet::new_no_persist(
         Bip49Public(key.clone(), fingerprint, KeychainKind::External),
         Some(Bip49Public(key, fingerprint, KeychainKind::Internal)),
         Network::Testnet,
     )?;
     
    -assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt");
    -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
    -

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt"); +assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
    +

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49Public<K>

    source§

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip49Public<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for Bip49Public<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Bip49Public<K>
    where + K: Send,

    §

    impl<K> Sync for Bip49Public<K>
    where + K: Sync,

    §

    impl<K> Unpin for Bip49Public<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Bip49Public<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84.html index 43ec17e0d5..d87896c221 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84.html @@ -1,21 +1,41 @@ -Bip84 in bdk_wallet::descriptor::template - Rust
    pub struct Bip84<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    Expand description

    BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)

    +Bip84 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip84

    source ·
    pub struct Bip84<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    Expand description

    BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)

    Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv).

    -

    See Bip84Public for a template that can work with a xpub/tpub.

    -

    Example

    +

    See Bip84Public for a template that can work with a xpub/tpub.

    +

    §Example

    use bdk_wallet::template::Bip84;
     
    -let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    +let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
     let mut wallet = Wallet::new_no_persist(
         Bip84(key.clone(), KeychainKind::External),
         Some(Bip84(key, KeychainKind::Internal)),
         Network::Testnet,
     )?;
     
    -assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n");
    -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
    -

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n"); +assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
    +

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84<K>

    source§

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip84<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for Bip84<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Bip84<K>
    where + K: Send,

    §

    impl<K> Sync for Bip84<K>
    where + K: Sync,

    §

    impl<K> Unpin for Bip84<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Bip84<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84Public.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84Public.html index 1755ec24cf..db0bb1f3b6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84Public.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip84Public.html @@ -1,24 +1,44 @@ -Bip84Public in bdk_wallet::descriptor::template - Rust
    pub struct Bip84Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP84 public template. Expands to wpkh(key/{0,1}/*)

    +Bip84Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip84Public

    source ·
    pub struct Bip84Public<K: DerivableKey<Segwitv0>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP84 public template. Expands to wpkh(key/{0,1}/*)

    This assumes that the key used has already been derived with m/84'/0'/0' for Mainnet or m/84'/1'/0' for Testnet.

    This template requires the parent fingerprint to populate correctly the metadata of PSBTs.

    -

    See Bip84 for a template that does the full derivation, but requires private data +

    See Bip84 for a template that does the full derivation, but requires private data for the key.

    -

    Example

    +

    §Example

    use bdk_wallet::template::Bip84Public;
     
    -let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
    -let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    +let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
    +let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
     let mut wallet = Wallet::new_no_persist(
         Bip84Public(key.clone(), fingerprint, KeychainKind::External),
         Some(Bip84Public(key, fingerprint, KeychainKind::Internal)),
         Network::Testnet,
     )?;
     
    -assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7");
    -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#dhu402yv");
    -

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7"); +assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#dhu402yv");
    +

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84Public<K>

    source§

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip84Public<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for Bip84Public<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Bip84Public<K>
    where + K: Send,

    §

    impl<K> Sync for Bip84Public<K>
    where + K: Sync,

    §

    impl<K> Unpin for Bip84Public<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Bip84Public<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86.html index ae2306559f..414fa1fefa 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86.html @@ -1,21 +1,41 @@ -Bip86 in bdk_wallet::descriptor::template - Rust
    pub struct Bip86<K: DerivableKey<Tap>>(pub K, pub KeychainKind);
    Expand description

    BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)

    +Bip86 in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip86

    source ·
    pub struct Bip86<K: DerivableKey<Tap>>(pub K, pub KeychainKind);
    Expand description

    BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)

    Since there are hardened derivation steps, this template requires a private derivable key (generally a xprv/tprv).

    -

    See Bip86Public for a template that can work with a xpub/tpub.

    -

    Example

    +

    See Bip86Public for a template that can work with a xpub/tpub.

    +

    §Example

    use bdk_wallet::template::Bip86;
     
    -let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    +let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
     let mut wallet = Wallet::new_no_persist(
         Bip86(key.clone(), KeychainKind::External),
         Some(Bip86(key, KeychainKind::Internal)),
         Network::Testnet,
     )?;
     
    -assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu");
    -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
    -

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu"); +assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
    +

    Tuple Fields§

    §0: K§1: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86<K>

    source§

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip86<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for Bip86<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Bip86<K>
    where + K: Send,

    §

    impl<K> Sync for Bip86<K>
    where + K: Sync,

    §

    impl<K> Unpin for Bip86<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Bip86<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86Public.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86Public.html index d8793e2c29..9443a4918e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86Public.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.Bip86Public.html @@ -1,24 +1,44 @@ -Bip86Public in bdk_wallet::descriptor::template - Rust
    pub struct Bip86Public<K: DerivableKey<Tap>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP86 public template. Expands to tr(key/{0,1}/*)

    +Bip86Public in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::Bip86Public

    source ·
    pub struct Bip86Public<K: DerivableKey<Tap>>(pub K, pub Fingerprint, pub KeychainKind);
    Expand description

    BIP86 public template. Expands to tr(key/{0,1}/*)

    This assumes that the key used has already been derived with m/86'/0'/0' for Mainnet or m/86'/1'/0' for Testnet.

    This template requires the parent fingerprint to populate correctly the metadata of PSBTs.

    -

    See Bip86 for a template that does the full derivation, but requires private data +

    See Bip86 for a template that does the full derivation, but requires private data for the key.

    -

    Example

    +

    §Example

    use bdk_wallet::template::Bip86Public;
     
    -let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
    -let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    +let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
    +let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
     let mut wallet = Wallet::new_no_persist(
         Bip86Public(key.clone(), fingerprint, KeychainKind::External),
         Some(Bip86Public(key, fingerprint, KeychainKind::Internal)),
         Network::Testnet,
     )?;
     
    -assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37");
    -assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");
    -

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37"); +assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");
    +

    Tuple Fields§

    §0: K§1: Fingerprint§2: KeychainKind

    Trait Implementations§

    source§

    impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86Public<K>

    source§

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for Bip86Public<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for Bip86Public<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for Bip86Public<K>
    where + K: Send,

    §

    impl<K> Sync for Bip86Public<K>
    where + K: Sync,

    §

    impl<K> Unpin for Bip86Public<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for Bip86Public<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Pkh.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Pkh.html index 0efccadd31..dce8ec916f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Pkh.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Pkh.html @@ -1,20 +1,40 @@ -P2Pkh in bdk_wallet::descriptor::template - Rust
    pub struct P2Pkh<K: IntoDescriptorKey<Legacy>>(pub K);
    Expand description

    P2PKH template. Expands to a descriptor pkh(key)

    -

    Example

    +P2Pkh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Pkh

    source ·
    pub struct P2Pkh<K: IntoDescriptorKey<Legacy>>(pub K);
    Expand description

    P2PKH template. Expands to a descriptor pkh(key)

    +

    §Example

    use bdk_wallet::template::P2Pkh;
     
     let key =
    -    bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
    +    bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     let mut wallet = Wallet::new_no_persist(P2Pkh(key), None, Network::Testnet)?;
     
     assert_eq!(
         wallet
             .next_unused_address(KeychainKind::External)?
             .to_string(),
    -    "mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"
    +    "mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"
     );
    -

    Tuple Fields§

    §0: K

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for P2Pkh<K>

    source§

    fn build( + self, + _network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for P2Pkh<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for P2Pkh<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for P2Pkh<K>
    where + K: Send,

    §

    impl<K> Sync for P2Pkh<K>
    where + K: Sync,

    §

    impl<K> Unpin for P2Pkh<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for P2Pkh<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2TR.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2TR.html index 8b99dd49b9..d40bf1a48c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2TR.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2TR.html @@ -1,20 +1,40 @@ -P2TR in bdk_wallet::descriptor::template - Rust
    pub struct P2TR<K: IntoDescriptorKey<Tap>>(pub K);
    Expand description

    P2TR template. Expands to a descriptor tr(key)

    -

    Example

    +P2TR in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2TR

    source ·
    pub struct P2TR<K: IntoDescriptorKey<Tap>>(pub K);
    Expand description

    P2TR template. Expands to a descriptor tr(key)

    +

    §Example

    use bdk_wallet::template::P2TR;
     
     let key =
    -    bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
    +    bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     let mut wallet = Wallet::new_no_persist(P2TR(key), None, Network::Testnet)?;
     
     assert_eq!(
         wallet
             .next_unused_address(KeychainKind::External)?
             .to_string(),
    -    "tb1pvjf9t34fznr53u5tqhejz4nr69luzkhlvsdsdfq9pglutrpve2xq7hps46"
    +    "tb1pvjf9t34fznr53u5tqhejz4nr69luzkhlvsdsdfq9pglutrpve2xq7hps46"
     );
    -

    Tuple Fields§

    §0: K

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: IntoDescriptorKey<Tap>> DescriptorTemplate for P2TR<K>

    source§

    fn build( + self, + _network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for P2TR<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for P2TR<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for P2TR<K>
    where + K: Send,

    §

    impl<K> Sync for P2TR<K>
    where + K: Sync,

    §

    impl<K> Unpin for P2TR<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for P2TR<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh.html index 6f3c17fe95..80a6d866b3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh.html @@ -1,20 +1,40 @@ -P2Wpkh in bdk_wallet::descriptor::template - Rust
    pub struct P2Wpkh<K: IntoDescriptorKey<Segwitv0>>(pub K);
    Expand description

    P2WPKH template. Expands to a descriptor wpkh(key)

    -

    Example

    +P2Wpkh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Wpkh

    source ·
    pub struct P2Wpkh<K: IntoDescriptorKey<Segwitv0>>(pub K);
    Expand description

    P2WPKH template. Expands to a descriptor wpkh(key)

    +

    §Example

    use bdk_wallet::template::P2Wpkh;
     
     let key =
    -    bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
    +    bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     let mut wallet = Wallet::new_no_persist(P2Wpkh(key), None, Network::Testnet)?;
     
     assert_eq!(
         wallet
             .next_unused_address(KeychainKind::External)?
             .to_string(),
    -    "tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"
    +    "tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"
     );
    -

    Tuple Fields§

    §0: K

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh<K>

    source§

    fn build( + self, + _network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for P2Wpkh<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for P2Wpkh<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for P2Wpkh<K>
    where + K: Send,

    §

    impl<K> Sync for P2Wpkh<K>
    where + K: Sync,

    §

    impl<K> Unpin for P2Wpkh<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for P2Wpkh<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh_P2Sh.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh_P2Sh.html index 5bff5e37c5..0e5c1c29dc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh_P2Sh.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/struct.P2Wpkh_P2Sh.html @@ -1,20 +1,40 @@ -P2Wpkh_P2Sh in bdk_wallet::descriptor::template - Rust
    pub struct P2Wpkh_P2Sh<K: IntoDescriptorKey<Segwitv0>>(pub K);
    Expand description

    P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))

    -

    Example

    +P2Wpkh_P2Sh in bdk_wallet::descriptor::template - Rust

    Struct bdk_wallet::descriptor::template::P2Wpkh_P2Sh

    source ·
    pub struct P2Wpkh_P2Sh<K: IntoDescriptorKey<Segwitv0>>(pub K);
    Expand description

    P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))

    +

    §Example

    use bdk_wallet::template::P2Wpkh_P2Sh;
     
     let key =
    -    bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
    +    bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     let mut wallet = Wallet::new_no_persist(P2Wpkh_P2Sh(key), None, Network::Testnet)?;
     
     assert_eq!(
         wallet
             .next_unused_address(KeychainKind::External)?
             .to_string(),
    -    "2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"
    +    "2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"
     );
    -

    Tuple Fields§

    §0: K

    Trait Implementations§

    Build the complete descriptor

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Tuple Fields§

    §0: K

    Trait Implementations§

    source§

    impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh_P2Sh<K>

    source§

    fn build( + self, + _network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    Auto Trait Implementations§

    §

    impl<K> Freeze for P2Wpkh_P2Sh<K>
    where + K: Freeze,

    §

    impl<K> RefUnwindSafe for P2Wpkh_P2Sh<K>
    where + K: RefUnwindSafe,

    §

    impl<K> Send for P2Wpkh_P2Sh<K>
    where + K: Send,

    §

    impl<K> Sync for P2Wpkh_P2Sh<K>
    where + K: Sync,

    §

    impl<K> Unpin for P2Wpkh_P2Sh<K>
    where + K: Unpin,

    §

    impl<K> UnwindSafe for P2Wpkh_P2Sh<K>
    where + K: UnwindSafe,

    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> 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.

    -
    Convert to wallet descriptor
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoWalletDescriptor for T
    where + T: DescriptorTemplate,

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>

    Convert to wallet descriptor
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/trait.DescriptorTemplate.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/trait.DescriptorTemplate.html index 8f8a544d2c..77bac1a5df 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/trait.DescriptorTemplate.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/trait.DescriptorTemplate.html @@ -1,10 +1,13 @@ -DescriptorTemplate in bdk_wallet::descriptor::template - Rust
    pub trait DescriptorTemplate {
    -    fn build(
            self,
            network: Network
        ) -> Result<DescriptorTemplateOut, DescriptorError>; -}
    Expand description

    Trait for descriptor templates that can be built into a full descriptor

    -

    Since IntoWalletDescriptor is implemented for any DescriptorTemplate, they can also be -passed directly to the Wallet constructor.

    -

    Example

    +DescriptorTemplate in bdk_wallet::descriptor::template - Rust

    Trait bdk_wallet::descriptor::template::DescriptorTemplate

    source ·
    pub trait DescriptorTemplate {
    +    // Required method
    +    fn build(
    +        self,
    +        network: Network
    +    ) -> Result<DescriptorTemplateOut, DescriptorError>;
    +}
    Expand description

    Trait for descriptor templates that can be built into a full descriptor

    +

    Since IntoWalletDescriptor is implemented for any DescriptorTemplate, they can also be +passed directly to the Wallet constructor.

    +

    §Example

    use bdk_wallet::descriptor::error::Error as DescriptorError;
     use bdk_wallet::keys::{IntoDescriptorKey, KeyError};
     use bdk_wallet::miniscript::Legacy;
    @@ -18,5 +21,8 @@ passed directly to the WalletOk(bdk_wallet::descriptor!(pkh(self.0))?)
         }
     }
    -

    Required Methods§

    Build the complete descriptor

    -

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn build( + self, + network: Network +) -> Result<DescriptorTemplateOut, DescriptorError>

    Build the complete descriptor

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/type.DescriptorTemplateOut.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/type.DescriptorTemplateOut.html index 9915817438..a879058e34 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/type.DescriptorTemplateOut.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/template/type.DescriptorTemplateOut.html @@ -1,3 +1,6 @@ -DescriptorTemplateOut in bdk_wallet::descriptor::template - Rust
    pub type DescriptorTemplateOut = (ExtendedDescriptor, KeyMap, ValidNetworks);
    Expand description

    Type alias for the return type of DescriptorTemplate, descriptor! and others

    -

    Trait Implementations§

    Convert to wallet descriptor
    \ No newline at end of file +DescriptorTemplateOut in bdk_wallet::descriptor::template - Rust

    Type Alias bdk_wallet::descriptor::template::DescriptorTemplateOut

    source ·
    pub type DescriptorTemplateOut = (ExtendedDescriptor, KeyMap, ValidNetworks);
    Expand description

    Type alias for the return type of DescriptorTemplate, descriptor! and others

    +

    Trait Implementations§

    source§

    impl IntoWalletDescriptor for DescriptorTemplateOut

    source§

    fn into_wallet_descriptor( + self, + _secp: &Secp256k1<All>, + network: Network +) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>

    Convert to wallet descriptor
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ExtractPolicy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ExtractPolicy.html index fbcf99b231..60370888b6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ExtractPolicy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ExtractPolicy.html @@ -1,6 +1,16 @@ -ExtractPolicy in bdk_wallet::descriptor - Rust
    pub trait ExtractPolicy {
    -    fn extract_policy(
            &self,
            signers: &SignersContainer,
            psbt: BuildSatisfaction<'_>,
            secp: &Secp256k1<All>
        ) -> Result<Option<Policy>, DescriptorError>; -}
    Expand description

    Trait implemented on Descriptors to add a method to extract the spending policy

    -

    Required Methods§

    Extract the spending policy

    -

    Implementors§

    \ No newline at end of file +ExtractPolicy in bdk_wallet::descriptor - Rust

    Trait bdk_wallet::descriptor::ExtractPolicy

    source ·
    pub trait ExtractPolicy {
    +    // Required method
    +    fn extract_policy(
    +        &self,
    +        signers: &SignersContainer,
    +        psbt: BuildSatisfaction<'_>,
    +        secp: &Secp256k1<All>
    +    ) -> Result<Option<Policy>, DescriptorError>;
    +}
    Expand description

    Trait implemented on Descriptors to add a method to extract the spending policy

    +

    Required Methods§

    source

    fn extract_policy( + &self, + signers: &SignersContainer, + psbt: BuildSatisfaction<'_>, + secp: &Secp256k1<All> +) -> Result<Option<Policy>, DescriptorError>

    Extract the spending policy

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.IntoWalletDescriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.IntoWalletDescriptor.html index e6212f3c85..80a091a394 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.IntoWalletDescriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.IntoWalletDescriptor.html @@ -1,8 +1,28 @@ -IntoWalletDescriptor in bdk_wallet::descriptor - Rust
    pub trait IntoWalletDescriptor {
    -    fn into_wallet_descriptor(
            self,
            secp: &Secp256k1<All>,
            network: Network
        ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>; -}
    Expand description

    Trait for types which can be converted into an ExtendedDescriptor and a KeyMap usable by a wallet in a specific [Network]

    -

    Required Methods§

    Convert to wallet descriptor

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +IntoWalletDescriptor in bdk_wallet::descriptor - Rust

    Trait bdk_wallet::descriptor::IntoWalletDescriptor

    source ·
    pub trait IntoWalletDescriptor {
    +    // Required method
    +    fn into_wallet_descriptor(
    +        self,
    +        secp: &Secp256k1<All>,
    +        network: Network
    +    ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>;
    +}
    Expand description

    Trait for types which can be converted into an ExtendedDescriptor and a KeyMap usable by a wallet in a specific [Network]

    +

    Required Methods§

    source

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>

    Convert to wallet descriptor

    +

    Implementations on Foreign Types§

    source§

    impl IntoWalletDescriptor for &str

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>

    source§

    impl IntoWalletDescriptor for &String

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>

    source§

    impl IntoWalletDescriptor for (ExtendedDescriptor, KeyMap)

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ScriptContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ScriptContext.html index 44a4e30442..0a7c9bf822 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ScriptContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/trait.ScriptContext.html @@ -1,40 +1,64 @@ -ScriptContext in bdk_wallet::descriptor - Rust
    pub trait ScriptContext: Debug + Clone + Ord + PartialOrd<Self> + Eq + PartialEq<Self> + Hash + Sealed {
    +ScriptContext in bdk_wallet::descriptor - Rust

    Trait bdk_wallet::descriptor::ScriptContext

    pub trait ScriptContext: Debug + Clone + Ord + PartialOrd + Eq + PartialEq + Hash + Sealed {
         type Key: ParseableKey<Sha256 = Hash, Hash256 = Hash, Ripemd160 = Hash, Hash160 = Hash> + MiniscriptKey;
     
    -
    Show 16 methods fn check_terminal_non_malleable<Pk>(
            _frag: &Terminal<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    ; - fn check_pk<Pk>(pk: &Pk) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    ; - fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Self>) -> Option<usize>
        where
            Pk: MiniscriptKey
    ; +
    Show 16 methods // Required methods + fn check_terminal_non_malleable<Pk>( + _frag: &Terminal<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey; + fn check_pk<Pk>(pk: &Pk) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey; + fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Self>) -> Option<usize> + where Pk: MiniscriptKey; fn sig_type() -> SigType; - fn pk_len<Pk>(pk: &Pk) -> usize
        where
            Pk: MiniscriptKey
    ; + fn pk_len<Pk>(pk: &Pk) -> usize + where Pk: MiniscriptKey; fn name_str() -> &'static str; - fn check_witness<Pk>(
            _witness: &[Vec<u8, Global>]
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_global_consensus_validity<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_global_policy_validity<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_local_consensus_validity<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_local_policy_validity<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_global_validity<Pk>(
            ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_local_validity<Pk>(
            ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
        where
            Pk: MiniscriptKey
    , - { ... } - fn other_top_level_checks<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), Error>
        where
            Pk: MiniscriptKey
    , - { ... } - fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
        where
            Pk: MiniscriptKey
    , - { ... } -
    }
    Expand description

    The ScriptContext for Miniscript. Additional type information associated with + // Provided methods + fn check_witness<Pk>(_witness: &[Vec<u8>]) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_global_consensus_validity<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_global_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_local_consensus_validity<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_local_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_global_validity<Pk>( + ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_local_validity<Pk>( + ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error> + where Pk: MiniscriptKey { ... } + fn other_top_level_checks<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), Error> + where Pk: MiniscriptKey { ... } + fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error> + where Pk: MiniscriptKey { ... } +

    }
    Expand description

    The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context

    -

    Required Associated Types§

    The consensus key associated with the type. Must be a parseable key

    -

    Required Methods§

    Depending on ScriptContext, fragments can be malleable. For Example, +

    Required Associated Types§

    type Key: ParseableKey<Sha256 = Hash, Hash256 = Hash, Ripemd160 = Hash, Hash160 = Hash> + MiniscriptKey

    The consensus key associated with the type. Must be a parseable key

    +

    Required Methods§

    fn check_terminal_non_malleable<Pk>( + _frag: &Terminal<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on ScriptContext, fragments can be malleable. For Example, under Legacy context, PkH is malleable because it is possible to estimate the cost of satisfaction because of compressed keys This is currently only used in compiler code for removing malleable @@ -42,21 +66,28 @@ compilations. This does NOT recursively check if the children of the fragment are valid or not. Since the compilation proceeds in a leaf to root fashion, a recursive check is unnecessary.

    -

    Each context has slightly different rules on what Pks are allowed in descriptors +

    fn check_pk<Pk>(pk: &Pk) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Each context has slightly different rules on what Pks are allowed in descriptors Legacy/Bare does not allow x_only keys Segwit does not allow uncompressed keys and x_only keys Tapscript does not allow uncompressed keys

    -

    Depending on script context, the size of a satifaction witness may slightly differ.

    -

    The type of signature required for satisfaction

    -

    Get the len of public key when serialized based on context +

    fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Self>) -> Option<usize>
    where + Pk: MiniscriptKey,

    Depending on script context, the size of a satifaction witness may slightly differ.

    +

    fn sig_type() -> SigType

    The type of signature required for satisfaction

    +

    fn pk_len<Pk>(pk: &Pk) -> usize
    where + Pk: MiniscriptKey,

    Get the len of public key when serialized based on context Note that this includes the serialization prefix. Returns 34/66 for Bare/Legacy based on key compressedness 34 for Segwitv0, 33 for Tap

    -

    Local helper function to display error messages with context

    -

    Provided Methods§

    Check whether the given satisfaction is valid under the ScriptContext +

    fn name_str() -> &'static str

    Local helper function to display error messages with context

    +

    Provided Methods§

    fn check_witness<Pk>(_witness: &[Vec<u8>]) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check whether the given satisfaction is valid under the ScriptContext For example, segwit satisfactions may fail if the witness len is more 3600 or number of stack elements are more than 100.

    -

    Depending on script Context, some of the Terminals might not +

    fn check_global_consensus_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on script Context, some of the Terminals might not be valid under the current consensus rules. Or some of the script resource limits may have been exceeded. These miniscripts would never be accepted by the Bitcoin network and hence @@ -66,7 +97,10 @@ uncompressed public keys are non-standard and thus invalid. In LegacyP2SH context, scripts above 520 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments.

    -

    Depending on script Context, some of the script resource limits +

    fn check_global_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on script Context, some of the script resource limits may have been exceeded under the current bitcoin core policy rules These miniscripts would never be accepted by the Bitcoin network and hence it is safe to discard them. (unless explicitly disabled by non-standard flag) @@ -74,20 +108,35 @@ For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey scripts over 3600 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments.

    -

    Consensus rules at the Miniscript satisfaction time. +

    fn check_local_consensus_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Consensus rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes.

    -

    Policy rules at the Miniscript satisfaction time. +

    fn check_local_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Policy rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path in Legacy context scriptSig more than 1650 bytes

    -

    Check the consensus + policy(if not disabled) rules that are not based +

    fn check_global_validity<Pk>( + ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check the consensus + policy(if not disabled) rules that are not based satisfaction

    -

    Check the consensus + policy(if not disabled) rules including the +

    fn check_local_validity<Pk>( + ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check the consensus + policy(if not disabled) rules including the ones for satisfaction

    -

    Check whether the top-level is type B

    -

    Other top level checks that are context specific

    -

    Check top level consensus rules.

    -

    Implementors§

    \ No newline at end of file +

    fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Check whether the top-level is type B

    +

    fn other_top_level_checks<Pk>(_ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Other top level checks that are context specific

    +

    fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Check top level consensus rules.

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    §

    impl ScriptContext for Legacy

    §

    type Key = PublicKey

    §

    impl ScriptContext for Segwitv0

    §

    type Key = PublicKey

    §

    impl ScriptContext for BareCtx

    §

    type Key = PublicKey

    §

    impl ScriptContext for Tap

    §

    type Key = XOnlyPublicKey

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.DerivedDescriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.DerivedDescriptor.html index b8f412d422..80130811f7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.DerivedDescriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.DerivedDescriptor.html @@ -1,3 +1,15 @@ -DerivedDescriptor in bdk_wallet::descriptor - Rust

    Type Definition bdk_wallet::descriptor::DerivedDescriptor

    source ·
    pub type DerivedDescriptor = Descriptor<DefiniteDescriptorKey>;
    Expand description

    Alias for a Descriptor that contains extended derived keys

    -
    \ No newline at end of file +DerivedDescriptor in bdk_wallet::descriptor - Rust

    Type Alias bdk_wallet::descriptor::DerivedDescriptor

    source ·
    pub type DerivedDescriptor = Descriptor<DefiniteDescriptorKey>;
    Expand description

    Alias for a Descriptor that contains extended derived keys

    +

    Aliased Type§

    enum DerivedDescriptor {
    +    Bare(Bare<DefiniteDescriptorKey>),
    +    Pkh(Pkh<DefiniteDescriptorKey>),
    +    Wpkh(Wpkh<DefiniteDescriptorKey>),
    +    Sh(Sh<DefiniteDescriptorKey>),
    +    Wsh(Wsh<DefiniteDescriptorKey>),
    +    Tr(Tr<DefiniteDescriptorKey>),
    +}

    Variants§

    §

    Bare(Bare<DefiniteDescriptorKey>)

    A raw scriptpubkey (including pay-to-pubkey) under Legacy context

    +
    §

    Pkh(Pkh<DefiniteDescriptorKey>)

    Pay-to-PubKey-Hash

    +
    §

    Wpkh(Wpkh<DefiniteDescriptorKey>)

    Pay-to-Witness-PubKey-Hash

    +
    §

    Sh(Sh<DefiniteDescriptorKey>)

    Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)

    +
    §

    Wsh(Wsh<DefiniteDescriptorKey>)

    Pay-to-Witness-ScriptHash with Segwitv0 context

    +
    §

    Tr(Tr<DefiniteDescriptorKey>)

    Pay-to-Taproot

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.ExtendedDescriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.ExtendedDescriptor.html index f6727670c7..3198675eb2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.ExtendedDescriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.ExtendedDescriptor.html @@ -1,3 +1,19 @@ -ExtendedDescriptor in bdk_wallet::descriptor - Rust

    Type Definition bdk_wallet::descriptor::ExtendedDescriptor

    source ·
    pub type ExtendedDescriptor = Descriptor<DescriptorPublicKey>;
    Expand description

    Alias for a Descriptor that can contain extended keys using DescriptorPublicKey

    -

    Trait Implementations§

    Convert to wallet descriptor
    \ No newline at end of file +ExtendedDescriptor in bdk_wallet::descriptor - Rust

    Type Alias bdk_wallet::descriptor::ExtendedDescriptor

    source ·
    pub type ExtendedDescriptor = Descriptor<DescriptorPublicKey>;
    Expand description

    Alias for a Descriptor that can contain extended keys using DescriptorPublicKey

    +

    Aliased Type§

    enum ExtendedDescriptor {
    +    Bare(Bare<DescriptorPublicKey>),
    +    Pkh(Pkh<DescriptorPublicKey>),
    +    Wpkh(Wpkh<DescriptorPublicKey>),
    +    Sh(Sh<DescriptorPublicKey>),
    +    Wsh(Wsh<DescriptorPublicKey>),
    +    Tr(Tr<DescriptorPublicKey>),
    +}

    Variants§

    §

    Bare(Bare<DescriptorPublicKey>)

    A raw scriptpubkey (including pay-to-pubkey) under Legacy context

    +
    §

    Pkh(Pkh<DescriptorPublicKey>)

    Pay-to-PubKey-Hash

    +
    §

    Wpkh(Wpkh<DescriptorPublicKey>)

    Pay-to-Witness-PubKey-Hash

    +
    §

    Sh(Sh<DescriptorPublicKey>)

    Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)

    +
    §

    Wsh(Wsh<DescriptorPublicKey>)

    Pay-to-Witness-ScriptHash with Segwitv0 context

    +
    §

    Tr(Tr<DescriptorPublicKey>)

    Pay-to-Taproot

    +

    Trait Implementations§

    source§

    impl IntoWalletDescriptor for ExtendedDescriptor

    source§

    fn into_wallet_descriptor( + self, + secp: &Secp256k1<All>, + network: Network +) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError>

    Convert to wallet descriptor
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.HdKeyPaths.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.HdKeyPaths.html index 5345eef819..3acc4ef730 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.HdKeyPaths.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.HdKeyPaths.html @@ -1,4 +1,3 @@ -HdKeyPaths in bdk_wallet::descriptor - Rust

    Type Definition bdk_wallet::descriptor::HdKeyPaths

    source ·
    pub type HdKeyPaths = BTreeMap<PublicKey, KeySource>;
    Expand description

    Alias for the type of maps that represent derivation paths in a psbt::Input or +HdKeyPaths in bdk_wallet::descriptor - Rust

    Type Alias bdk_wallet::descriptor::HdKeyPaths

    source ·
    pub type HdKeyPaths = BTreeMap<PublicKey, KeySource>;
    Expand description

    Alias for the type of maps that represent derivation paths in a psbt::Input or psbt::Output

    -
    \ No newline at end of file +

    Aliased Type§

    struct HdKeyPaths { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.TapKeyOrigins.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.TapKeyOrigins.html index 3d92ba21e3..a75cb17c8e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.TapKeyOrigins.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/descriptor/type.TapKeyOrigins.html @@ -1,4 +1,3 @@ -TapKeyOrigins in bdk_wallet::descriptor - Rust

    Type Definition bdk_wallet::descriptor::TapKeyOrigins

    source ·
    pub type TapKeyOrigins = BTreeMap<XOnlyPublicKey, (Vec<TapLeafHash>, KeySource)>;
    Expand description

    Alias for the type of maps that represent taproot key origins in a psbt::Input or +TapKeyOrigins in bdk_wallet::descriptor - Rust

    Type Alias bdk_wallet::descriptor::TapKeyOrigins

    source ·
    pub type TapKeyOrigins = BTreeMap<XOnlyPublicKey, (Vec<TapLeafHash>, KeySource)>;
    Expand description

    Alias for the type of maps that represent taproot key origins in a psbt::Input or psbt::Output

    -
    \ No newline at end of file +

    Aliased Type§

    struct TapKeyOrigins { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.KeychainKind.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.KeychainKind.html index b7ec1072c0..3724a1a1be 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.KeychainKind.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.KeychainKind.html @@ -1,17 +1,32 @@ -KeychainKind in bdk_wallet - Rust
    pub enum KeychainKind {
    -    External,
    -    Internal,
    -}
    Expand description

    Types of keychains

    -

    Variants§

    §

    External

    External keychain, used for deriving recipient addresses.

    -
    §

    Internal

    Internal keychain, used for deriving change addresses.

    -

    Implementations§

    Return KeychainKind as a byte

    -

    Trait Implementations§

    Converts this type into a shared reference of the (usually inferred) input type.
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +KeychainKind in bdk_wallet - Rust

    Enum bdk_wallet::KeychainKind

    source ·
    pub enum KeychainKind {
    +    External = 0,
    +    Internal = 1,
    +}
    Expand description

    Types of keychains

    +

    Variants§

    §

    External = 0

    External keychain, used for deriving recipient addresses.

    +
    §

    Internal = 1

    Internal keychain, used for deriving change addresses.

    +

    Implementations§

    source§

    impl KeychainKind

    source

    pub fn as_byte(&self) -> u8

    Return KeychainKind as a byte

    +

    Trait Implementations§

    source§

    impl AsRef<[u8]> for KeychainKind

    source§

    fn as_ref(&self) -> &[u8] ⓘ

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl Clone for KeychainKind

    source§

    fn clone(&self) -> KeychainKind

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for KeychainKind

    source§

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

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

    impl<'de> Deserialize<'de> for KeychainKind

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Hash for KeychainKind

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for KeychainKind

    source§

    fn cmp(&self, other: &KeychainKind) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for KeychainKind

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for KeychainKind

    source§

    fn partial_cmp(&self, other: &KeychainKind) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Serialize for KeychainKind

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for KeychainKind

    source§

    impl Eq for KeychainKind

    source§

    impl StructuralPartialEq for KeychainKind

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.Utxo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.Utxo.html index 1c846174a8..4d69f3c088 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.Utxo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/enum.Utxo.html @@ -1,24 +1,31 @@ -Utxo in bdk_wallet - Rust

    Enum bdk_wallet::Utxo

    source ·
    pub enum Utxo {
    +Utxo in bdk_wallet - Rust

    Enum bdk_wallet::Utxo

    source ·
    pub enum Utxo {
         Local(LocalOutput),
         Foreign {
             outpoint: OutPoint,
             sequence: Option<Sequence>,
             psbt_input: Box<Input>,
         },
    -}
    Expand description

    An unspent transaction output (UTXO).

    -

    Variants§

    §

    Local(LocalOutput)

    A UTXO owned by the local wallet.

    -
    §

    Foreign

    Fields

    §outpoint: OutPoint

    The location of the output.

    -
    §sequence: Option<Sequence>

    The nSequence value to set for this input.

    -
    §psbt_input: Box<Input>

    The information about the input we require to add it to a PSBT.

    -

    A UTXO owned by another wallet.

    -

    Implementations§

    Get the location of the UTXO

    -

    Get the TxOut of the UTXO

    -

    Get the sequence number if an explicit sequence number has to be set for this input.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    An unspent transaction output (UTXO).

    +

    Variants§

    §

    Local(LocalOutput)

    A UTXO owned by the local wallet.

    +
    §

    Foreign

    A UTXO owned by another wallet.

    +

    Fields

    §outpoint: OutPoint

    The location of the output.

    +
    §sequence: Option<Sequence>

    The nSequence value to set for this input.

    +
    §psbt_input: Box<Input>

    The information about the input we require to add it to a PSBT.

    +

    Implementations§

    source§

    impl Utxo

    source

    pub fn outpoint(&self) -> OutPoint

    Get the location of the UTXO

    +
    source

    pub fn txout(&self) -> &TxOut

    Get the TxOut of the UTXO

    +
    source

    pub fn sequence(&self) -> Option<Sequence>

    Get the sequence number if an explicit sequence number has to be set for this input.

    +

    Trait Implementations§

    source§

    impl Clone for Utxo

    source§

    fn clone(&self) -> Utxo

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Utxo

    source§

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

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

    impl PartialEq for Utxo

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for Utxo

    source§

    impl StructuralPartialEq for Utxo

    Auto Trait Implementations§

    §

    impl Freeze for Utxo

    §

    impl RefUnwindSafe for Utxo

    §

    impl Send for Utxo

    §

    impl Sync for Utxo

    §

    impl Unpin for Utxo

    §

    impl UnwindSafe for Utxo

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.version.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.version.html index 7c677a3767..bed2061bae 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.version.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/fn.version.html @@ -1,3 +1,2 @@ -version in bdk_wallet - Rust

    Function bdk_wallet::version

    source ·
    pub fn version() -> &'static str
    Expand description

    Get the version of BDK at runtime

    -
    \ No newline at end of file +version in bdk_wallet - Rust

    Function bdk_wallet::version

    source ·
    pub fn version() -> &'static str
    Expand description

    Get the version of BDK at runtime

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/index.html index 83b2cc99b7..ae04ebf8a1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/index.html @@ -1,5 +1,4 @@ -bdk_wallet - Rust

    Crate bdk_wallet

    source ·
    Expand description
    +bdk_wallet - Rust

    Crate bdk_wallet

    source ·
    Expand description

    BDK

    @@ -20,7 +19,7 @@ Documentation

    -

    BDK Wallet

    +

    §BDK Wallet

    The bdk_wallet crate provides the Wallet type which is a simple, high-level interface built from the low-level components of bdk_chain. Wallet is a good starting point for many simple applications as well as a good demonstration of how to use the other mechanisms to @@ -29,7 +28,7 @@ construct a wallet. It has two keychains (external and internal) which are defin chain data it also uses the descriptors to find transaction outputs owned by them. From there, you can create and sign transactions.

    For details about the API of Wallet see the module-level documentation.

    -

    Blockchain data

    +

    §Blockchain data

    In order to get blockchain data for Wallet to consume, you should configure a client from an available chain source. Typically you make a request to the chain source and get a response that the Wallet can use to update its view of the chain.

    @@ -46,7 +45,7 @@ that the Wallet can use to update its view of the chain.

  • example-crates/wallet_electrum
  • example-crates/wallet_rpc
  • -

    Persistence

    +

    §Persistence

    To persist the Wallet on disk, it must be constructed with a PersistBackend implementation.

    Implementations

      @@ -55,18 +54,18 @@ that the Wallet can use to update its view of the chain.

      Example

      -
      ⓘ
      use bdk_wallet::{bitcoin::Network, wallet::{ChangeSet, Wallet}};
      +
      ⓘ
      use bdk_wallet::{bitcoin::Network, wallet::{ChangeSet, Wallet}};
       
       fn main() {
           // Create a new file `Store`.
      -    let db = bdk_file_store::Store::<ChangeSet>::open_or_create_new(b"magic_bytes", "path/to/my_wallet.db").expect("create store");
      +    let db = bdk_file_store::Store::<ChangeSet>::open_or_create_new(b"magic_bytes", "path/to/my_wallet.db").expect("create store");
       
      -    let descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/0/*)";
      -    let mut wallet = Wallet::new_or_load(descriptor, None, db, Network::Testnet).expect("create or load wallet");
      +    let descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/0/*)";
      +    let mut wallet = Wallet::new_or_load(descriptor, None, db, Network::Testnet).expect("create or load wallet");
       
           // Insert a single `TxOut` at `OutPoint` into the wallet.
           let _ = wallet.insert_txout(outpoint, txout);
      -    wallet.commit().expect("must write to database");
      +    wallet.commit().expect("must write to database");
       }
      @@ -154,17 +153,17 @@ that the Wallet can use to update its view of the chain.

      -

      Testing

      Unit testing

      cargo test
      -

      License

      +

      §Testing

      §Unit testing

      cargo test
      +

      §License

      Licensed under either of

      at your option.

      -

      Contribution

      +

      §Contribution

      Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

      -

    Re-exports

    pub extern crate bitcoin;
    pub extern crate miniscript;
    pub use descriptor::template;
    pub use descriptor::HdKeyPaths;
    pub use wallet::signer;
    pub use wallet::signer::SignOptions;
    pub use wallet::tx_builder::TxBuilder;
    pub use wallet::Wallet;
    pub use bdk_chain as chain;

    Modules

    Descriptors
    Key formats
    Additional functions on the rust-bitcoin Psbt structure.
    Wallet

    Macros

    Macro to write full descriptors with code
    Macro to write descriptor fragments with code

    Structs

    An unspent output owned by a Wallet.
    A Utxo with its satisfaction_weight.

    Enums

    Types of keychains
    An unspent transaction output (UTXO).

    Functions

    Get the version of BDK at runtime
    \ No newline at end of file +

    Re-exports§

    • pub extern crate bitcoin;
    • pub extern crate miniscript;
    • pub use descriptor::template;
    • pub use descriptor::HdKeyPaths;
    • pub use wallet::signer;
    • pub use wallet::signer::SignOptions;
    • pub use wallet::tx_builder::TxBuilder;
    • pub use wallet::Wallet;
    • pub use bdk_chain as chain;

    Modules§

    Macros§

    • Macro to write full descriptors with code
    • Macro to write descriptor fragments with code

    Structs§

    Enums§

    Functions§

    • Get the version of BDK at runtime
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorKey.html index 2aecf98554..58375031df 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorKey.html @@ -1,13 +1,24 @@ -DescriptorKey in bdk_wallet::keys - Rust
    pub enum DescriptorKey<Ctx: ScriptContext> {
    -    // some variants omitted
    -}
    Expand description

    Container for public or secret keys

    -

    Implementations§

    Create an instance given a public key and a set of valid networks

    -

    Create an instance given a secret key and a set of valid networks

    -

    Override the computed set of valid networks

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    The “identity” conversion is used internally by some bdk_wallet::fragments

    -
    Turn the key into a DescriptorKey within the requested ScriptContext

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +DescriptorKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::DescriptorKey

    source ·
    pub enum DescriptorKey<Ctx: ScriptContext> {
    +    // some variants omitted
    +}
    Expand description

    Container for public or secret keys

    +

    Implementations§

    source§

    impl<Ctx: ScriptContext> DescriptorKey<Ctx>

    source

    pub fn from_public(public: DescriptorPublicKey, networks: ValidNetworks) -> Self

    Create an instance given a public key and a set of valid networks

    +
    source

    pub fn from_secret(secret: DescriptorSecretKey, networks: ValidNetworks) -> Self

    Create an instance given a secret key and a set of valid networks

    +
    source

    pub fn override_valid_networks(self, networks: ValidNetworks) -> Self

    Override the computed set of valid networks

    +

    Trait Implementations§

    source§

    impl<Ctx: Debug + ScriptContext> Debug for DescriptorKey<Ctx>

    source§

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

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

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorKey<Ctx>

    The “identity” conversion is used internally by some bdk_wallet::fragments

    +
    source§

    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>

    Turn the key into a DescriptorKey within the requested ScriptContext

    Auto Trait Implementations§

    §

    impl<Ctx> Freeze for DescriptorKey<Ctx>

    §

    impl<Ctx> RefUnwindSafe for DescriptorKey<Ctx>
    where + Ctx: RefUnwindSafe,

    §

    impl<Ctx> Send for DescriptorKey<Ctx>
    where + Ctx: Send,

    §

    impl<Ctx> Sync for DescriptorKey<Ctx>
    where + Ctx: Sync,

    §

    impl<Ctx> Unpin for DescriptorKey<Ctx>
    where + Ctx: Unpin,

    §

    impl<Ctx> UnwindSafe for DescriptorKey<Ctx>
    where + Ctx: UnwindSafe,

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorPublicKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorPublicKey.html index 4b46ef4d47..067c8aaa9f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorPublicKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorPublicKey.html @@ -1,55 +1,85 @@ -DescriptorPublicKey in bdk_wallet::keys - Rust
    pub enum DescriptorPublicKey {
    +DescriptorPublicKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::DescriptorPublicKey

    pub enum DescriptorPublicKey {
         Single(SinglePub),
         XPub(DescriptorXKey<Xpub>),
         MultiXPub(DescriptorMultiXKey<Xpub>),
    -}
    Expand description

    The descriptor pubkey, either a single pubkey or an xpub.

    -

    Variants§

    §

    Single(SinglePub)

    Single public key.

    +}
    Expand description

    The descriptor pubkey, either a single pubkey or an xpub.

    +

    Variants§

    §

    Single(SinglePub)

    Single public key.

    §

    XPub(DescriptorXKey<Xpub>)

    Extended public key (xpub).

    §

    MultiXPub(DescriptorMultiXKey<Xpub>)

    Multiple extended public keys.

    -

    Implementations§

    The fingerprint of the master key associated with this key, 0x00000000 if none.

    -

    Full path, from the master key

    +

    Implementations§

    §

    impl DescriptorPublicKey

    pub fn master_fingerprint(&self) -> Fingerprint

    The fingerprint of the master key associated with this key, 0x00000000 if none.

    +

    pub fn full_derivation_path(&self) -> Option<DerivationPath>

    Full path, from the master key

    For wildcard keys this will return the path up to the wildcard, so you can get full paths by appending one additional derivation step, according to the wildcard type (hardened or normal).

    For multipath extended keys, this returns None.

    -

    Returns a vector containing the full derivation paths from the master key. +

    pub fn full_derivation_paths(&self) -> Vec<DerivationPath>

    Returns a vector containing the full derivation paths from the master key. The vector will contain just one element for single keys, and multiple elements for multipath extended keys.

    For wildcard keys this will return the path up to the wildcard, so you can get full paths by appending one additional derivation step, according to the wildcard type (hardened or normal).

    -
    👎Deprecated: use has_wildcard instead

    Whether or not the key has a wildcard

    -

    Whether or not the key has a wildcard

    -
    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    -

    Replaces any wildcard (i.e. /*) in the key with a particular derivation index, turning it into a +

    pub fn is_deriveable(&self) -> bool

    👎Deprecated: use has_wildcard instead

    Whether or not the key has a wildcard

    +

    pub fn has_wildcard(&self) -> bool

    Whether or not the key has a wildcard

    +

    pub fn derive( + self, + index: u32 +) -> Result<DefiniteDescriptorKey, ConversionError>

    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    +

    pub fn at_derivation_index( + self, + index: u32 +) -> Result<DefiniteDescriptorKey, ConversionError>

    Replaces any wildcard (i.e. /*) in the key with a particular derivation index, turning it into a definite key (i.e. one where all the derivation paths are set).

    -
    Returns
    +
    §Returns
    • If this key is not an xpub, returns self.
    • If this key is an xpub but does not have a wildcard, returns self.
    • Otherwise, returns the xpub at derivation index (removing the wildcard).
    -
    Errors
    +
    §Errors
    • If index is hardened.
    -

    Whether or not this key has multiple derivation paths.

    -

    Get as many keys as derivation paths in this key.

    +

    pub fn is_multipath(&self) -> bool

    Whether or not this key has multiple derivation paths.

    +

    pub fn into_single_keys(self) -> Vec<DescriptorPublicKey>

    Get as many keys as derivation paths in this key.

    For raw public key and single-path extended keys it will return the key itself. For multipath extended keys it will return a single-path extended key per derivation path.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    The associated error which can be returned from parsing.
    Parses a string s to return a value of this type. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    Convert self into a Assets struct
    Turn the key into a DescriptorKey within the requested ScriptContext
    The associated [bitcoin::hashes::sha256::Hash] for this [MiniscriptKey], used in the -sha256 fragment. Read more
    The associated [miniscript::hash256::Hash] for this [MiniscriptKey], used in the -hash256 fragment. Read more
    The associated [bitcoin::hashes::ripemd160::Hash] for this [MiniscriptKey] type, used -in the ripemd160 fragment. Read more
    The associated [bitcoin::hashes::hash160::Hash] for this [MiniscriptKey] type, used in -the hash160 fragment. Read more
    Returns true if the pubkey is uncompressed. Defaults to false.
    Returns true if the pubkey is an x-only pubkey. Defaults to false.
    Returns the number of different derivation paths in this key. Only >1 for keys -in BIP389 multipath descriptors. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    §

    impl Clone for DescriptorPublicKey

    §

    fn clone(&self) -> DescriptorPublicKey

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for DescriptorPublicKey

    §

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

    Formats the value using the given formatter. Read more
    §

    impl<'de> Deserialize<'de> for DescriptorPublicKey

    §

    fn deserialize<D>( + deserializer: D +) -> Result<DescriptorPublicKey, <D as Deserializer<'de>>::Error>
    where + D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl Display for DescriptorPublicKey

    §

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

    Formats the value using the given formatter. Read more
    §

    impl From<DefiniteDescriptorKey> for DescriptorPublicKey

    §

    fn from(d: DefiniteDescriptorKey) -> DescriptorPublicKey

    Converts to this type from the input type.
    §

    impl FromStr for DescriptorPublicKey

    §

    type Err = DescriptorKeyParseError

    The associated error which can be returned from parsing.
    §

    fn from_str( + s: &str +) -> Result<DescriptorPublicKey, <DescriptorPublicKey as FromStr>::Err>

    Parses a string s to return a value of this type. Read more
    §

    impl Hash for DescriptorPublicKey

    §

    fn hash<__H>(&self, state: &mut __H)
    where + __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl IntoAssets for DescriptorPublicKey

    §

    fn into_assets(self) -> Assets

    Convert self into a Assets struct
    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorPublicKey

    source§

    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>

    Turn the key into a DescriptorKey within the requested ScriptContext
    §

    impl MiniscriptKey for DescriptorPublicKey

    §

    type Sha256 = Hash

    The associated [bitcoin::hashes::sha256::Hash] for this [MiniscriptKey], used in the +sha256 fragment.
    §

    type Hash256 = Hash

    The associated [miniscript::hash256::Hash] for this [MiniscriptKey], used in the +hash256 fragment.
    §

    type Ripemd160 = Hash

    The associated [bitcoin::hashes::ripemd160::Hash] for this [MiniscriptKey] type, used +in the ripemd160 fragment.
    §

    type Hash160 = Hash

    The associated [bitcoin::hashes::hash160::Hash] for this [MiniscriptKey] type, used in +the hash160 fragment.
    §

    fn is_uncompressed(&self) -> bool

    Returns true if the pubkey is uncompressed. Defaults to false.
    §

    fn is_x_only_key(&self) -> bool

    Returns true if the pubkey is an x-only pubkey. Defaults to false.
    §

    fn num_der_paths(&self) -> usize

    Returns the number of different derivation paths in this key. Only >1 for keys +in BIP389 multipath descriptors.
    §

    impl Ord for DescriptorPublicKey

    §

    fn cmp(&self, other: &DescriptorPublicKey) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl PartialEq for DescriptorPublicKey

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl PartialOrd for DescriptorPublicKey

    §

    fn partial_cmp(&self, other: &DescriptorPublicKey) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl Serialize for DescriptorPublicKey

    §

    fn serialize<S>( + &self, + serializer: S +) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where + S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl Eq for DescriptorPublicKey

    §

    impl StructuralPartialEq for DescriptorPublicKey

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorSecretKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorSecretKey.html index 46495d3cc0..0f663db6b5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorSecretKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.DescriptorSecretKey.html @@ -1,27 +1,41 @@ -DescriptorSecretKey in bdk_wallet::keys - Rust
    pub enum DescriptorSecretKey {
    +DescriptorSecretKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::DescriptorSecretKey

    pub enum DescriptorSecretKey {
         Single(SinglePriv),
         XPrv(DescriptorXKey<Xpriv>),
         MultiXPrv(DescriptorMultiXKey<Xpriv>),
    -}
    Expand description

    The descriptor secret key, either a single private key or an xprv.

    -

    Variants§

    §

    Single(SinglePriv)

    Single private key.

    +}
    Expand description

    The descriptor secret key, either a single private key or an xprv.

    +

    Variants§

    §

    Single(SinglePriv)

    Single private key.

    §

    XPrv(DescriptorXKey<Xpriv>)

    Extended private key (xpriv).

    §

    MultiXPrv(DescriptorMultiXKey<Xpriv>)

    Multiple extended private keys.

    -

    Implementations§

    Returns the public version of this key.

    +

    Implementations§

    §

    impl DescriptorSecretKey

    pub fn to_public<C>( + &self, + secp: &Secp256k1<C> +) -> Result<DescriptorPublicKey, DescriptorKeyParseError>
    where + C: Signing,

    Returns the public version of this key.

    If the key is an “XPrv”, the hardened derivation steps will be applied before converting it to a public key.

    It will return an error if the key is a “multi-xpriv”, as we wouldn’t always be able to apply hardened derivation steps if there are multiple paths.

    -

    Whether or not this key has multiple derivation paths.

    -

    Get as many keys as derivation paths in this key.

    +

    pub fn is_multipath(&self) -> bool

    Whether or not this key has multiple derivation paths.

    +

    pub fn into_single_keys(self) -> Vec<DescriptorSecretKey>

    Get as many keys as derivation paths in this key.

    For raw keys and single-path extended keys it will return the key itself. For multipath extended keys it will return a single-path extended key per derivation path.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The associated error which can be returned from parsing.
    Parses a string s to return a value of this type. Read more
    Turn the key into a DescriptorKey within the requested ScriptContext
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    §

    impl Clone for DescriptorSecretKey

    §

    fn clone(&self) -> DescriptorSecretKey

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for DescriptorSecretKey

    §

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

    Formats the value using the given formatter. Read more
    §

    impl Display for DescriptorSecretKey

    §

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

    Formats the value using the given formatter. Read more
    §

    impl FromStr for DescriptorSecretKey

    §

    type Err = DescriptorKeyParseError

    The associated error which can be returned from parsing.
    §

    fn from_str( + s: &str +) -> Result<DescriptorSecretKey, <DescriptorSecretKey as FromStr>::Err>

    Parses a string s to return a value of this type. Read more
    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorSecretKey

    source§

    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>

    Turn the key into a DescriptorKey within the requested ScriptContext
    §

    impl PartialEq for DescriptorSecretKey

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl Eq for DescriptorSecretKey

    §

    impl StructuralPartialEq for DescriptorSecretKey

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ExtendedKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ExtendedKey.html index d19b1dc125..d2eef4d8c1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ExtendedKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ExtendedKey.html @@ -1,22 +1,41 @@ -ExtendedKey in bdk_wallet::keys - Rust
    pub enum ExtendedKey<Ctx: ScriptContext = Legacy> {
    +ExtendedKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::ExtendedKey

    source ·
    pub enum ExtendedKey<Ctx: ScriptContext = Legacy> {
         Private((Xpriv, PhantomData<Ctx>)),
         Public((Xpub, PhantomData<Ctx>)),
    -}
    Expand description

    Enum for extended keys that can be either xprv or xpub

    -

    An instance of ExtendedKey can be constructed from an Xpriv +}

    Expand description

    Enum for extended keys that can be either xprv or xpub

    +

    An instance of ExtendedKey can be constructed from an Xpriv or an Xpub by using the From trait.

    -

    Defaults to the Legacy context.

    -

    Variants§

    §

    Private((Xpriv, PhantomData<Ctx>))

    A private extended key, aka an xprv

    +

    Defaults to the Legacy context.

    +

    Variants§

    §

    Private((Xpriv, PhantomData<Ctx>))

    A private extended key, aka an xprv

    §

    Public((Xpub, PhantomData<Ctx>))

    A public extended key, aka an xpub

    -

    Implementations§

    Return whether or not the key contains the private data

    -

    Transform the ExtendedKey into an Xpriv for the +

    Implementations§

    source§

    impl<Ctx: ScriptContext> ExtendedKey<Ctx>

    source

    pub fn has_secret(&self) -> bool

    Return whether or not the key contains the private data

    +
    source

    pub fn into_xprv(self, network: Network) -> Option<Xpriv>

    Transform the ExtendedKey into an Xpriv for the given [Network], if the key contains the private data

    -

    Transform the ExtendedKey into an Xpub for the +

    source

    pub fn into_xpub<C: Signing>( + self, + network: Network, + secp: &Secp256k1<C> +) -> Xpub

    Transform the ExtendedKey into an Xpub for the given [Network]

    -

    Trait Implementations§

    Identity conversion

    -
    Consume self and turn it into an ExtendedKey
    Consume self and turn it into a DescriptorKey by adding the extra metadata, such as -key origin and derivation path Read more
    Converts to this type from the input type.
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<Ctx: ScriptContext> DerivableKey<Ctx> for ExtendedKey<Ctx>

    Identity conversion

    +
    source§

    fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError>

    Consume self and turn it into an ExtendedKey
    source§

    fn into_descriptor_key( + self, + origin: Option<KeySource>, + derivation_path: DerivationPath +) -> Result<DescriptorKey<Ctx>, KeyError>

    Consume self and turn it into a DescriptorKey by adding the extra metadata, such as +key origin and derivation path
    source§

    impl<Ctx: ScriptContext> From<Xpriv> for ExtendedKey<Ctx>

    source§

    fn from(xprv: Xpriv) -> Self

    Converts to this type from the input type.
    source§

    impl<Ctx: ScriptContext> From<Xpub> for ExtendedKey<Ctx>

    source§

    fn from(xpub: Xpub) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    §

    impl<Ctx> Freeze for ExtendedKey<Ctx>

    §

    impl<Ctx> RefUnwindSafe for ExtendedKey<Ctx>
    where + Ctx: RefUnwindSafe,

    §

    impl<Ctx> Send for ExtendedKey<Ctx>
    where + Ctx: Send,

    §

    impl<Ctx> Sync for ExtendedKey<Ctx>
    where + Ctx: Sync,

    §

    impl<Ctx> Unpin for ExtendedKey<Ctx>
    where + Ctx: Unpin,

    §

    impl<Ctx> UnwindSafe for ExtendedKey<Ctx>
    where + Ctx: UnwindSafe,

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.KeyError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.KeyError.html index 42063f2ab6..c2633dbc6d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.KeyError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.KeyError.html @@ -1,21 +1,27 @@ -KeyError in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::KeyError

    source ·
    pub enum KeyError {
    +KeyError in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::KeyError

    source ·
    pub enum KeyError {
         InvalidScriptContext,
         InvalidNetwork,
         InvalidChecksum,
         Message(String),
         Bip32(Error),
         Miniscript(Error),
    -}
    Expand description

    Errors thrown while working with keys

    -

    Variants§

    §

    InvalidScriptContext

    The key cannot exist in the given script context

    +}
    Expand description

    Errors thrown while working with keys

    +

    Variants§

    §

    InvalidScriptContext

    The key cannot exist in the given script context

    §

    InvalidNetwork

    The key is not valid for the given network

    §

    InvalidChecksum

    The key has an invalid checksum

    §

    Message(String)

    Custom error message

    §

    Bip32(Error)

    BIP32 error

    §

    Miniscript(Error)

    Miniscript error

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for KeyError

    source§

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

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

    impl Display for KeyError

    source§

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

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

    impl Error for KeyError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for KeyError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for KeyError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<KeyError> for Error

    source§

    fn from(key_error: KeyError) -> Error

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ScriptContextEnum.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ScriptContextEnum.html index b7da1e6400..f9d7b49ae8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ScriptContextEnum.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.ScriptContextEnum.html @@ -1,19 +1,26 @@ -ScriptContextEnum in bdk_wallet::keys - Rust
    pub enum ScriptContextEnum {
    +ScriptContextEnum in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::ScriptContextEnum

    source ·
    pub enum ScriptContextEnum {
         Legacy,
         Segwitv0,
         Tap,
    -}
    Expand description

    Enum representation of the known valid ScriptContexts

    -

    Variants§

    §

    Legacy

    Legacy scripts

    +}
    Expand description

    Enum representation of the known valid ScriptContexts

    +

    Variants§

    §

    Legacy

    Legacy scripts

    §

    Segwitv0

    Segwitv0 scripts

    §

    Tap

    Taproot scripts

    -

    Implementations§

    Returns whether the script context is ScriptContextEnum::Legacy

    -

    Returns whether the script context is ScriptContextEnum::Segwitv0

    -

    Returns whether the script context is ScriptContextEnum::Tap

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Implementations§

    source§

    impl ScriptContextEnum

    source

    pub fn is_legacy(&self) -> bool

    Returns whether the script context is ScriptContextEnum::Legacy

    +
    source

    pub fn is_segwit_v0(&self) -> bool

    Returns whether the script context is ScriptContextEnum::Segwitv0

    +
    source

    pub fn is_taproot(&self) -> bool

    Returns whether the script context is ScriptContextEnum::Tap

    +

    Trait Implementations§

    source§

    impl Clone for ScriptContextEnum

    source§

    fn clone(&self) -> ScriptContextEnum

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ScriptContextEnum

    source§

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

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

    impl PartialEq for ScriptContextEnum

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for ScriptContextEnum

    source§

    impl Eq for ScriptContextEnum

    source§

    impl StructuralPartialEq for ScriptContextEnum

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.SinglePubKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.SinglePubKey.html index 3adeb1e48b..e80b0e8039 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.SinglePubKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/enum.SinglePubKey.html @@ -1,16 +1,29 @@ -SinglePubKey in bdk_wallet::keys - Rust
    pub enum SinglePubKey {
    +SinglePubKey in bdk_wallet::keys - Rust

    Enum bdk_wallet::keys::SinglePubKey

    pub enum SinglePubKey {
         FullKey(PublicKey),
         XOnly(XOnlyPublicKey),
    -}
    Expand description

    Single public key without any origin or range information.

    -

    Variants§

    §

    FullKey(PublicKey)

    A bitcoin public key (compressed or uncompressed).

    +}
    Expand description

    Single public key without any origin or range information.

    +

    Variants§

    §

    FullKey(PublicKey)

    A bitcoin public key (compressed or uncompressed).

    §

    XOnly(XOnlyPublicKey)

    An xonly public key.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    §

    impl Clone for SinglePubKey

    §

    fn clone(&self) -> SinglePubKey

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for SinglePubKey

    §

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

    Formats the value using the given formatter. Read more
    §

    impl Hash for SinglePubKey

    §

    fn hash<__H>(&self, state: &mut __H)
    where + __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl Ord for SinglePubKey

    §

    fn cmp(&self, other: &SinglePubKey) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl PartialEq for SinglePubKey

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl PartialOrd for SinglePubKey

    §

    fn partial_cmp(&self, other: &SinglePubKey) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl Eq for SinglePubKey

    §

    impl StructuralPartialEq for SinglePubKey

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.any_network.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.any_network.html index 0849cab6f0..1cc1d2f703 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.any_network.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.any_network.html @@ -1,3 +1,2 @@ -any_network in bdk_wallet::keys - Rust

    Function bdk_wallet::keys::any_network

    source ·
    pub fn any_network() -> ValidNetworks
    Expand description

    Create a set containing mainnet, testnet, signet, and regtest

    -
    \ No newline at end of file +any_network in bdk_wallet::keys - Rust

    Function bdk_wallet::keys::any_network

    source ·
    pub fn any_network() -> ValidNetworks
    Expand description

    Create a set containing mainnet, testnet, signet, and regtest

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.mainnet_network.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.mainnet_network.html index df0122942f..c2a5c1d925 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.mainnet_network.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.mainnet_network.html @@ -1,3 +1,2 @@ -mainnet_network in bdk_wallet::keys - Rust

    Function bdk_wallet::keys::mainnet_network

    source ·
    pub fn mainnet_network() -> ValidNetworks
    Expand description

    Create a set only containing mainnet

    -
    \ No newline at end of file +mainnet_network in bdk_wallet::keys - Rust

    Function bdk_wallet::keys::mainnet_network

    source ·
    pub fn mainnet_network() -> ValidNetworks
    Expand description

    Create a set only containing mainnet

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.merge_networks.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.merge_networks.html index a31601f1e5..96eae20726 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.merge_networks.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.merge_networks.html @@ -1,3 +1,2 @@ -merge_networks in bdk_wallet::keys - Rust

    Function bdk_wallet::keys::merge_networks

    source ·
    pub fn merge_networks(a: &ValidNetworks, b: &ValidNetworks) -> ValidNetworks
    Expand description

    Compute the intersection of two sets

    -
    \ No newline at end of file +merge_networks in bdk_wallet::keys - Rust

    Function bdk_wallet::keys::merge_networks

    source ·
    pub fn merge_networks(a: &ValidNetworks, b: &ValidNetworks) -> ValidNetworks
    Expand description

    Compute the intersection of two sets

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.test_networks.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.test_networks.html index f8aa3f4f0e..456703173b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.test_networks.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/fn.test_networks.html @@ -1,3 +1,2 @@ -test_networks in bdk_wallet::keys - Rust

    Function bdk_wallet::keys::test_networks

    source ·
    pub fn test_networks() -> ValidNetworks
    Expand description

    Create a set containing testnet and regtest

    -
    \ No newline at end of file +test_networks in bdk_wallet::keys - Rust

    Function bdk_wallet::keys::test_networks

    source ·
    pub fn test_networks() -> ValidNetworks
    Expand description

    Create a set containing testnet and regtest

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/index.html index e0507a585d..8756413cf0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/index.html @@ -1,6 +1,5 @@ -bdk_wallet::keys - Rust

    Module bdk_wallet::keys

    source ·
    Expand description

    Key formats

    -

    Structs

    Output of a GeneratableKey key generation
    Options for generating a [PrivateKey]
    A descriptor [bitcoin::PrivateKey] with optional origin information.
    A descriptor SinglePubKey with optional origin information.
    Contents of a “sortedmulti” descriptor

    Enums

    Container for public or secret keys
    The descriptor pubkey, either a single pubkey or an xpub.
    The descriptor secret key, either a single private key or an xprv.
    Enum for extended keys that can be either xprv or xpub
    Errors thrown while working with keys
    Enum representation of the known valid ScriptContexts
    Single public key without any origin or range information.

    Traits

    Trait for keys that can be derived.
    Trait that adds extra useful methods to ScriptContexts
    Trait that allows generating a key with the default options
    Trait for keys that can be generated
    Trait for objects that can be turned into a public or secret DescriptorKey
    The ScriptContext for Miniscript. Additional type information associated with +bdk_wallet::keys - Rust

    Module bdk_wallet::keys

    source ·
    Expand description

    Key formats

    +

    Structs§

    Enums§

    Traits§

    Functions

    Create a set containing mainnet, testnet, signet, and regtest
    Create a set only containing mainnet
    Compute the intersection of two sets
    Create a set containing testnet and regtest

    Type Definitions

    Alias type for a map of public key to secret key
    Set of valid networks for a key
    \ No newline at end of file +For example, disallowing uncompressed keys in Segwit context

    Functions§

    Type Aliases§

    • Alias type for a map of public key to secret key
    • Set of valid networks for a key
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/sidebar-items.js index bb1823d1c3..efaa99bea1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["DescriptorKey","Container for public or secret keys"],["DescriptorPublicKey","The descriptor pubkey, either a single pubkey or an xpub."],["DescriptorSecretKey","The descriptor secret key, either a single private key or an xprv."],["ExtendedKey","Enum for extended keys that can be either `xprv` or `xpub`"],["KeyError","Errors thrown while working with `keys`"],["ScriptContextEnum","Enum representation of the known valid [`ScriptContext`]s"],["SinglePubKey","Single public key without any origin or range information."]],"fn":[["any_network","Create a set containing mainnet, testnet, signet, and regtest"],["mainnet_network","Create a set only containing mainnet"],["merge_networks","Compute the intersection of two sets"],["test_networks","Create a set containing testnet and regtest"]],"struct":[["GeneratedKey","Output of a [`GeneratableKey`] key generation"],["PrivateKeyGenerateOptions","Options for generating a [`PrivateKey`]"],["SinglePriv","A descriptor [`bitcoin::PrivateKey`] with optional origin information."],["SinglePub","A descriptor [`SinglePubKey`] with optional origin information."],["SortedMultiVec","Contents of a “sortedmulti” descriptor"]],"trait":[["DerivableKey","Trait for keys that can be derived."],["ExtScriptContext","Trait that adds extra useful methods to [`ScriptContext`]s"],["GeneratableDefaultOptions","Trait that allows generating a key with the default options"],["GeneratableKey","Trait for keys that can be generated"],["IntoDescriptorKey","Trait for objects that can be turned into a public or secret [`DescriptorKey`]"],["ScriptContext","The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context"]],"type":[["KeyMap","Alias type for a map of public key to secret key"],["ValidNetworks","Set of valid networks for a key"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","ExtendedKey","KeyError","ScriptContextEnum","SinglePubKey"],"fn":["any_network","mainnet_network","merge_networks","test_networks"],"struct":["GeneratedKey","PrivateKeyGenerateOptions","SinglePriv","SinglePub","SortedMultiVec"],"trait":["DerivableKey","ExtScriptContext","GeneratableDefaultOptions","GeneratableKey","IntoDescriptorKey","ScriptContext"],"type":["KeyMap","ValidNetworks"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.GeneratedKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.GeneratedKey.html index 86ab913819..714bf4addc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.GeneratedKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.GeneratedKey.html @@ -1,9 +1,35 @@ -GeneratedKey in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::GeneratedKey

    source ·
    pub struct GeneratedKey<K, Ctx: ScriptContext> { /* private fields */ }
    Expand description

    Output of a GeneratableKey key generation

    -

    Implementations§

    Consumes self and returns the key

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    The resulting type after dereferencing.
    Dereferences the value.
    Consume self and turn it into an ExtendedKey
    Consume self and turn it into a DescriptorKey by adding the extra metadata, such as -key origin and derivation path Read more
    Turn the key into a DescriptorKey within the requested ScriptContext

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +GeneratedKey in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::GeneratedKey

    source ·
    pub struct GeneratedKey<K, Ctx: ScriptContext> { /* private fields */ }
    Expand description

    Output of a GeneratableKey key generation

    +

    Implementations§

    source§

    impl<K, Ctx: ScriptContext> GeneratedKey<K, Ctx>

    source

    pub fn into_key(self) -> K

    Consumes self and returns the key

    +

    Trait Implementations§

    source§

    impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>

    source§

    fn clone(&self) -> GeneratedKey<K, Ctx>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<K, Ctx: ScriptContext> Deref for GeneratedKey<K, Ctx>

    §

    type Target = K

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl<Ctx, K> DerivableKey<Ctx> for GeneratedKey<K, Ctx>
    where + Ctx: ScriptContext, + K: DerivableKey<Ctx>,

    source§

    fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError>

    Consume self and turn it into an ExtendedKey
    source§

    fn into_descriptor_key( + self, + origin: Option<KeySource>, + derivation_path: DerivationPath +) -> Result<DescriptorKey<Ctx>, KeyError>

    Consume self and turn it into a DescriptorKey by adding the extra metadata, such as +key origin and derivation path
    source§

    impl<Ctx, K> IntoDescriptorKey<Ctx> for GeneratedKey<K, Ctx>
    where + Ctx: ScriptContext, + K: IntoDescriptorKey<Ctx>,

    source§

    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>

    Turn the key into a DescriptorKey within the requested ScriptContext

    Auto Trait Implementations§

    §

    impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>
    where + K: Freeze,

    §

    impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx>
    where + K: RefUnwindSafe, + Ctx: RefUnwindSafe,

    §

    impl<K, Ctx> Send for GeneratedKey<K, Ctx>
    where + K: Send, + Ctx: Send,

    §

    impl<K, Ctx> Sync for GeneratedKey<K, Ctx>
    where + K: Sync, + Ctx: Sync,

    §

    impl<K, Ctx> Unpin for GeneratedKey<K, Ctx>
    where + K: Unpin, + Ctx: Unpin,

    §

    impl<K, Ctx> UnwindSafe for GeneratedKey<K, Ctx>
    where + K: UnwindSafe, + Ctx: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.PrivateKeyGenerateOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.PrivateKeyGenerateOptions.html index f16d95a6a2..1a44b53c0c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.PrivateKeyGenerateOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.PrivateKeyGenerateOptions.html @@ -1,11 +1,18 @@ -PrivateKeyGenerateOptions in bdk_wallet::keys - Rust
    pub struct PrivateKeyGenerateOptions {
    +PrivateKeyGenerateOptions in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::PrivateKeyGenerateOptions

    source ·
    pub struct PrivateKeyGenerateOptions {
         pub compressed: bool,
    -}
    Expand description

    Options for generating a [PrivateKey]

    +}
    Expand description

    Options for generating a [PrivateKey]

    Defaults to creating compressed keys, which save on-chain bytes and fees

    -

    Fields§

    §compressed: bool

    Whether the generated key should be “compressed” or not

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Fields§

    §compressed: bool

    Whether the generated key should be “compressed” or not

    +

    Trait Implementations§

    source§

    impl Clone for PrivateKeyGenerateOptions

    source§

    fn clone(&self) -> PrivateKeyGenerateOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for PrivateKeyGenerateOptions

    source§

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

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

    impl Default for PrivateKeyGenerateOptions

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Copy for PrivateKeyGenerateOptions

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePriv.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePriv.html index 1cec13530c..37d12b2a8e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePriv.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePriv.html @@ -1,14 +1,21 @@ -SinglePriv in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SinglePriv

    pub struct SinglePriv {
    +SinglePriv in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SinglePriv

    pub struct SinglePriv {
         pub origin: Option<(Fingerprint, DerivationPath)>,
         pub key: PrivateKey,
    -}
    Expand description

    A descriptor [bitcoin::PrivateKey] with optional origin information.

    -

    Fields§

    §origin: Option<(Fingerprint, DerivationPath)>

    Origin information (fingerprint and derivation path).

    -
    §key: PrivateKey

    The private key.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    A descriptor [bitcoin::PrivateKey] with optional origin information.

    +

    Fields§

    §origin: Option<(Fingerprint, DerivationPath)>

    Origin information (fingerprint and derivation path).

    +
    §key: PrivateKey

    The private key.

    +

    Trait Implementations§

    §

    impl Clone for SinglePriv

    §

    fn clone(&self) -> SinglePriv

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for SinglePriv

    §

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

    Formats the value using the given formatter. Read more
    §

    impl PartialEq for SinglePriv

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl Eq for SinglePriv

    §

    impl StructuralPartialEq for SinglePriv

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePub.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePub.html index 0ef63439cd..a43870ec5a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePub.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SinglePub.html @@ -1,16 +1,29 @@ -SinglePub in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SinglePub

    pub struct SinglePub {
    +SinglePub in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SinglePub

    pub struct SinglePub {
         pub origin: Option<(Fingerprint, DerivationPath)>,
         pub key: SinglePubKey,
    -}
    Expand description

    A descriptor SinglePubKey with optional origin information.

    -

    Fields§

    §origin: Option<(Fingerprint, DerivationPath)>

    Origin information (fingerprint and derivation path).

    -
    §key: SinglePubKey

    The public key.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    A descriptor SinglePubKey with optional origin information.

    +

    Fields§

    §origin: Option<(Fingerprint, DerivationPath)>

    Origin information (fingerprint and derivation path).

    +
    §key: SinglePubKey

    The public key.

    +

    Trait Implementations§

    §

    impl Clone for SinglePub

    §

    fn clone(&self) -> SinglePub

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for SinglePub

    §

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

    Formats the value using the given formatter. Read more
    §

    impl Hash for SinglePub

    §

    fn hash<__H>(&self, state: &mut __H)
    where + __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl Ord for SinglePub

    §

    fn cmp(&self, other: &SinglePub) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl PartialEq for SinglePub

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl PartialOrd for SinglePub

    §

    fn partial_cmp(&self, other: &SinglePub) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl Eq for SinglePub

    §

    impl StructuralPartialEq for SinglePub

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SortedMultiVec.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SortedMultiVec.html index ed303ea30b..cb95c9f259 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SortedMultiVec.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/struct.SortedMultiVec.html @@ -1,51 +1,121 @@ -SortedMultiVec in bdk_wallet::keys - Rust
    pub struct SortedMultiVec<Pk, Ctx>where
        Pk: MiniscriptKey,
        Ctx: ScriptContext,
    { +SortedMultiVec in bdk_wallet::keys - Rust

    Struct bdk_wallet::keys::SortedMultiVec

    pub struct SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,
    { pub k: usize, - pub pks: Vec<Pk, Global>, - /* private fields */ -}
    Expand description

    Contents of a “sortedmulti” descriptor

    -

    Fields§

    §k: usize

    signatures required

    -
    §pks: Vec<Pk, Global>

    public keys inside sorted Multi

    -

    Implementations§

    Create a new instance of SortedMultiVec given a list of keys and the threshold

    + pub pks: Vec<Pk>, + /* private fields */ +}
    Expand description

    Contents of a “sortedmulti” descriptor

    +

    Fields§

    §k: usize

    signatures required

    +
    §pks: Vec<Pk>

    public keys inside sorted Multi

    +

    Implementations§

    §

    impl<Pk, Ctx> SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    pub fn new(k: usize, pks: Vec<Pk>) -> Result<SortedMultiVec<Pk, Ctx>, Error>

    Create a new instance of SortedMultiVec given a list of keys and the threshold

    Internally checks all the applicable size limits and pubkey types limitations according to the current Ctx.

    -

    Parse an expression tree into a SortedMultiVec

    -

    This will panic if fpk returns an uncompressed key when +

    pub fn from_tree(tree: &Tree<'_>) -> Result<SortedMultiVec<Pk, Ctx>, Error>
    where + Pk: FromStr, + <Pk as FromStr>::Err: ToString,

    Parse an expression tree into a SortedMultiVec

    +

    pub fn translate_pk<T, Q, FuncError>( + &self, + t: &mut T +) -> Result<SortedMultiVec<Q, Ctx>, TranslateErr<FuncError>>
    where + T: Translator<Pk, Q, FuncError>, + Q: MiniscriptKey,

    This will panic if fpk returns an uncompressed key when converting to a Segwit descriptor. To prevent this panic, ensure fpk returns an error in this case instead.

    -

    utility function to sanity a sorted multi vec

    -

    Create Terminal::Multi containing sorted pubkeys

    -

    Encode as a Bitcoin script

    -

    Attempt to produce a satisfying witness for the +

    §

    impl<Pk, Ctx> SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    pub fn sanity_check(&self) -> Result<(), Error>

    utility function to sanity a sorted multi vec

    +
    §

    impl<Pk, Ctx> SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    pub fn sorted_node(&self) -> Terminal<Pk, Ctx>
    where + Pk: ToPublicKey,

    Create Terminal::Multi containing sorted pubkeys

    +

    pub fn encode(&self) -> ScriptBuf
    where + Pk: ToPublicKey,

    Encode as a Bitcoin script

    +

    pub fn satisfy<S>(&self, satisfier: S) -> Result<Vec<Vec<u8>>, Error>
    where + Pk: ToPublicKey, + S: Satisfier<Pk>,

    Attempt to produce a satisfying witness for the witness script represented by the parse tree

    -

    Attempt to produce a witness template given the assets available

    -

    Size, in bytes of the script-pubkey. If this Miniscript is used outside +

    pub fn build_template<P>(&self, provider: &P) -> Satisfaction<Placeholder<Pk>>
    where + Pk: ToPublicKey, + P: AssetProvider<Pk>,

    Attempt to produce a witness template given the assets available

    +

    pub fn script_size(&self) -> usize

    Size, in bytes of the script-pubkey. If this Miniscript is used outside of segwit (e.g. in a bare or P2SH descriptor), this quantity should be multiplied by 4 to compute the weight.

    In general, it is not recommended to use this function directly, but to instead call the corresponding function on a Descriptor, which will handle the segwit/non-segwit technicalities for you.

    -

    Maximum number of witness elements used to satisfy the Miniscript +

    pub fn max_satisfaction_witness_elements(&self) -> usize

    Maximum number of witness elements used to satisfy the Miniscript fragment, including the witness script itself. Used to estimate the weight of the VarInt that specifies this number in a serialized transaction.

    This function may panic on malformed Miniscript objects which do not correspond to semantically sane Scripts. (Such scripts should be rejected at parse time. Any exceptions are bugs.)

    -

    Maximum size, in bytes, of a satisfying witness. +

    pub fn max_satisfaction_size(&self) -> usize

    Maximum size, in bytes, of a satisfying witness. In general, it is not recommended to use this function directly, but to instead call the corresponding function on a Descriptor, which will handle the segwit/non-segwit technicalities for you.

    All signatures are assumed to be 73 bytes in size, including the length prefix (segwit) or push opcode (pre-segwit) and sighash postfix.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    Run a predicate on every key in the descriptor, returning whether -the predicate returned true for every key Read more
    Run a predicate on every key in the descriptor, returning whether -the predicate returned true for any key Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    Converts this object into an abstract policy.
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    §

    impl<Pk, Ctx> Clone for SortedMultiVec<Pk, Ctx>
    where + Pk: Clone + MiniscriptKey, + Ctx: Clone + ScriptContext,

    §

    fn clone(&self) -> SortedMultiVec<Pk, Ctx>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl<Pk, Ctx> Debug for SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

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

    Formats the value using the given formatter. Read more
    §

    impl<Pk, Ctx> Display for SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

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

    Formats the value using the given formatter. Read more
    §

    impl<Pk, Ctx> ForEachKey<Pk> for SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

    fn for_each_key<'a, F>(&'a self, pred: F) -> bool
    where + F: FnMut(&'a Pk) -> bool,

    Run a predicate on every key in the descriptor, returning whether +the predicate returned true for every key
    §

    fn for_any_key<'a, F>(&'a self, pred: F) -> bool
    where + F: FnMut(&'a Pk) -> bool, + Pk: 'a,

    Run a predicate on every key in the descriptor, returning whether +the predicate returned true for any key
    §

    impl<Pk, Ctx> Hash for SortedMultiVec<Pk, Ctx>
    where + Pk: Hash + MiniscriptKey, + Ctx: Hash + ScriptContext,

    §

    fn hash<__H>(&self, state: &mut __H)
    where + __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    §

    impl<Pk, Ctx> Liftable<Pk> for SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    §

    fn lift(&self) -> Result<Policy<Pk>, Error>

    Converts this object into an abstract policy.
    §

    impl<Pk, Ctx> Ord for SortedMultiVec<Pk, Ctx>
    where + Pk: Ord + MiniscriptKey, + Ctx: Ord + ScriptContext,

    §

    fn cmp(&self, other: &SortedMultiVec<Pk, Ctx>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    §

    impl<Pk, Ctx> PartialEq for SortedMultiVec<Pk, Ctx>
    where + Pk: PartialEq + MiniscriptKey, + Ctx: PartialEq + ScriptContext,

    §

    fn eq(&self, other: &SortedMultiVec<Pk, Ctx>) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl<Pk, Ctx> PartialOrd for SortedMultiVec<Pk, Ctx>
    where + Pk: PartialOrd + MiniscriptKey, + Ctx: PartialOrd + ScriptContext,

    §

    fn partial_cmp(&self, other: &SortedMultiVec<Pk, Ctx>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    §

    impl<Pk, Ctx> Eq for SortedMultiVec<Pk, Ctx>
    where + Pk: Eq + MiniscriptKey, + Ctx: Eq + ScriptContext,

    §

    impl<Pk, Ctx> StructuralPartialEq for SortedMultiVec<Pk, Ctx>
    where + Pk: MiniscriptKey, + Ctx: ScriptContext,

    Auto Trait Implementations§

    §

    impl<Pk, Ctx> Freeze for SortedMultiVec<Pk, Ctx>

    §

    impl<Pk, Ctx> RefUnwindSafe for SortedMultiVec<Pk, Ctx>
    where + Ctx: RefUnwindSafe, + Pk: RefUnwindSafe,

    §

    impl<Pk, Ctx> Send for SortedMultiVec<Pk, Ctx>
    where + Ctx: Send, + Pk: Send,

    §

    impl<Pk, Ctx> Sync for SortedMultiVec<Pk, Ctx>
    where + Ctx: Sync, + Pk: Sync,

    §

    impl<Pk, Ctx> Unpin for SortedMultiVec<Pk, Ctx>
    where + Ctx: Unpin, + Pk: Unpin,

    §

    impl<Pk, Ctx> UnwindSafe for SortedMultiVec<Pk, Ctx>
    where + Ctx: UnwindSafe, + Pk: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.DerivableKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.DerivableKey.html index abbbadd0a5..a059b5bc6a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.DerivableKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.DerivableKey.html @@ -1,17 +1,22 @@ -DerivableKey in bdk_wallet::keys - Rust
    pub trait DerivableKey<Ctx: ScriptContext = Legacy>: Sized {
    +DerivableKey in bdk_wallet::keys - Rust

    Trait bdk_wallet::keys::DerivableKey

    source ·
    pub trait DerivableKey<Ctx: ScriptContext = Legacy>: Sized {
    +    // Required method
         fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError>;
     
    -    fn into_descriptor_key(
            self,
            origin: Option<KeySource>,
            derivation_path: DerivationPath
        ) -> Result<DescriptorKey<Ctx>, KeyError> { ... } -}
    Expand description

    Trait for keys that can be derived.

    -

    When extra metadata are provided, a DerivableKey can be transformed into a -DescriptorKey: the trait IntoDescriptorKey is automatically implemented + // Provided method + fn into_descriptor_key( + self, + origin: Option<KeySource>, + derivation_path: DerivationPath + ) -> Result<DescriptorKey<Ctx>, KeyError> { ... } +}

    Expand description

    Trait for keys that can be derived.

    +

    When extra metadata are provided, a DerivableKey can be transformed into a +DescriptorKey: the trait IntoDescriptorKey is automatically implemented for (DerivableKey, DerivationPath) and (DerivableKey, KeySource, DerivationPath) tuples.

    For key types that don’t encode any indication about the path to use (like bip39), it’s -generally recommended to implement this trait instead of IntoDescriptorKey. The same +generally recommended to implement this trait instead of IntoDescriptorKey. The same rules regarding script context and valid networks apply.

    -

    Examples

    +

    §Examples

    Key types that can be directly converted into an Xpriv or an Xpub can implement only the required into_extended_key() method.

    @@ -81,8 +86,14 @@ steps to override the set of valid networks, otherwise only the network specifie Ok(descriptor_key.override_valid_networks(any_network())) } }
    -

    Required Methods§

    Consume self and turn it into an ExtendedKey

    -

    Provided Methods§

    Consume self and turn it into a DescriptorKey by adding the extra metadata, such as +

    Required Methods§

    source

    fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError>

    Consume self and turn it into an ExtendedKey

    +

    Provided Methods§

    source

    fn into_descriptor_key( + self, + origin: Option<KeySource>, + derivation_path: DerivationPath +) -> Result<DescriptorKey<Ctx>, KeyError>

    Consume self and turn it into a DescriptorKey by adding the extra metadata, such as key origin and derivation path

    -

    Implementations on Foreign Types§

    Implementors§

    Identity conversion

    -
    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<Ctx: ScriptContext> DerivableKey<Ctx> for Xpriv

    source§

    impl<Ctx: ScriptContext> DerivableKey<Ctx> for Xpub

    Implementors§

    source§

    impl<Ctx, K> DerivableKey<Ctx> for GeneratedKey<K, Ctx>
    where + Ctx: ScriptContext, + K: DerivableKey<Ctx>,

    source§

    impl<Ctx: ScriptContext> DerivableKey<Ctx> for ExtendedKey<Ctx>

    Identity conversion

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.ExtScriptContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.ExtScriptContext.html index e814a76f88..8a914e9318 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.ExtScriptContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.ExtScriptContext.html @@ -1,13 +1,14 @@ -ExtScriptContext in bdk_wallet::keys - Rust
    pub trait ExtScriptContext: ScriptContext {
    +ExtScriptContext in bdk_wallet::keys - Rust

    Trait bdk_wallet::keys::ExtScriptContext

    source ·
    pub trait ExtScriptContext: ScriptContext {
    +    // Required method
         fn as_enum() -> ScriptContextEnum;
     
    +    // Provided methods
         fn is_legacy() -> bool { ... }
         fn is_segwit_v0() -> bool { ... }
         fn is_taproot() -> bool { ... }
    -}
    Expand description

    Trait that adds extra useful methods to ScriptContexts

    -

    Required Methods§

    Provided Methods§

    Returns whether the script context is Legacy

    -

    Returns whether the script context is Segwitv0

    -

    Returns whether the script context is Tap, aka Taproot or Segwit V1

    -

    Implementors§

    \ No newline at end of file +}
    Expand description

    Trait that adds extra useful methods to ScriptContexts

    +

    Required Methods§

    Provided Methods§

    source

    fn is_legacy() -> bool

    Returns whether the script context is Legacy

    +
    source

    fn is_segwit_v0() -> bool

    Returns whether the script context is Segwitv0

    +
    source

    fn is_taproot() -> bool

    Returns whether the script context is Tap, aka Taproot or Segwit V1

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.GeneratableDefaultOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.GeneratableDefaultOptions.html index 9a185571ee..effc8312f3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.GeneratableDefaultOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.GeneratableDefaultOptions.html @@ -1,11 +1,20 @@ -GeneratableDefaultOptions in bdk_wallet::keys - Rust
    pub trait GeneratableDefaultOptions<Ctx>: GeneratableKey<Ctx>where
        Ctx: ScriptContext,
        <Self as GeneratableKey<Ctx>>::Options: Default,
    { - fn generate_with_entropy_default(
            entropy: Self::Entropy
        ) -> Result<GeneratedKey<Self, Ctx>, Self::Error> { ... } +GeneratableDefaultOptions in bdk_wallet::keys - Rust

    Trait bdk_wallet::keys::GeneratableDefaultOptions

    source ·
    pub trait GeneratableDefaultOptions<Ctx>: GeneratableKey<Ctx>
    where + Ctx: ScriptContext, + <Self as GeneratableKey<Ctx>>::Options: Default,
    { + // Provided methods + fn generate_with_entropy_default( + entropy: Self::Entropy + ) -> Result<GeneratedKey<Self, Ctx>, Self::Error> { ... } fn generate_default() -> Result<GeneratedKey<Self, Ctx>, Self::Error> { ... } -}
    Expand description

    Trait that allows generating a key with the default options

    -

    This trait is automatically implemented if the GeneratableKey::Options implements Default.

    -

    Provided Methods§

    Generate a key with the default options and a given entropy

    -

    Generate a key with the default options and a random entropy

    -

    Implementors§

    Automatic implementation of GeneratableDefaultOptions for GeneratableKeys where +}

    Expand description

    Trait that allows generating a key with the default options

    +

    This trait is automatically implemented if the GeneratableKey::Options implements Default.

    +

    Provided Methods§

    source

    fn generate_with_entropy_default( + entropy: Self::Entropy +) -> Result<GeneratedKey<Self, Ctx>, Self::Error>

    Generate a key with the default options and a given entropy

    +
    source

    fn generate_default() -> Result<GeneratedKey<Self, Ctx>, Self::Error>

    Generate a key with the default options and a random entropy

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<Ctx, K> GeneratableDefaultOptions<Ctx> for K
    where + Ctx: ScriptContext, + K: GeneratableKey<Ctx>, + <K as GeneratableKey<Ctx>>::Options: Default,

    Automatic implementation of GeneratableDefaultOptions for GeneratableKeys where Options implements Default

    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.GeneratableKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.GeneratableKey.html index b7e9136391..9fc1e03b77 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.GeneratableKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.GeneratableKey.html @@ -1,21 +1,38 @@ -GeneratableKey in bdk_wallet::keys - Rust
    pub trait GeneratableKey<Ctx: ScriptContext>: Sized {
    +GeneratableKey in bdk_wallet::keys - Rust

    Trait bdk_wallet::keys::GeneratableKey

    source ·
    pub trait GeneratableKey<Ctx: ScriptContext>: Sized {
         type Entropy: AsMut<[u8]> + Default;
         type Options;
         type Error: Debug;
     
    -    fn generate_with_entropy(
            options: Self::Options,
            entropy: Self::Entropy
        ) -> Result<GeneratedKey<Self, Ctx>, Self::Error>; + // Required method + fn generate_with_entropy( + options: Self::Options, + entropy: Self::Entropy + ) -> Result<GeneratedKey<Self, Ctx>, Self::Error>; - fn generate(
            options: Self::Options
        ) -> Result<GeneratedKey<Self, Ctx>, Self::Error> { ... } -}
    Expand description

    Trait for keys that can be generated

    -

    The same rules about ScriptContext and ValidNetworks from IntoDescriptorKey apply.

    -

    This trait is particularly useful when combined with DerivableKey: if Self -implements it, the returned GeneratedKey will also implement it. The same is true for -IntoDescriptorKey: the generated keys can be directly used in descriptors if Self is also -IntoDescriptorKey.

    -

    Required Associated Types§

    Type specifying the amount of entropy required e.g. [u8;32]

    -

    Extra options required by the generate_with_entropy

    -

    Returned error in case of failure

    -

    Required Methods§

    Generate a key given the extra options and the entropy

    -

    Provided Methods§

    Generate a key given the options with a random entropy

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file + // Provided method + fn generate( + options: Self::Options + ) -> Result<GeneratedKey<Self, Ctx>, Self::Error> { ... } +}
    Expand description

    Trait for keys that can be generated

    +

    The same rules about ScriptContext and ValidNetworks from IntoDescriptorKey apply.

    +

    This trait is particularly useful when combined with DerivableKey: if Self +implements it, the returned GeneratedKey will also implement it. The same is true for +IntoDescriptorKey: the generated keys can be directly used in descriptors if Self is also +IntoDescriptorKey.

    +

    Required Associated Types§

    source

    type Entropy: AsMut<[u8]> + Default

    Type specifying the amount of entropy required e.g. [u8;32]

    +
    source

    type Options

    Extra options required by the generate_with_entropy

    +
    source

    type Error: Debug

    Returned error in case of failure

    +

    Required Methods§

    source

    fn generate_with_entropy( + options: Self::Options, + entropy: Self::Entropy +) -> Result<GeneratedKey<Self, Ctx>, Self::Error>

    Generate a key given the extra options and the entropy

    +

    Provided Methods§

    source

    fn generate( + options: Self::Options +) -> Result<GeneratedKey<Self, Ctx>, Self::Error>

    Generate a key given the options with a random entropy

    +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<Ctx: ScriptContext> GeneratableKey<Ctx> for PrivateKey

    §

    type Entropy = [u8; 32]

    §

    type Options = PrivateKeyGenerateOptions

    §

    type Error = Error

    source§

    fn generate_with_entropy( + options: Self::Options, + entropy: Self::Entropy +) -> Result<GeneratedKey<Self, Ctx>, Self::Error>

    source§

    impl<Ctx: ScriptContext> GeneratableKey<Ctx> for Xpriv

    §

    type Entropy = [u8; 32]

    §

    type Options = ()

    §

    type Error = Error

    source§

    fn generate_with_entropy( + _: Self::Options, + entropy: Self::Entropy +) -> Result<GeneratedKey<Self, Ctx>, Self::Error>

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.IntoDescriptorKey.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.IntoDescriptorKey.html index be0915cf9d..81c85feac6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.IntoDescriptorKey.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.IntoDescriptorKey.html @@ -1,20 +1,20 @@ -IntoDescriptorKey in bdk_wallet::keys - Rust
    pub trait IntoDescriptorKey<Ctx: ScriptContext>: Sized {
    +IntoDescriptorKey in bdk_wallet::keys - Rust

    Trait bdk_wallet::keys::IntoDescriptorKey

    source ·
    pub trait IntoDescriptorKey<Ctx: ScriptContext>: Sized {
    +    // Required method
         fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>;
    -}
    Expand description

    Trait for objects that can be turned into a public or secret DescriptorKey

    +}
    Expand description

    Trait for objects that can be turned into a public or secret DescriptorKey

    The generic type Ctx is used to define the context in which the key is valid: some key formats, like the mnemonics used by Electrum wallets, encode internally whether the wallet is legacy or segwit. Thus, trying to turn a valid legacy mnemonic into a DescriptorKey that would become part of a segwit descriptor should fail.

    -

    For key types that do care about this, the ExtScriptContext trait provides some useful +

    For key types that do care about this, the ExtScriptContext trait provides some useful methods that can be used to check at runtime which Ctx is being used.

    For key types that can do this check statically (because they can only work within a single Ctx), the “specialized” trait can be implemented to make the compiler handle the type checking.

    Keys also have control over the networks they support: constructing the return object with -DescriptorKey::from_public or DescriptorKey::from_secret allows to specify a set of -ValidNetworks.

    -

    Examples

    +DescriptorKey::from_public or DescriptorKey::from_secret allows to specify a set of +ValidNetworks.

    +

    §Examples

    Key type valid in any context:

    use bdk_wallet::bitcoin::PublicKey;
    @@ -67,7 +67,7 @@ checking.

    pubkey: PublicKey, } -impl<Ctx: ScriptContext + 'static> IntoDescriptorKey<Ctx> for MyKeyType { +impl<Ctx: ScriptContext + 'static> IntoDescriptorKey<Ctx> for MyKeyType { fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> { if Ctx::is_legacy() == self.is_legacy { self.pubkey.into_descriptor_key() @@ -76,13 +76,13 @@ checking.

    } } }
    -

    Key type that can only work within miniscript::Segwitv0 context. Only the specialized version +

    Key type that can only work within miniscript::Segwitv0 context. Only the specialized version of the trait is implemented.

    This example deliberately fails to compile, to demonstrate how the compiler can catch when keys are misused. In this case, the “segwit-only” key is used to build a pkh() descriptor, which makes the compiler (correctly) fail.

    -
    ⓘ
    use bdk_wallet::bitcoin::PublicKey;
    +
    ⓘ
    use bdk_wallet::bitcoin::PublicKey;
     use core::str::FromStr;
     
     use bdk_wallet::keys::{DescriptorKey, IntoDescriptorKey, KeyError};
    @@ -98,11 +98,13 @@ makes the compiler (correctly) fail.

    } let key = MySegwitOnlyKeyType { - pubkey: PublicKey::from_str("...")?, + pubkey: PublicKey::from_str("...")?, }; let (descriptor, _, _) = bdk_wallet::descriptor!(pkh(key))?; // ^^^^^ changing this to `wpkh` would make it compile
    -

    Required Methods§

    Turn the key into a DescriptorKey within the requested ScriptContext

    -

    Implementations on Foreign Types§

    Implementors§

    The “identity” conversion is used internally by some bdk_wallet::fragments

    -
    \ No newline at end of file +

    Required Methods§

    source

    fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError>

    Turn the key into a DescriptorKey within the requested ScriptContext

    +

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for &str

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for PrivateKey

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for PublicKey

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for XOnlyPublicKey

    source§

    impl<Ctx: ScriptContext, T: DerivableKey<Ctx>> IntoDescriptorKey<Ctx> for (T, DerivationPath)

    source§

    impl<Ctx: ScriptContext, T: DerivableKey<Ctx>> IntoDescriptorKey<Ctx> for (T, KeySource, DerivationPath)

    Implementors§

    source§

    impl<Ctx, K> IntoDescriptorKey<Ctx> for GeneratedKey<K, Ctx>
    where + Ctx: ScriptContext, + K: IntoDescriptorKey<Ctx>,

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorKey<Ctx>

    The “identity” conversion is used internally by some bdk_wallet::fragments

    +
    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorPublicKey

    source§

    impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorSecretKey

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.ScriptContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.ScriptContext.html index 9cbcf31dcf..708f604c4c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.ScriptContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/trait.ScriptContext.html @@ -1,40 +1,64 @@ -ScriptContext in bdk_wallet::keys - Rust
    pub trait ScriptContext: Debug + Clone + Ord + PartialOrd<Self> + Eq + PartialEq<Self> + Hash + Sealed {
    +ScriptContext in bdk_wallet::keys - Rust

    Trait bdk_wallet::keys::ScriptContext

    pub trait ScriptContext: Debug + Clone + Ord + PartialOrd + Eq + PartialEq + Hash + Sealed {
         type Key: ParseableKey<Sha256 = Hash, Hash256 = Hash, Ripemd160 = Hash, Hash160 = Hash> + MiniscriptKey;
     
    -
    Show 16 methods fn check_terminal_non_malleable<Pk>(
            _frag: &Terminal<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    ; - fn check_pk<Pk>(pk: &Pk) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    ; - fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Self>) -> Option<usize>
        where
            Pk: MiniscriptKey
    ; +
    Show 16 methods // Required methods + fn check_terminal_non_malleable<Pk>( + _frag: &Terminal<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey; + fn check_pk<Pk>(pk: &Pk) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey; + fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Self>) -> Option<usize> + where Pk: MiniscriptKey; fn sig_type() -> SigType; - fn pk_len<Pk>(pk: &Pk) -> usize
        where
            Pk: MiniscriptKey
    ; + fn pk_len<Pk>(pk: &Pk) -> usize + where Pk: MiniscriptKey; fn name_str() -> &'static str; - fn check_witness<Pk>(
            _witness: &[Vec<u8, Global>]
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_global_consensus_validity<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_global_policy_validity<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_local_consensus_validity<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_local_policy_validity<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_global_validity<Pk>(
            ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn check_local_validity<Pk>(
            ms: &Miniscript<Pk, Self>
        ) -> Result<(), ScriptContextError>
        where
            Pk: MiniscriptKey
    , - { ... } - fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
        where
            Pk: MiniscriptKey
    , - { ... } - fn other_top_level_checks<Pk>(
            _ms: &Miniscript<Pk, Self>
        ) -> Result<(), Error>
        where
            Pk: MiniscriptKey
    , - { ... } - fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
        where
            Pk: MiniscriptKey
    , - { ... } -
    }
    Expand description

    The ScriptContext for Miniscript. Additional type information associated with + // Provided methods + fn check_witness<Pk>(_witness: &[Vec<u8>]) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_global_consensus_validity<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_global_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_local_consensus_validity<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_local_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_global_validity<Pk>( + ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn check_local_validity<Pk>( + ms: &Miniscript<Pk, Self> + ) -> Result<(), ScriptContextError> + where Pk: MiniscriptKey { ... } + fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error> + where Pk: MiniscriptKey { ... } + fn other_top_level_checks<Pk>( + _ms: &Miniscript<Pk, Self> + ) -> Result<(), Error> + where Pk: MiniscriptKey { ... } + fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error> + where Pk: MiniscriptKey { ... } +

    }
    Expand description

    The ScriptContext for Miniscript. Additional type information associated with miniscript that is used for carrying out checks that dependent on the context under which the script is used. For example, disallowing uncompressed keys in Segwit context

    -

    Required Associated Types§

    The consensus key associated with the type. Must be a parseable key

    -

    Required Methods§

    Depending on ScriptContext, fragments can be malleable. For Example, +

    Required Associated Types§

    type Key: ParseableKey<Sha256 = Hash, Hash256 = Hash, Ripemd160 = Hash, Hash160 = Hash> + MiniscriptKey

    The consensus key associated with the type. Must be a parseable key

    +

    Required Methods§

    fn check_terminal_non_malleable<Pk>( + _frag: &Terminal<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on ScriptContext, fragments can be malleable. For Example, under Legacy context, PkH is malleable because it is possible to estimate the cost of satisfaction because of compressed keys This is currently only used in compiler code for removing malleable @@ -42,21 +66,28 @@ compilations. This does NOT recursively check if the children of the fragment are valid or not. Since the compilation proceeds in a leaf to root fashion, a recursive check is unnecessary.

    -

    Each context has slightly different rules on what Pks are allowed in descriptors +

    fn check_pk<Pk>(pk: &Pk) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Each context has slightly different rules on what Pks are allowed in descriptors Legacy/Bare does not allow x_only keys Segwit does not allow uncompressed keys and x_only keys Tapscript does not allow uncompressed keys

    -

    Depending on script context, the size of a satifaction witness may slightly differ.

    -

    The type of signature required for satisfaction

    -

    Get the len of public key when serialized based on context +

    fn max_satisfaction_size<Pk>(ms: &Miniscript<Pk, Self>) -> Option<usize>
    where + Pk: MiniscriptKey,

    Depending on script context, the size of a satifaction witness may slightly differ.

    +

    fn sig_type() -> SigType

    The type of signature required for satisfaction

    +

    fn pk_len<Pk>(pk: &Pk) -> usize
    where + Pk: MiniscriptKey,

    Get the len of public key when serialized based on context Note that this includes the serialization prefix. Returns 34/66 for Bare/Legacy based on key compressedness 34 for Segwitv0, 33 for Tap

    -

    Local helper function to display error messages with context

    -

    Provided Methods§

    Check whether the given satisfaction is valid under the ScriptContext +

    fn name_str() -> &'static str

    Local helper function to display error messages with context

    +

    Provided Methods§

    fn check_witness<Pk>(_witness: &[Vec<u8>]) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check whether the given satisfaction is valid under the ScriptContext For example, segwit satisfactions may fail if the witness len is more 3600 or number of stack elements are more than 100.

    -

    Depending on script Context, some of the Terminals might not +

    fn check_global_consensus_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on script Context, some of the Terminals might not be valid under the current consensus rules. Or some of the script resource limits may have been exceeded. These miniscripts would never be accepted by the Bitcoin network and hence @@ -66,7 +97,10 @@ uncompressed public keys are non-standard and thus invalid. In LegacyP2SH context, scripts above 520 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments.

    -

    Depending on script Context, some of the script resource limits +

    fn check_global_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Depending on script Context, some of the script resource limits may have been exceeded under the current bitcoin core policy rules These miniscripts would never be accepted by the Bitcoin network and hence it is safe to discard them. (unless explicitly disabled by non-standard flag) @@ -74,20 +108,35 @@ For example, in Segwit Context with MiniscriptKey as bitcoin::PublicKey scripts over 3600 bytes are invalid. Post Tapscript upgrade, this would have to consider other nodes. This does NOT recursively check the miniscript fragments.

    -

    Consensus rules at the Miniscript satisfaction time. +

    fn check_local_consensus_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Consensus rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path(Legacy/Segwitv0) may require more than 201 opcodes.

    -

    Policy rules at the Miniscript satisfaction time. +

    fn check_local_policy_validity<Pk>( + _ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Policy rules at the Miniscript satisfaction time. It is possible that some paths of miniscript may exceed resource limits and our current satisfier and lifting analysis would not work correctly. For example, satisfaction path in Legacy context scriptSig more than 1650 bytes

    -

    Check the consensus + policy(if not disabled) rules that are not based +

    fn check_global_validity<Pk>( + ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check the consensus + policy(if not disabled) rules that are not based satisfaction

    -

    Check the consensus + policy(if not disabled) rules including the +

    fn check_local_validity<Pk>( + ms: &Miniscript<Pk, Self> +) -> Result<(), ScriptContextError>
    where + Pk: MiniscriptKey,

    Check the consensus + policy(if not disabled) rules including the ones for satisfaction

    -

    Check whether the top-level is type B

    -

    Other top level checks that are context specific

    -

    Check top level consensus rules.

    -

    Implementors§

    \ No newline at end of file +

    fn top_level_type_check<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Check whether the top-level is type B

    +

    fn other_top_level_checks<Pk>(_ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Other top level checks that are context specific

    +

    fn top_level_checks<Pk>(ms: &Miniscript<Pk, Self>) -> Result<(), Error>
    where + Pk: MiniscriptKey,

    Check top level consensus rules.

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    §

    impl ScriptContext for Legacy

    §

    type Key = PublicKey

    §

    impl ScriptContext for Segwitv0

    §

    type Key = PublicKey

    §

    impl ScriptContext for BareCtx

    §

    type Key = PublicKey

    §

    impl ScriptContext for Tap

    §

    type Key = XOnlyPublicKey

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/type.KeyMap.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/type.KeyMap.html index 83c07924bb..4f000f185f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/type.KeyMap.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/type.KeyMap.html @@ -1,7 +1,6 @@ -KeyMap in bdk_wallet::keys - Rust

    Type Definition bdk_wallet::keys::KeyMap

    Expand description

    Alias type for a map of public key to secret key

    +KeyMap in bdk_wallet::keys - Rust

    Type Alias bdk_wallet::keys::KeyMap

    pub type KeyMap = BTreeMap<DescriptorPublicKey, DescriptorSecretKey>;
    Expand description

    Alias type for a map of public key to secret key

    This map is returned whenever a descriptor that contains secrets is parsed using -Descriptor::parse_descriptor, since the descriptor will always only contain +Descriptor::parse_descriptor, since the descriptor will always only contain public keys. This map allows looking up the corresponding secret key given a public key from the descriptor.

    -
    \ No newline at end of file +

    Aliased Type§

    struct KeyMap { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/type.ValidNetworks.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/type.ValidNetworks.html index bcd13ec5d4..3cdbba875c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/type.ValidNetworks.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/keys/type.ValidNetworks.html @@ -1,3 +1,2 @@ -ValidNetworks in bdk_wallet::keys - Rust

    Type Definition bdk_wallet::keys::ValidNetworks

    source ·
    pub type ValidNetworks = HashSet<Network>;
    Expand description

    Set of valid networks for a key

    -
    \ No newline at end of file +ValidNetworks in bdk_wallet::keys - Rust

    Type Alias bdk_wallet::keys::ValidNetworks

    source ·
    pub type ValidNetworks = HashSet<Network>;
    Expand description

    Set of valid networks for a key

    +

    Aliased Type§

    struct ValidNetworks { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/macro.descriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/macro.descriptor.html index 5cbb15e05d..59981c3384 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/macro.descriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/macro.descriptor.html @@ -1,5 +1,4 @@ -descriptor in bdk_wallet - Rust

    Macro bdk_wallet::descriptor

    source ·
    macro_rules! descriptor {
    +descriptor in bdk_wallet - Rust

    Macro bdk_wallet::descriptor

    source ·
    macro_rules! descriptor {
         ( bare ( $( $minisc:tt )* ) ) => { ... };
         ( sh ( wsh ( $( $minisc:tt )* ) ) ) => { ... };
         ( shwsh ( $( $minisc:tt )* ) ) => { ... };
    @@ -12,35 +11,34 @@
         ( wsh ( $( $minisc:tt )* ) ) => { ... };
         ( tr ( $internal_key:expr ) ) => { ... };
         ( tr ( $internal_key:expr, $( $taptree:tt )* ) ) => { ... };
    -}
    -
    Expand description

    Macro to write full descriptors with code

    +}
    Expand description

    Macro to write full descriptors with code

    This macro expands to a Result of -DescriptorTemplateOut and DescriptorError

    +DescriptorTemplateOut and DescriptorError

    The syntax is very similar to the normal descriptor syntax, with the exception that modifiers cannot be grouped together. For instance, a descriptor fragment like sdv:older(144) has to be broken up to s:d:v:older(144).

    The pk(), pk_k() and pk_h() operands can take as argument any type that implements -IntoDescriptorKey. This means that keys can also be written inline as strings, but in that +IntoDescriptorKey. This means that keys can also be written inline as strings, but in that case they must be wrapped in quotes, which is another difference compared to the standard descriptor syntax.

    -

    Example

    +

    §Example

    Signature plus timelock descriptor:

    -
    let (my_descriptor, my_keys_map, networks) = bdk_wallet::descriptor!(sh(wsh(and_v(v:pk("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"),older(50)))))?;
    +
    let (my_descriptor, my_keys_map, networks) = bdk_wallet::descriptor!(sh(wsh(and_v(v:pk("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"),older(50)))))?;

    2-of-3 that becomes a 1-of-3 after a timelock has expired. Both descriptor_a and descriptor_b are equivalent: the first syntax is more suitable for a fixed number of items known at compile time, while the other accepts a -Vec of items, which makes it more suitable for writing dynamic descriptors.

    +Vec of items, which makes it more suitable for writing dynamic descriptors.

    They both produce the descriptor: wsh(thresh(2,pk(...),s:pk(...),sndv:older(...)))

    let my_key_1 = bitcoin::PublicKey::from_str(
    -    "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
    +    "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
     )?;
     let my_key_2 =
    -    bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
    +    bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
     let my_timelock = 50;
     
    -let (descriptor_a, key_map_a, networks) = bdk_wallet::descriptor! {
    +let (descriptor_a, key_map_a, networks) = bdk_wallet::descriptor! {
         wsh (
             thresh(2, pk(my_key_1), s:pk(my_key_2), s:n:d:v:older(my_timelock))
         )
    @@ -61,12 +59,12 @@ syntax is more suitable for a fixed number of items known at compile time, while
     

    Simple 2-of-2 multi-signature, equivalent to: wsh(multi(2, ...))

    let my_key_1 = bitcoin::PublicKey::from_str(
    -    "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
    +    "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
     )?;
     let my_key_2 =
    -    bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
    +    bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
     
    -let (descriptor, key_map, networks) = bdk_wallet::descriptor! {
    +let (descriptor, key_map, networks) = bdk_wallet::descriptor! {
         wsh (
             multi(2, my_key_1, my_key_2)
         )
    @@ -75,7 +73,7 @@ syntax is more suitable for a fixed number of items known at compile time, while
     

    Native-Segwit single-sig, equivalent to: wpkh(...)

    let my_key =
    -    bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
    +    bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
     
     let (descriptor, key_map, networks) = bdk_wallet::descriptor!(wpkh(my_key))?;
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/macro.fragment.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/macro.fragment.html index 61db51d7ff..14c49287d0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/macro.fragment.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/macro.fragment.html @@ -1,5 +1,4 @@ -fragment in bdk_wallet - Rust

    Macro bdk_wallet::fragment

    source ·
    macro_rules! fragment {
    +fragment in bdk_wallet - Rust

    Macro bdk_wallet::fragment

    source ·
    macro_rules! fragment {
         ( $modif:tt : $( $tail:tt )* ) => { ... };
         ( true ) => { ... };
         ( false ) => { ... };
    @@ -28,9 +27,8 @@
         ( multi_a ( $thresh:expr $(, $key:expr )+ ) ) => { ... };
         ( sortedmulti ( $( $inner:tt )* ) ) => { ... };
         ( sortedmulti_vec ( $( $inner:tt )* ) ) => { ... };
    -}
    -
    Expand description

    Macro to write descriptor fragments with code

    +}
    Expand description

    Macro to write descriptor fragments with code

    This macro will be expanded to an object of type Result<(Miniscript<DescriptorPublicKey, _>, KeyMap, ValidNetworks), DescriptorError>. It allows writing fragments of larger descriptors that can be pieced together using fragment!(thresh_vec(m, ...)).

    -

    The syntax to write macro fragment is the same as documented for the descriptor macro.

    -
    \ No newline at end of file +

    The syntax to write macro fragment is the same as documented for the descriptor macro.

    + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/index.html index 16d76ca13f..de3b8ee4c1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/index.html @@ -1,3 +1,2 @@ -bdk_wallet::psbt - Rust

    Module bdk_wallet::psbt

    source ·
    Expand description

    Additional functions on the rust-bitcoin Psbt structure.

    -

    Traits

    Trait to add functions to extract utxos and calculate fees.
    \ No newline at end of file +bdk_wallet::psbt - Rust

    Module bdk_wallet::psbt

    source ·
    Expand description

    Additional functions on the rust-bitcoin Psbt structure.

    +

    Traits§

    • Trait to add functions to extract utxos and calculate fees.
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/sidebar-items.js index 3b7a144401..7f2b64b968 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"trait":[["PsbtUtils","Trait to add functions to extract utxos and calculate fees."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"trait":["PsbtUtils"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/trait.PsbtUtils.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/trait.PsbtUtils.html index d99000f25f..530023ab80 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/trait.PsbtUtils.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/psbt/trait.PsbtUtils.html @@ -1,14 +1,14 @@ -PsbtUtils in bdk_wallet::psbt - Rust

    Trait bdk_wallet::psbt::PsbtUtils

    source ·
    pub trait PsbtUtils {
    +PsbtUtils in bdk_wallet::psbt - Rust

    Trait bdk_wallet::psbt::PsbtUtils

    source ·
    pub trait PsbtUtils {
    +    // Required methods
         fn get_utxo_for(&self, input_index: usize) -> Option<TxOut>;
         fn fee_amount(&self) -> Option<u64>;
         fn fee_rate(&self) -> Option<FeeRate>;
    -}
    Expand description

    Trait to add functions to extract utxos and calculate fees.

    -

    Required Methods§

    Get the TxOut for the specified input index, if it doesn’t exist in the PSBT None is returned.

    -

    The total transaction fee amount, sum of input amounts minus sum of output amounts, in sats. +}

    Expand description

    Trait to add functions to extract utxos and calculate fees.

    +

    Required Methods§

    source

    fn get_utxo_for(&self, input_index: usize) -> Option<TxOut>

    Get the TxOut for the specified input index, if it doesn’t exist in the PSBT None is returned.

    +
    source

    fn fee_amount(&self) -> Option<u64>

    The total transaction fee amount, sum of input amounts minus sum of output amounts, in sats. If the PSBT is missing a TxOut for an input returns None.

    -

    The transaction’s fee rate. This value will only be accurate if calculated AFTER the +

    source

    fn fee_rate(&self) -> Option<FeeRate>

    The transaction’s fee rate. This value will only be accurate if calculated AFTER the Psbt is finalized and all witness/signature data is added to the transaction. If the PSBT is missing a TxOut for an input returns None.

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +

    Implementations on Foreign Types§

    source§

    impl PsbtUtils for Psbt

    source§

    fn get_utxo_for(&self, input_index: usize) -> Option<TxOut>

    source§

    fn fee_amount(&self) -> Option<u64>

    source§

    fn fee_rate(&self) -> Option<FeeRate>

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/sidebar-items.js index c3780c6996..f6240a3cb6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["KeychainKind","Types of keychains"],["Utxo","An unspent transaction output (UTXO)."]],"externcrate":[["bitcoin",""],["miniscript",""]],"fn":[["version","Get the version of BDK at runtime"]],"macro":[["descriptor","Macro to write full descriptors with code"],["fragment","Macro to write descriptor fragments with code"]],"mod":[["descriptor","Descriptors"],["keys","Key formats"],["psbt","Additional functions on the `rust-bitcoin` `Psbt` structure."],["wallet","Wallet"]],"struct":[["LocalOutput","An unspent output owned by a `Wallet`."],["WeightedUtxo","A [`Utxo`] with its `satisfaction_weight`."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["KeychainKind","Utxo"],"externcrate":["bitcoin","miniscript"],"fn":["version"],"macro":["descriptor","fragment"],"mod":["descriptor","keys","psbt","wallet"],"struct":["LocalOutput","WeightedUtxo"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LocalOutput.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LocalOutput.html index 1e04701beb..30b414ccf2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LocalOutput.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.LocalOutput.html @@ -1,22 +1,34 @@ -LocalOutput in bdk_wallet - Rust

    Struct bdk_wallet::LocalOutput

    source ·
    pub struct LocalOutput {
    +LocalOutput in bdk_wallet - Rust

    Struct bdk_wallet::LocalOutput

    source ·
    pub struct LocalOutput {
         pub outpoint: OutPoint,
         pub txout: TxOut,
         pub keychain: KeychainKind,
         pub is_spent: bool,
         pub derivation_index: u32,
    -    pub confirmation_time: ConfirmationTime,
    -}
    Expand description

    An unspent output owned by a Wallet.

    -

    Fields§

    §outpoint: OutPoint

    Reference to a transaction output

    -
    §txout: TxOut

    Transaction output

    -
    §keychain: KeychainKind

    Type of keychain

    -
    §is_spent: bool

    Whether this UTXO is spent or not

    -
    §derivation_index: u32

    The derivation index for the script pubkey in the wallet

    -
    §confirmation_time: ConfirmationTime

    The confirmation time for transaction containing this utxo

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    + pub confirmation_time: ConfirmationTime, +}
    Expand description

    An unspent output owned by a Wallet.

    +

    Fields§

    §outpoint: OutPoint

    Reference to a transaction output

    +
    §txout: TxOut

    Transaction output

    +
    §keychain: KeychainKind

    Type of keychain

    +
    §is_spent: bool

    Whether this UTXO is spent or not

    +
    §derivation_index: u32

    The derivation index for the script pubkey in the wallet

    +
    §confirmation_time: ConfirmationTime

    The confirmation time for transaction containing this utxo

    +

    Trait Implementations§

    source§

    impl Clone for LocalOutput

    source§

    fn clone(&self) -> LocalOutput

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for LocalOutput

    source§

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

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

    impl<'de> Deserialize<'de> for LocalOutput

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Hash for LocalOutput

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl PartialEq for LocalOutput

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Serialize for LocalOutput

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Eq for LocalOutput

    source§

    impl StructuralPartialEq for LocalOutput

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.WeightedUtxo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.WeightedUtxo.html index 3faad91d36..cf5d361e14 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.WeightedUtxo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/struct.WeightedUtxo.html @@ -1,15 +1,22 @@ -WeightedUtxo in bdk_wallet - Rust

    Struct bdk_wallet::WeightedUtxo

    source ·
    pub struct WeightedUtxo {
    +WeightedUtxo in bdk_wallet - Rust

    Struct bdk_wallet::WeightedUtxo

    source ·
    pub struct WeightedUtxo {
         pub satisfaction_weight: usize,
         pub utxo: Utxo,
    -}
    Expand description

    A Utxo with its satisfaction_weight.

    -

    Fields§

    §satisfaction_weight: usize

    The weight of the witness data and scriptSig expressed in weight units. This is used to +}

    Expand description

    A Utxo with its satisfaction_weight.

    +

    Fields§

    §satisfaction_weight: usize

    The weight of the witness data and scriptSig expressed in weight units. This is used to properly maintain the feerate when adding this input to a transaction during coin selection.

    -
    §utxo: Utxo

    The UTXO

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    §utxo: Utxo

    The UTXO

    +

    Trait Implementations§

    source§

    impl Clone for WeightedUtxo

    source§

    fn clone(&self) -> WeightedUtxo

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WeightedUtxo

    source§

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

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

    impl PartialEq for WeightedUtxo

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for WeightedUtxo

    source§

    impl StructuralPartialEq for WeightedUtxo

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html index 4a7984c8d4..209511a17b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Error.html @@ -1,22 +1,28 @@ -Error in bdk_wallet::wallet::coin_selection - Rust
    pub enum Error {
    +Error in bdk_wallet::wallet::coin_selection - Rust

    Enum bdk_wallet::wallet::coin_selection::Error

    source ·
    pub enum Error {
         InsufficientFunds {
             needed: u64,
             available: u64,
         },
         BnBNoExactMatch,
         BnBTotalTriesExceeded,
    -}
    Expand description

    Errors that can be thrown by the coin_selection module

    -

    Variants§

    §

    InsufficientFunds

    Fields

    §needed: u64

    Sats needed for some transaction

    -
    §available: u64

    Sats available for spending

    -

    Wallet’s UTXO set is not enough to cover recipient’s requested plus fee

    -
    §

    BnBNoExactMatch

    Branch and bound coin selection tries to avoid needing a change by finding the right inputs for +}

    Expand description

    Errors that can be thrown by the coin_selection module

    +

    Variants§

    §

    InsufficientFunds

    Wallet’s UTXO set is not enough to cover recipient’s requested plus fee

    +

    Fields

    §needed: u64

    Sats needed for some transaction

    +
    §available: u64

    Sats available for spending

    +
    §

    BnBNoExactMatch

    Branch and bound coin selection tries to avoid needing a change by finding the right inputs for the desired outputs plus fee, if there is not such combination this error is thrown

    §

    BnBTotalTriesExceeded

    Branch and bound coin selection possible attempts with sufficiently big UTXO set could grow exponentially, thus a limit is set, and when hit, this error is thrown

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for Error

    source§

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

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

    impl Display for Error

    source§

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

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

    impl Error for Error

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Excess.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Excess.html index b0487e7f71..f739e01a84 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Excess.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/enum.Excess.html @@ -1,5 +1,4 @@ -Excess in bdk_wallet::wallet::coin_selection - Rust
    pub enum Excess {
    +Excess in bdk_wallet::wallet::coin_selection - Rust

    Enum bdk_wallet::wallet::coin_selection::Excess

    source ·
    pub enum Excess {
         NoChange {
             dust_threshold: u64,
             remaining_amount: u64,
    @@ -9,16 +8,23 @@
             amount: u64,
             fee: u64,
         },
    -}
    Expand description

    Remaining amount after performing coin selection

    -

    Variants§

    §

    NoChange

    Fields

    §dust_threshold: u64

    Threshold to consider amount as dust for this particular change script_pubkey

    -
    §remaining_amount: u64

    Exceeding amount of current selection over outgoing value and fee costs

    -
    §change_fee: u64

    The calculated fee for the drain TxOut with the selected script_pubkey

    -

    It’s not possible to create spendable output from excess using the current drain output

    -
    §

    Change

    Fields

    §amount: u64

    Effective amount available to create change after deducting the change output fee

    -
    §fee: u64

    The deducted change output fee

    -

    It’s possible to create spendable output from excess using the current drain output

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Remaining amount after performing coin selection

    +

    Variants§

    §

    NoChange

    It’s not possible to create spendable output from excess using the current drain output

    +

    Fields

    §dust_threshold: u64

    Threshold to consider amount as dust for this particular change script_pubkey

    +
    §remaining_amount: u64

    Exceeding amount of current selection over outgoing value and fee costs

    +
    §change_fee: u64

    The calculated fee for the drain TxOut with the selected script_pubkey

    +
    §

    Change

    It’s possible to create spendable output from excess using the current drain output

    +

    Fields

    §amount: u64

    Effective amount available to create change after deducting the change output fee

    +
    §fee: u64

    The deducted change output fee

    +

    Trait Implementations§

    source§

    impl Debug for Excess

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/fn.decide_change.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/fn.decide_change.html index 5c1c565c21..c87f4af9f2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/fn.decide_change.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/fn.decide_change.html @@ -1,8 +1,11 @@ -decide_change in bdk_wallet::wallet::coin_selection - Rust
    pub fn decide_change(
        remaining_amount: u64,
        fee_rate: FeeRate,
        drain_script: &Script
    ) -> Excess
    Expand description

    Decide if change can be created

    +decide_change in bdk_wallet::wallet::coin_selection - Rust

    Function bdk_wallet::wallet::coin_selection::decide_change

    source ·
    pub fn decide_change(
    +    remaining_amount: u64,
    +    fee_rate: FeeRate,
    +    drain_script: &Script
    +) -> Excess
    Expand description

    Decide if change can be created

    • remaining_amount: the amount in which the selected coins exceed the target amount
    • fee_rate: required fee rate for the current selection
    • drain_script: script to consider change creation
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/index.html index b26ecedc7a..66f6b380ed 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/index.html @@ -1,11 +1,10 @@ -bdk_wallet::wallet::coin_selection - Rust
    Expand description

    Coin selection

    -

    This module provides the trait CoinSelectionAlgorithm that can be implemented to +bdk_wallet::wallet::coin_selection - Rust

    Module bdk_wallet::wallet::coin_selection

    source ·
    Expand description

    Coin selection

    +

    This module provides the trait CoinSelectionAlgorithm that can be implemented to define custom coin selection algorithms.

    -

    You can specify a custom coin selection algorithm through the coin_selection method on -TxBuilder. DefaultCoinSelectionAlgorithm aliases the coin selection algorithm that will +

    You can specify a custom coin selection algorithm through the coin_selection method on +TxBuilder. DefaultCoinSelectionAlgorithm aliases the coin selection algorithm that will be used if it is not explicitly set.

    -

    Example

    +

    §Example

    #[derive(Debug)]
     struct AlwaysSpendEverything;
     
    @@ -59,7 +58,7 @@ be used if it is not explicitly set.

    // create wallet, sync, ... -let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt") +let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt") .unwrap() .require_network(Network::Testnet) .unwrap(); @@ -71,5 +70,5 @@ be used if it is not explicitly set.

    // inspect, sign, broadcast, ...
    -

    Structs

    Branch and bound coin selection
    Result of a successful coin selection
    Simple and dumb coin selection
    OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next

    Enums

    Errors that can be thrown by the coin_selection module
    Remaining amount after performing coin selection

    Traits

    Trait for generalized coin selection algorithms

    Functions

    Decide if change can be created

    Type Definitions

    Default coin selection algorithm used by TxBuilder if not -overridden
    \ No newline at end of file +

    Structs§

    Enums§

    Traits§

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/sidebar-items.js index 7ab6c39cfa..c2cddb4015 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["Error","Errors that can be thrown by the `coin_selection` module"],["Excess","Remaining amount after performing coin selection"]],"fn":[["decide_change","Decide if change can be created"]],"struct":[["BranchAndBoundCoinSelection","Branch and bound coin selection"],["CoinSelectionResult","Result of a successful coin selection"],["LargestFirstCoinSelection","Simple and dumb coin selection"],["OldestFirstCoinSelection","OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next"]],"trait":[["CoinSelectionAlgorithm","Trait for generalized coin selection algorithms"]],"type":[["DefaultCoinSelectionAlgorithm","Default coin selection algorithm used by `TxBuilder` if not overridden"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["Error","Excess"],"fn":["decide_change"],"struct":["BranchAndBoundCoinSelection","CoinSelectionResult","LargestFirstCoinSelection","OldestFirstCoinSelection"],"trait":["CoinSelectionAlgorithm"],"type":["DefaultCoinSelectionAlgorithm"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html index 932452d3dd..4b84607fa2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.html @@ -1,9 +1,23 @@ -BranchAndBoundCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct BranchAndBoundCoinSelection { /* private fields */ }
    Expand description

    Branch and bound coin selection

    +BranchAndBoundCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct BranchAndBoundCoinSelection { /* private fields */ }
    Expand description

    Branch and bound coin selection

    Code adapted from Bitcoin Core’s implementation and from Mark Erhardt Master’s Thesis: http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf

    -

    Implementations§

    Create new instance with target size for change output

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Perform the coin selection Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Implementations§

    source§

    impl BranchAndBoundCoinSelection

    source

    pub fn new(size_of_change: u64) -> Self

    Create new instance with target size for change output

    +

    Trait Implementations§

    source§

    impl Clone for BranchAndBoundCoinSelection

    source§

    fn clone(&self) -> BranchAndBoundCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for BranchAndBoundCoinSelection

    source§

    fn coin_select( + &self, + required_utxos: Vec<WeightedUtxo>, + optional_utxos: Vec<WeightedUtxo>, + fee_rate: FeeRate, + target_amount: u64, + drain_script: &Script +) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for BranchAndBoundCoinSelection

    source§

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

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

    impl Default for BranchAndBoundCoinSelection

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.CoinSelectionResult.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.CoinSelectionResult.html index 298f7c5b77..7fe1a9db94 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.CoinSelectionResult.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.CoinSelectionResult.html @@ -1,16 +1,22 @@ -CoinSelectionResult in bdk_wallet::wallet::coin_selection - Rust
    pub struct CoinSelectionResult {
    +CoinSelectionResult in bdk_wallet::wallet::coin_selection - Rust

    Struct bdk_wallet::wallet::coin_selection::CoinSelectionResult

    source ·
    pub struct CoinSelectionResult {
         pub selected: Vec<Utxo>,
         pub fee_amount: u64,
         pub excess: Excess,
    -}
    Expand description

    Result of a successful coin selection

    -

    Fields§

    §selected: Vec<Utxo>

    List of outputs selected for use as inputs

    -
    §fee_amount: u64

    Total fee amount for the selected utxos in satoshis

    -
    §excess: Excess

    Remaining amount after deducing fees and outgoing outputs

    -

    Implementations§

    The total value of the inputs selected.

    -

    The total value of the inputs selected from the local wallet.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Result of a successful coin selection

    +

    Fields§

    §selected: Vec<Utxo>

    List of outputs selected for use as inputs

    +
    §fee_amount: u64

    Total fee amount for the selected utxos in satoshis

    +
    §excess: Excess

    Remaining amount after deducing fees and outgoing outputs

    +

    Implementations§

    source§

    impl CoinSelectionResult

    source

    pub fn selected_amount(&self) -> u64

    The total value of the inputs selected.

    +
    source

    pub fn local_selected_amount(&self) -> u64

    The total value of the inputs selected from the local wallet.

    +

    Trait Implementations§

    source§

    impl Debug for CoinSelectionResult

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.LargestFirstCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.LargestFirstCoinSelection.html index 527a0a31b9..1154ff90ae 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.LargestFirstCoinSelection.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.LargestFirstCoinSelection.html @@ -1,9 +1,23 @@ -LargestFirstCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct LargestFirstCoinSelection;
    Expand description

    Simple and dumb coin selection

    +LargestFirstCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct LargestFirstCoinSelection;
    Expand description

    Simple and dumb coin selection

    This coin selection algorithm sorts the available UTXOs by value and then picks them starting from the largest ones until the required amount is reached.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Perform the coin selection Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for LargestFirstCoinSelection

    source§

    fn clone(&self) -> LargestFirstCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for LargestFirstCoinSelection

    source§

    fn coin_select( + &self, + required_utxos: Vec<WeightedUtxo>, + optional_utxos: Vec<WeightedUtxo>, + fee_rate: FeeRate, + target_amount: u64, + drain_script: &Script +) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for LargestFirstCoinSelection

    source§

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

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

    impl Default for LargestFirstCoinSelection

    source§

    fn default() -> LargestFirstCoinSelection

    Returns the “default value” for a type. Read more
    source§

    impl Copy for LargestFirstCoinSelection

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.OldestFirstCoinSelection.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.OldestFirstCoinSelection.html index bf120b4221..3875c0332f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.OldestFirstCoinSelection.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/struct.OldestFirstCoinSelection.html @@ -1,9 +1,23 @@ -OldestFirstCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct OldestFirstCoinSelection;
    Expand description

    OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next

    +OldestFirstCoinSelection in bdk_wallet::wallet::coin_selection - Rust
    pub struct OldestFirstCoinSelection;
    Expand description

    OldestFirstCoinSelection always picks the utxo with the smallest blockheight to add to the selected coins next

    This coin selection algorithm sorts the available UTXOs by blockheight and then picks them starting from the oldest ones until the required amount is reached.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Perform the coin selection Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for OldestFirstCoinSelection

    source§

    fn clone(&self) -> OldestFirstCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl CoinSelectionAlgorithm for OldestFirstCoinSelection

    source§

    fn coin_select( + &self, + required_utxos: Vec<WeightedUtxo>, + optional_utxos: Vec<WeightedUtxo>, + fee_rate: FeeRate, + target_amount: u64, + drain_script: &Script +) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    source§

    impl Debug for OldestFirstCoinSelection

    source§

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

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

    impl Default for OldestFirstCoinSelection

    source§

    fn default() -> OldestFirstCoinSelection

    Returns the “default value” for a type. Read more
    source§

    impl Copy for OldestFirstCoinSelection

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.html index f85365e8a1..09a5155829 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.html @@ -1,11 +1,25 @@ -CoinSelectionAlgorithm in bdk_wallet::wallet::coin_selection - Rust
    pub trait CoinSelectionAlgorithm: Debug {
    -    fn coin_select(
            &self,
            required_utxos: Vec<WeightedUtxo>,
            optional_utxos: Vec<WeightedUtxo>,
            fee_rate: FeeRate,
            target_amount: u64,
            drain_script: &Script
        ) -> Result<CoinSelectionResult, Error>; -}
    Expand description

    Trait for generalized coin selection algorithms

    -

    This trait can be implemented to make the Wallet use a customized coin +CoinSelectionAlgorithm in bdk_wallet::wallet::coin_selection - Rust

    pub trait CoinSelectionAlgorithm: Debug {
    +    // Required method
    +    fn coin_select(
    +        &self,
    +        required_utxos: Vec<WeightedUtxo>,
    +        optional_utxos: Vec<WeightedUtxo>,
    +        fee_rate: FeeRate,
    +        target_amount: u64,
    +        drain_script: &Script
    +    ) -> Result<CoinSelectionResult, Error>;
    +}
    Expand description

    Trait for generalized coin selection algorithms

    +

    This trait can be implemented to make the Wallet use a customized coin selection algorithm when it creates transactions.

    -

    For an example see this module’s documentation.

    -

    Required Methods§

    Perform the coin selection

    +

    For an example see this module’s documentation.

    +

    Required Methods§

    source

    fn coin_select( + &self, + required_utxos: Vec<WeightedUtxo>, + optional_utxos: Vec<WeightedUtxo>, + fee_rate: FeeRate, + target_amount: u64, + drain_script: &Script +) -> Result<CoinSelectionResult, Error>

    Perform the coin selection

    • database: a reference to the wallet’s database that can be used to lookup additional details for a specific UTXO
    • @@ -18,4 +32,4 @@ weight cost accumulated from added outputs and transaction’s header.
    • drain_script: the script to use in case of change
    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html index 9579299bd4..0c04e6ed22 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/coin_selection/type.DefaultCoinSelectionAlgorithm.html @@ -1,4 +1,3 @@ -DefaultCoinSelectionAlgorithm in bdk_wallet::wallet::coin_selection - Rust
    pub type DefaultCoinSelectionAlgorithm = BranchAndBoundCoinSelection;
    Expand description

    Default coin selection algorithm used by TxBuilder if not +DefaultCoinSelectionAlgorithm in bdk_wallet::wallet::coin_selection - Rust

    pub type DefaultCoinSelectionAlgorithm = BranchAndBoundCoinSelection;
    Expand description

    Default coin selection algorithm used by TxBuilder if not overridden

    -
    \ No newline at end of file +

    Aliased Type§

    struct DefaultCoinSelectionAlgorithm { /* private fields */ }
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.ApplyBlockError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.ApplyBlockError.html index 6ccde25842..2929b59b03 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.ApplyBlockError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.ApplyBlockError.html @@ -1,18 +1,24 @@ -ApplyBlockError in bdk_wallet::wallet - Rust
    pub enum ApplyBlockError {
    -    CannotConnect(CannotConnectError),
    +ApplyBlockError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::ApplyBlockError

    source ·
    pub enum ApplyBlockError {
    +    CannotConnect(CannotConnectError),
         UnexpectedConnectedToHash {
             connected_to_hash: BlockHash,
             expected_hash: BlockHash,
         },
    -}
    Expand description

    An error that may occur when applying a block to Wallet.

    -

    Variants§

    §

    CannotConnect(CannotConnectError)

    Occurs when the update chain cannot connect with original chain.

    -
    §

    UnexpectedConnectedToHash

    Fields

    §connected_to_hash: BlockHash

    Block hash of connected_to.

    -
    §expected_hash: BlockHash

    Expected block hash of connected_to, as derived from block.

    -

    Occurs when the connected_to hash does not match the hash derived from block.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    An error that may occur when applying a block to Wallet.

    +

    Variants§

    §

    CannotConnect(CannotConnectError)

    Occurs when the update chain cannot connect with original chain.

    +
    §

    UnexpectedConnectedToHash

    Occurs when the connected_to hash does not match the hash derived from block.

    +

    Fields

    §connected_to_hash: BlockHash

    Block hash of connected_to.

    +
    §expected_hash: BlockHash

    Expected block hash of connected_to, as derived from block.

    +

    Trait Implementations§

    source§

    impl Debug for ApplyBlockError

    source§

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

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

    impl Display for ApplyBlockError

    source§

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

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

    impl Error for ApplyBlockError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.InsertTxError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.InsertTxError.html index da72cbd736..f48e8519c9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.InsertTxError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.InsertTxError.html @@ -1,17 +1,23 @@ -InsertTxError in bdk_wallet::wallet - Rust
    pub enum InsertTxError {
    +InsertTxError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::InsertTxError

    source ·
    pub enum InsertTxError {
         ConfirmationHeightCannotBeGreaterThanTip {
             tip_height: u32,
             tx_height: u32,
         },
    -}
    Expand description

    An error that may occur when inserting a transaction into Wallet.

    -

    Variants§

    §

    ConfirmationHeightCannotBeGreaterThanTip

    Fields

    §tip_height: u32

    The internal chain’s tip height.

    -
    §tx_height: u32

    The introduced transaction’s confirmation height.

    -

    The error variant that occurs when the caller attempts to insert a transaction with a +}

    Expand description

    An error that may occur when inserting a transaction into Wallet.

    +

    Variants§

    §

    ConfirmationHeightCannotBeGreaterThanTip

    The error variant that occurs when the caller attempts to insert a transaction with a confirmation height that is greater than the internal chain tip.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Fields

    §tip_height: u32

    The internal chain’s tip height.

    +
    §tx_height: u32

    The introduced transaction’s confirmation height.

    +

    Trait Implementations§

    source§

    impl Debug for InsertTxError

    source§

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

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

    impl Display for InsertTxError

    source§

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

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

    impl Error for InsertTxError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html index cdef099fc6..d695f2f583 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.LoadError.html @@ -1,22 +1,28 @@ -LoadError in bdk_wallet::wallet - Rust
    pub enum LoadError {
    +LoadError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::LoadError

    source ·
    pub enum LoadError {
         Descriptor(DescriptorError),
    -    Persist(Error),
    +    Persist(Error),
         NotInitialized,
         MissingNetwork,
         MissingGenesis,
         MissingDescriptor,
    -}
    Expand description

    The error type when loading a Wallet from persistence.

    -

    Method load may return this error.

    -

    Variants§

    §

    Descriptor(DescriptorError)

    There was a problem with the passed-in descriptor(s).

    -
    §

    Persist(Error)

    Loading data from the persistence backend failed.

    +}
    Expand description

    The error type when loading a Wallet from persistence.

    +

    Method load may return this error.

    +

    Variants§

    §

    Descriptor(DescriptorError)

    There was a problem with the passed-in descriptor(s).

    +
    §

    Persist(Error)

    Loading data from the persistence backend failed.

    §

    NotInitialized

    Wallet not initialized, persistence backend is empty.

    §

    MissingNetwork

    Data loaded from persistence is missing network type.

    §

    MissingGenesis

    Data loaded from persistence is missing genesis hash.

    §

    MissingDescriptor

    Data loaded from persistence is missing descriptor.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for LoadError

    source§

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

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

    impl Display for LoadError

    source§

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

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

    impl Error for LoadError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewError.html index 22bf638de6..952ffe6b84 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewError.html @@ -1,16 +1,22 @@ -NewError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::NewError

    source ·
    pub enum NewError {
    +NewError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::NewError

    source ·
    pub enum NewError {
         NonEmptyDatabase,
         Descriptor(DescriptorError),
    -    Persist(Error),
    -}
    Expand description

    The error type when constructing a fresh Wallet.

    -

    Methods new and new_with_genesis_hash may return this error.

    -

    Variants§

    §

    NonEmptyDatabase

    Database already has data.

    + Persist(Error), +}
    Expand description

    The error type when constructing a fresh Wallet.

    +

    Methods new and new_with_genesis_hash may return this error.

    +

    Variants§

    §

    NonEmptyDatabase

    Database already has data.

    §

    Descriptor(DescriptorError)

    There was problem with the passed-in descriptor(s).

    -
    §

    Persist(Error)

    We were unable to write the wallet’s data to the persistence backend.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    §

    Persist(Error)

    We were unable to write the wallet’s data to the persistence backend.

    +

    Trait Implementations§

    source§

    impl Debug for NewError

    source§

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

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

    impl Display for NewError

    source§

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

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

    impl Error for NewError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewOrLoadError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewOrLoadError.html index 401feb0740..2bf61334ef 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewOrLoadError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/enum.NewOrLoadError.html @@ -1,7 +1,6 @@ -NewOrLoadError in bdk_wallet::wallet - Rust
    pub enum NewOrLoadError {
    +NewOrLoadError in bdk_wallet::wallet - Rust

    Enum bdk_wallet::wallet::NewOrLoadError

    source ·
    pub enum NewOrLoadError {
         Descriptor(DescriptorError),
    -    Persist(Error),
    +    Persist(Error),
         NotInitialized,
         LoadedGenesisDoesNotMatch {
             expected: BlockHash,
    @@ -15,23 +14,30 @@
             got: Option<ExtendedDescriptor>,
             keychain: KeychainKind,
         },
    -}
    Expand description

    Error type for when we try load a Wallet from persistence and creating it if non-existent.

    -

    Methods new_or_load and new_or_load_with_genesis_hash may return this error.

    -

    Variants§

    §

    Descriptor(DescriptorError)

    There is a problem with the passed-in descriptor.

    -
    §

    Persist(Error)

    Either writing to or loading from the persistence backend failed.

    +}
    Expand description

    Error type for when we try load a Wallet from persistence and creating it if non-existent.

    +

    Methods new_or_load and new_or_load_with_genesis_hash may return this error.

    +

    Variants§

    §

    Descriptor(DescriptorError)

    There is a problem with the passed-in descriptor.

    +
    §

    Persist(Error)

    Either writing to or loading from the persistence backend failed.

    §

    NotInitialized

    Wallet is not initialized, persistence backend is empty.

    -
    §

    LoadedGenesisDoesNotMatch

    Fields

    §expected: BlockHash

    The expected genesis block hash.

    -
    §got: Option<BlockHash>

    The block hash loaded from persistence.

    -

    The loaded genesis hash does not match what was provided.

    -
    §

    LoadedNetworkDoesNotMatch

    Fields

    §expected: Network

    The expected network type.

    -
    §got: Option<Network>

    The network type loaded from persistence.

    -

    The loaded network type does not match what was provided.

    -
    §

    LoadedDescriptorDoesNotMatch

    Fields

    §got: Option<ExtendedDescriptor>

    The descriptor loaded from persistence.

    -
    §keychain: KeychainKind

    The keychain of the descriptor not matching

    -

    The loaded desccriptor does not match what was provided.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    §

    LoadedGenesisDoesNotMatch

    The loaded genesis hash does not match what was provided.

    +

    Fields

    §expected: BlockHash

    The expected genesis block hash.

    +
    §got: Option<BlockHash>

    The block hash loaded from persistence.

    +
    §

    LoadedNetworkDoesNotMatch

    The loaded network type does not match what was provided.

    +

    Fields

    §expected: Network

    The expected network type.

    +
    §got: Option<Network>

    The network type loaded from persistence.

    +
    §

    LoadedDescriptorDoesNotMatch

    The loaded desccriptor does not match what was provided.

    +

    Fields

    §got: Option<ExtendedDescriptor>

    The descriptor loaded from persistence.

    +
    §keychain: KeychainKind

    The keychain of the descriptor not matching

    +

    Trait Implementations§

    source§

    impl Debug for NewOrLoadError

    source§

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

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

    impl Display for NewOrLoadError

    source§

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

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

    impl Error for NewOrLoadError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.BuildFeeBumpError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.BuildFeeBumpError.html index 818b6ccdc1..f9f265c80e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.BuildFeeBumpError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.BuildFeeBumpError.html @@ -1,19 +1,25 @@ -BuildFeeBumpError in bdk_wallet::wallet::error - Rust
    pub enum BuildFeeBumpError {
    +BuildFeeBumpError in bdk_wallet::wallet::error - Rust

    Enum bdk_wallet::wallet::error::BuildFeeBumpError

    source ·
    pub enum BuildFeeBumpError {
         UnknownUtxo(OutPoint),
         TransactionNotFound(Txid),
         TransactionConfirmed(Txid),
         IrreplaceableTransaction(Txid),
         FeeRateUnavailable,
    -}
    Expand description

    Error returned from Wallet::build_fee_bump

    -

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    +}
    Expand description

    Error returned from Wallet::build_fee_bump

    +

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    §

    TransactionNotFound(Txid)

    Thrown when a tx is not found in the internal database

    §

    TransactionConfirmed(Txid)

    Happens when trying to bump a transaction that is already confirmed

    §

    IrreplaceableTransaction(Txid)

    Trying to replace a tx that has a sequence >= 0xFFFFFFFE

    §

    FeeRateUnavailable

    Node doesn’t have data to estimate a fee rate

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for BuildFeeBumpError

    source§

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

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

    impl Display for BuildFeeBumpError

    source§

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

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

    impl Error for BuildFeeBumpError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.CreateTxError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.CreateTxError.html index f4c72a68b6..99ff00b069 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.CreateTxError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.CreateTxError.html @@ -1,7 +1,6 @@ -CreateTxError in bdk_wallet::wallet::error - Rust
    pub enum CreateTxError {
    -
    Show 22 variants Descriptor(DescriptorError), - Persist(Error), +CreateTxError in bdk_wallet::wallet::error - Rust

    Enum bdk_wallet::wallet::error::CreateTxError

    source ·
    pub enum CreateTxError {
    +
    Show 22 variants Descriptor(DescriptorError), + Persist(Error), Policy(PolicyError), SpendingPolicyRequired(KeychainKind), Version0, @@ -35,42 +34,49 @@ UnknownUtxo, MissingNonWitnessUtxo(OutPoint), MiniscriptPsbt(MiniscriptPsbtError), -
    }
    Expand description

    Error returned from TxBuilder::finish

    -

    Variants§

    §

    Descriptor(DescriptorError)

    There was a problem with the descriptors passed in

    -
    §

    Persist(Error)

    We were unable to load wallet data from or write wallet data to the persistence backend

    +
    }
    Expand description

    Error returned from TxBuilder::finish

    +

    Variants§

    §

    Descriptor(DescriptorError)

    There was a problem with the descriptors passed in

    +
    §

    Persist(Error)

    We were unable to load wallet data from or write wallet data to the persistence backend

    §

    Policy(PolicyError)

    There was a problem while extracting and manipulating policies

    -
    §

    SpendingPolicyRequired(KeychainKind)

    Spending policy is not compatible with this KeychainKind

    +
    §

    SpendingPolicyRequired(KeychainKind)

    Spending policy is not compatible with this KeychainKind

    §

    Version0

    Requested invalid transaction version ‘0’

    §

    Version1Csv

    Requested transaction version 1, but at least 2 is needed to use OP_CSV

    -
    §

    LockTime

    Fields

    §requested: LockTime

    Requested LockTime

    -
    §required: LockTime

    Required LockTime

    -

    Requested LockTime is less than is required to spend from this script

    -
    §

    RbfSequence

    Cannot enable RBF with a Sequence >= 0xFFFFFFFE

    -
    §

    RbfSequenceCsv

    Fields

    §rbf: Sequence

    Given RBF Sequence

    -
    §csv: Sequence

    Required OP_CSV Sequence

    -

    Cannot enable RBF with Sequence given a required OP_CSV

    -
    §

    FeeTooLow

    Fields

    §required: u64

    Required fee absolute value (satoshi)

    -

    When bumping a tx the absolute fee requested is lower than replaced tx absolute fee

    -
    §

    FeeRateTooLow

    Fields

    §required: FeeRate

    Required fee rate

    -

    When bumping a tx the fee rate requested is lower than required

    -
    §

    NoUtxosSelected

    manually_selected_only option is selected but no utxo has been passed

    +
    §

    LockTime

    Requested LockTime is less than is required to spend from this script

    +

    Fields

    §requested: LockTime

    Requested LockTime

    +
    §required: LockTime

    Required LockTime

    +
    §

    RbfSequence

    Cannot enable RBF with a Sequence >= 0xFFFFFFFE

    +
    §

    RbfSequenceCsv

    Cannot enable RBF with Sequence given a required OP_CSV

    +

    Fields

    §rbf: Sequence

    Given RBF Sequence

    +
    §csv: Sequence

    Required OP_CSV Sequence

    +
    §

    FeeTooLow

    When bumping a tx the absolute fee requested is lower than replaced tx absolute fee

    +

    Fields

    §required: u64

    Required fee absolute value (satoshi)

    +
    §

    FeeRateTooLow

    When bumping a tx the fee rate requested is lower than required

    +

    Fields

    §required: FeeRate

    Required fee rate

    +
    §

    NoUtxosSelected

    manually_selected_only option is selected but no utxo has been passed

    §

    OutputBelowDustLimit(usize)

    Output created is under the dust limit, 546 satoshis

    §

    ChangePolicyDescriptor

    The change_policy was set but the wallet does not have a change_descriptor

    §

    CoinSelection(Error)

    There was an error with coin selection

    -
    §

    InsufficientFunds

    Fields

    §needed: u64

    Sats needed for some transaction

    -
    §available: u64

    Sats available for spending

    -

    Wallet’s UTXO set is not enough to cover recipient’s requested plus fee

    -
    §

    NoRecipients

    Cannot build a tx without recipients

    +
    §

    InsufficientFunds

    Wallet’s UTXO set is not enough to cover recipient’s requested plus fee

    +

    Fields

    §needed: u64

    Sats needed for some transaction

    +
    §available: u64

    Sats available for spending

    +
    §

    NoRecipients

    Cannot build a tx without recipients

    §

    Psbt(Error)

    Partially signed bitcoin transaction error

    -
    §

    MissingKeyOrigin(String)

    In order to use the TxBuilder::add_global_xpubs option every extended +

    §

    MissingKeyOrigin(String)

    In order to use the TxBuilder::add_global_xpubs option every extended key in the descriptor must either be a master key itself (having depth = 0) or have an explicit origin provided

    §

    UnknownUtxo

    Happens when trying to spend an UTXO that is not in the internal database

    §

    MissingNonWitnessUtxo(OutPoint)

    Missing non_witness_utxo on foreign utxo for given OutPoint

    §

    MiniscriptPsbt(MiniscriptPsbtError)

    Miniscript PSBT error

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for CreateTxError

    source§

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

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

    impl Display for CreateTxError

    source§

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

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

    impl Error for CreateTxError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<Error> for CreateTxError

    source§

    fn from(err: Error) -> Self

    Converts to this type from the input type.
    source§

    impl From<MiniscriptPsbtError> for CreateTxError

    source§

    fn from(err: MiniscriptPsbtError) -> Self

    Converts to this type from the input type.
    source§

    impl From<PolicyError> for CreateTxError

    source§

    fn from(err: PolicyError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.MiniscriptPsbtError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.MiniscriptPsbtError.html index 9e33111d11..e2476ca8d3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.MiniscriptPsbtError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/enum.MiniscriptPsbtError.html @@ -1,15 +1,22 @@ -MiniscriptPsbtError in bdk_wallet::wallet::error - Rust
    pub enum MiniscriptPsbtError {
    +MiniscriptPsbtError in bdk_wallet::wallet::error - Rust

    Enum bdk_wallet::wallet::error::MiniscriptPsbtError

    source ·
    pub enum MiniscriptPsbtError {
         Conversion(ConversionError),
         UtxoUpdate(UtxoUpdateError),
         OutputUpdate(OutputUpdateError),
    -}
    Expand description

    Errors returned by miniscript when updating inconsistent PSBTs

    -

    Variants§

    §

    Conversion(ConversionError)

    Descriptor key conversion error

    +}
    Expand description

    Errors returned by miniscript when updating inconsistent PSBTs

    +

    Variants§

    §

    Conversion(ConversionError)

    Descriptor key conversion error

    §

    UtxoUpdate(UtxoUpdateError)

    Return error type for PsbtExt::update_input_with_descriptor

    §

    OutputUpdate(OutputUpdateError)

    Return error type for PsbtExt::update_output_with_descriptor

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for MiniscriptPsbtError

    source§

    fn clone(&self) -> MiniscriptPsbtError

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MiniscriptPsbtError

    source§

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

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

    impl Display for MiniscriptPsbtError

    source§

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

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

    impl Error for MiniscriptPsbtError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<MiniscriptPsbtError> for CreateTxError

    source§

    fn from(err: MiniscriptPsbtError) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/index.html index 4921cedf62..8bb74e3f21 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/index.html @@ -1,3 +1,2 @@ -bdk_wallet::wallet::error - Rust

    Module bdk_wallet::wallet::error

    source ·
    Expand description

    Errors that can be thrown by the Wallet

    -

    Enums

    Error returned from TxBuilder::finish
    Errors returned by miniscript when updating inconsistent PSBTs
    \ No newline at end of file +bdk_wallet::wallet::error - Rust

    Module bdk_wallet::wallet::error

    source ·
    Expand description

    Errors that can be thrown by the Wallet

    +

    Enums§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/sidebar-items.js index 4f379f6341..70342e180b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/error/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["BuildFeeBumpError","Error returned from `Wallet::build_fee_bump`"],["CreateTxError","Error returned from `TxBuilder::finish`"],["MiniscriptPsbtError","Errors returned by miniscript when updating inconsistent PSBTs"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["BuildFeeBumpError","CreateTxError","MiniscriptPsbtError"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/index.html index 0d0bccdd41..cae7d058a4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/index.html @@ -1,12 +1,11 @@ -bdk_wallet::wallet::export - Rust

    Module bdk_wallet::wallet::export

    source ·
    Expand description

    Wallet export

    +bdk_wallet::wallet::export - Rust

    Module bdk_wallet::wallet::export

    source ·
    Expand description

    Wallet export

    This modules implements the wallet export format used by FullyNoded.

    -

    Examples

    Import from JSON

    -
    let import = r#"{
    -    "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
    -    "blockheight":1782088,
    -    "label":"testnet"
    -}"#;
    +

    §Examples

    §Import from JSON

    +
    let import = r#"{
    +    "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
    +    "blockheight":1782088,
    +    "label":"testnet"
    +}"#;
     
     let import = FullyNodedExport::from_str(import)?;
     let wallet = Wallet::new_no_persist(
    @@ -14,13 +13,13 @@
         import.change_descriptor().as_ref(),
         Network::Testnet,
     )?;
    -

    Export a Wallet

    +

    §Export a Wallet

    let wallet = Wallet::new_no_persist(
    -    "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
    -    Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),
    +    "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
    +    Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),
         Network::Testnet,
     )?;
    -let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
    +let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
     
    -println!("Exported: {}", export.to_string());
    -

    Structs

    Structure that contains the export of a wallet

    Type Definitions

    WalletExportDeprecated
    \ No newline at end of file +println!("Exported: {}", export.to_string());
    +

    Structs§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/sidebar-items.js index 07ee950354..dd0fa93b47 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"struct":[["FullyNodedExport","Structure that contains the export of a wallet"]],"type":[["WalletExport","Alias for [`FullyNodedExport`]"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"struct":["FullyNodedExport"],"type":["WalletExport"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/struct.FullyNodedExport.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/struct.FullyNodedExport.html index 0248d990a8..b465e9e296 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/struct.FullyNodedExport.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/struct.FullyNodedExport.html @@ -1,13 +1,16 @@ -FullyNodedExport in bdk_wallet::wallet::export - Rust
    pub struct FullyNodedExport {
    +FullyNodedExport in bdk_wallet::wallet::export - Rust

    Struct bdk_wallet::wallet::export::FullyNodedExport

    source ·
    pub struct FullyNodedExport {
         pub blockheight: u32,
         pub label: String,
    -    /* private fields */
    -}
    Expand description

    Structure that contains the export of a wallet

    -

    For a usage example see this module’s documentation.

    -

    Fields§

    §blockheight: u32

    Earliest block to rescan when looking for the wallet’s transactions

    -
    §label: String

    Arbitrary label for the wallet

    -

    Implementations§

    Export a wallet

    + /* private fields */ +}
    Expand description

    Structure that contains the export of a wallet

    +

    For a usage example see this module’s documentation.

    +

    Fields§

    §blockheight: u32

    Earliest block to rescan when looking for the wallet’s transactions

    +
    §label: String

    Arbitrary label for the wallet

    +

    Implementations§

    source§

    impl FullyNodedExport

    source

    pub fn export_wallet( + wallet: &Wallet, + label: &str, + include_blockheight: bool +) -> Result<Self, &'static str>

    Export a wallet

    This function returns an error if it determines that the wallet’s descriptor(s) are not supported by Bitcoin Core or don’t follow the standard derivation paths defined by BIP44 and others.

    @@ -15,10 +18,21 @@ and others.

    for the oldest transaction it knows and use that as the earliest block to rescan.

    If the database is empty or include_blockheight is false, the blockheight field returned will be 0.

    -

    Return the external descriptor

    -

    Return the internal descriptor, if present

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Formats the value using the given formatter. Read more
    The associated error which can be returned from parsing.
    Parses a string s to return a value of this type. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    source

    pub fn descriptor(&self) -> String

    Return the external descriptor

    +
    source

    pub fn change_descriptor(&self) -> Option<String>

    Return the internal descriptor, if present

    +

    Trait Implementations§

    source§

    impl Debug for FullyNodedExport

    source§

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

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

    impl<'de> Deserialize<'de> for FullyNodedExport

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for FullyNodedExport

    source§

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

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

    impl FromStr for FullyNodedExport

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    source§

    impl Serialize for FullyNodedExport

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    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> 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.

    -
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/type.WalletExport.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/type.WalletExport.html index 0410ec89e8..b4edf3db6b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/type.WalletExport.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/export/type.WalletExport.html @@ -1,3 +1,8 @@ -WalletExport in bdk_wallet::wallet::export - Rust

    Type Definition bdk_wallet::wallet::export::WalletExport

    source ·
    pub type WalletExport = FullyNodedExport;
    👎Deprecated since 0.18.0: Please use [FullyNodedExport] instead
    Expand description

    Alias for FullyNodedExport

    -
    \ No newline at end of file +WalletExport in bdk_wallet::wallet::export - Rust

    Type Alias bdk_wallet::wallet::export::WalletExport

    source ·
    pub type WalletExport = FullyNodedExport;
    👎Deprecated since 0.18.0: Please use [FullyNodedExport] instead
    Expand description

    Alias for FullyNodedExport

    +

    Aliased Type§

    struct WalletExport {
    +    pub blockheight: u32,
    +    pub label: String,
    +    /* private fields */
    +}

    Fields§

    §blockheight: u32

    Earliest block to rescan when looking for the wallet’s transactions

    +
    §label: String

    Arbitrary label for the wallet

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/fn.wallet_name_from_descriptor.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/fn.wallet_name_from_descriptor.html index 8f3a3341aa..eb219444ee 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/fn.wallet_name_from_descriptor.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/fn.wallet_name_from_descriptor.html @@ -1,4 +1,9 @@ -wallet_name_from_descriptor in bdk_wallet::wallet - Rust
    pub fn wallet_name_from_descriptor<T>(
        descriptor: T,
        change_descriptor: Option<T>,
        network: Network,
        secp: &Secp256k1<All>
    ) -> Result<String, DescriptorError>where
        T: IntoWalletDescriptor,
    Expand description

    Deterministically generate a unique name given the descriptors defining the wallet

    -

    Compatible with wallet_name_from_descriptor

    -
    \ No newline at end of file +wallet_name_from_descriptor in bdk_wallet::wallet - Rust

    Function bdk_wallet::wallet::wallet_name_from_descriptor

    source ·
    pub fn wallet_name_from_descriptor<T>(
    +    descriptor: T,
    +    change_descriptor: Option<T>,
    +    network: Network,
    +    secp: &Secp256k1<All>
    +) -> Result<String, Error>
    Expand description

    Deterministically generate a unique name given the descriptors defining the wallet

    +

    Compatible with wallet_name_from_descriptor

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/index.html index 5a56905443..61f954930c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/index.html @@ -1,7 +1,6 @@ -bdk_wallet::wallet - Rust

    Module bdk_wallet::wallet

    source ·
    Expand description

    Wallet

    -

    This module defines the Wallet.

    -

    Modules

    Coin selection
    Errors that can be thrown by the Wallet
    Wallet export
    Generalized signers
    Transaction builder

    Structs

    A derived address and the index it was found at. -For convenience this automatically derefs to Address
    Balance, differentiated into various categories.
    The changes made to a wallet by applying an Update.
    An update to Wallet.
    A Bitcoin wallet

    Enums

    An error that may occur when applying a block to Wallet.
    An error that may occur when inserting a transaction into Wallet.
    The error type when loading a Wallet from persistence.
    The error type when constructing a fresh Wallet.
    Error type for when we try load a Wallet from persistence and creating it if non-existent.

    Traits

    Trait to check if a value is below the dust limit. +bdk_wallet::wallet - Rust

    Module bdk_wallet::wallet

    source ·
    Expand description

    Wallet

    +

    This module defines the Wallet.

    +

    Modules§

    Structs§

    • A derived address and the index it was found at. +For convenience this automatically derefs to Address
    • Balance, differentiated into various categories.
    • An update to Wallet.
    • A Bitcoin wallet

    Enums§

    Traits§

    • Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to -keep it compatible with network dust rate

    Functions

    Deterministically generate a unique name given the descriptors defining the wallet
    \ No newline at end of file +keep it compatible with network dust rate

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/sidebar-items.js index b5896f9a0d..66838230c8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["ApplyBlockError","An error that may occur when applying a block to [`Wallet`]."],["InsertTxError","An error that may occur when inserting a transaction into [`Wallet`]."],["LoadError","The error type when loading a [`Wallet`] from persistence."],["NewError","The error type when constructing a fresh [`Wallet`]."],["NewOrLoadError","Error type for when we try load a [`Wallet`] from persistence and creating it if non-existent."]],"fn":[["wallet_name_from_descriptor","Deterministically generate a unique name given the descriptors defining the wallet"]],"mod":[["coin_selection","Coin selection"],["error","Errors that can be thrown by the `Wallet`"],["export","Wallet export"],["signer","Generalized signers"],["tx_builder","Transaction builder"]],"struct":[["AddressInfo","A derived address and the index it was found at. For convenience this automatically derefs to `Address`"],["Balance","Balance, differentiated into various categories."],["ChangeSet","The changes made to a wallet by applying an [`Update`]."],["Update","An update to [`Wallet`]."],["Wallet","A Bitcoin wallet"]],"trait":[["IsDust","Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["ApplyBlockError","InsertTxError","LoadError","NewError","NewOrLoadError"],"fn":["wallet_name_from_descriptor"],"mod":["coin_selection","error","export","signer","tx_builder"],"struct":["AddressInfo","Balance","Update","Wallet"],"trait":["IsDust"],"type":["ChangeSet"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerContext.html index c38d4b272e..6b66d80121 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerContext.html @@ -1,20 +1,27 @@ -SignerContext in bdk_wallet::wallet::signer - Rust
    pub enum SignerContext {
    +SignerContext in bdk_wallet::wallet::signer - Rust

    Enum bdk_wallet::wallet::signer::SignerContext

    source ·
    pub enum SignerContext {
         Legacy,
         Segwitv0,
         Tap {
             is_internal_key: bool,
         },
    -}
    Expand description

    Signing context

    +}
    Expand description

    Signing context

    Used by our software signers to determine the type of signatures to make

    -

    Variants§

    §

    Legacy

    Legacy context

    +

    Variants§

    §

    Legacy

    Legacy context

    §

    Segwitv0

    Segwit v0 context (BIP 143)

    -
    §

    Tap

    Fields

    §is_internal_key: bool

    Whether the signer can sign for the internal key or not

    -

    Taproot context (BIP 340)

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    §

    Tap

    Taproot context (BIP 340)

    +

    Fields

    §is_internal_key: bool

    Whether the signer can sign for the internal key or not

    +

    Trait Implementations§

    source§

    impl Clone for SignerContext

    source§

    fn clone(&self) -> SignerContext

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerContext

    source§

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

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

    impl PartialEq for SignerContext

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for SignerContext

    source§

    impl Eq for SignerContext

    source§

    impl StructuralPartialEq for SignerContext

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerError.html index a3aad6ad43..4142282810 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerError.html @@ -1,6 +1,5 @@ -SignerError in bdk_wallet::wallet::signer - Rust
    pub enum SignerError {
    -
    Show 14 variants MissingKey, +SignerError in bdk_wallet::wallet::signer - Rust

    Enum bdk_wallet::wallet::signer::SignerError

    source ·
    pub enum SignerError {
    +
    Show 14 variants MissingKey, InvalidKey, UserCanceled, InputIndexOutOfRange, @@ -14,8 +13,8 @@ SighashError(Error), MiniscriptPsbt(MiniscriptPsbtError), External(String), -
    }
    Expand description

    Signing error

    -

    Variants§

    §

    MissingKey

    The private key is missing for the required public key

    +
    }
    Expand description

    Signing error

    +

    Variants§

    §

    MissingKey

    The private key is missing for the required public key

    §

    InvalidKey

    The private key in use has the right fingerprint but derives differently than expected

    §

    UserCanceled

    The user canceled the operation

    §

    InputIndexOutOfRange

    Input index is out of range

    @@ -27,16 +26,23 @@
    §

    NonStandardSighash

    The psbt contains a non-SIGHASH_ALL sighash in one of its input and the user hasn’t explicitly allowed them

    To enable signing transactions with non-standard sighashes set -SignOptions::allow_all_sighashes to true.

    +SignOptions::allow_all_sighashes to true.

    §

    InvalidSighash

    Invalid SIGHASH for the signing context in use

    §

    SighashError(Error)

    Error while computing the hash to sign

    §

    MiniscriptPsbt(MiniscriptPsbtError)

    Miniscript PSBT error

    -
    §

    External(String)

    To be used only by external libraries implementing InputSigner or -TransactionSigner, so that they can return their own custom errors, without having to -modify SignerError in BDK.

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    §

    External(String)

    To be used only by external libraries implementing InputSigner or +TransactionSigner, so that they can return their own custom errors, without having to +modify SignerError in BDK.

    +

    Trait Implementations§

    source§

    impl Debug for SignerError

    source§

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

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

    impl Display for SignerError

    source§

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

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

    impl Error for SignerError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl From<Error> for SignerError

    source§

    fn from(e: Error) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html index 4329f64057..19cf65b49e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.SignerId.html @@ -1,19 +1,31 @@ -SignerId in bdk_wallet::wallet::signer - Rust
    pub enum SignerId {
    +SignerId in bdk_wallet::wallet::signer - Rust

    Enum bdk_wallet::wallet::signer::SignerId

    source ·
    pub enum SignerId {
         PkHash(Hash),
         Fingerprint(Fingerprint),
         Dummy(u64),
    -}
    Expand description

    Identifier of a signer in the SignersContainers. Used as a key to find the right signer among +}

    Expand description

    Identifier of a signer in the SignersContainers. Used as a key to find the right signer among multiple of them

    -

    Variants§

    §

    PkHash(Hash)

    Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA public key

    +

    Variants§

    §

    PkHash(Hash)

    Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA public key

    §

    Fingerprint(Fingerprint)

    The fingerprint of a BIP32 extended key

    §

    Dummy(u64)

    Dummy identifier

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for SignerId

    source§

    fn clone(&self) -> SignerId

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerId

    source§

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

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

    impl From<Fingerprint> for SignerId

    source§

    fn from(fing: Fingerprint) -> SignerId

    Converts to this type from the input type.
    source§

    impl From<Hash> for SignerId

    source§

    fn from(hash: Hash) -> SignerId

    Converts to this type from the input type.
    source§

    impl Hash for SignerId

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for SignerId

    source§

    fn cmp(&self, other: &SignerId) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for SignerId

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for SignerId

    source§

    fn partial_cmp(&self, other: &SignerId) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Eq for SignerId

    source§

    impl StructuralPartialEq for SignerId

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.TapLeavesOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.TapLeavesOptions.html index 07f9925354..bac6792565 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.TapLeavesOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/enum.TapLeavesOptions.html @@ -1,19 +1,26 @@ -TapLeavesOptions in bdk_wallet::wallet::signer - Rust
    pub enum TapLeavesOptions {
    +TapLeavesOptions in bdk_wallet::wallet::signer - Rust

    Enum bdk_wallet::wallet::signer::TapLeavesOptions

    source ·
    pub enum TapLeavesOptions {
         All,
         Include(Vec<TapLeafHash>),
         Exclude(Vec<TapLeafHash>),
         None,
    -}
    Expand description

    Customize which taproot script-path leaves the signer should sign.

    -

    Variants§

    §

    All

    The signer will sign all the leaves it has a key for.

    +}
    Expand description

    Customize which taproot script-path leaves the signer should sign.

    +

    Variants§

    §

    All

    The signer will sign all the leaves it has a key for.

    §

    Include(Vec<TapLeafHash>)

    The signer won’t sign leaves other than the ones specified. Note that it could still ignore some of the specified leaves, if it doesn’t have the right key to sign them.

    §

    Exclude(Vec<TapLeafHash>)

    The signer won’t sign the specified leaves.

    §

    None

    The signer won’t sign any leaf.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for TapLeavesOptions

    source§

    fn clone(&self) -> TapLeavesOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TapLeavesOptions

    source§

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

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

    impl Default for TapLeavesOptions

    source§

    fn default() -> TapLeavesOptions

    Returns the “default value” for a type. Read more
    source§

    impl PartialEq for TapLeavesOptions

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for TapLeavesOptions

    source§

    impl StructuralPartialEq for TapLeavesOptions

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/index.html index 35df8ea571..aca84680b7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/index.html @@ -1,7 +1,6 @@ -bdk_wallet::wallet::signer - Rust

    Module bdk_wallet::wallet::signer

    source ·
    Expand description

    Generalized signers

    -

    This module provides the ability to add customized signers to a Wallet -through the Wallet::add_signer function.

    +bdk_wallet::wallet::signer - Rust

    Module bdk_wallet::wallet::signer

    source ·
    Expand description

    Structs

    Options for a software signer
    Defines the order in which signers are called
    Wrapper to pair a signer with its context
    Container for multiple signers

    Enums

    Signing context
    Signing error
    Identifier of a signer in the SignersContainers. Used as a key to find the right signer among -multiple of them
    Customize which taproot script-path leaves the signer should sign.

    Traits

    PSBT Input signer
    Common signer methods
    \ No newline at end of file +

    Structs§

    Enums§

    • Signing context
    • Signing error
    • Identifier of a signer in the SignersContainers. Used as a key to find the right signer among +multiple of them
    • Customize which taproot script-path leaves the signer should sign.

    Traits§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/sidebar-items.js index 34ced712cb..92cb22a1a9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["SignerContext","Signing context"],["SignerError","Signing error"],["SignerId","Identifier of a signer in the `SignersContainers`. Used as a key to find the right signer among multiple of them"],["TapLeavesOptions","Customize which taproot script-path leaves the signer should sign."]],"struct":[["SignOptions","Options for a software signer"],["SignerOrdering","Defines the order in which signers are called"],["SignerWrapper","Wrapper to pair a signer with its context"],["SignersContainer","Container for multiple signers"]],"trait":[["InputSigner","PSBT Input signer"],["SignerCommon","Common signer methods"],["TransactionSigner","PSBT signer"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["SignerContext","SignerError","SignerId","TapLeavesOptions"],"struct":["SignOptions","SignerOrdering","SignerWrapper","SignersContainer"],"trait":["InputSigner","SignerCommon","TransactionSigner"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignOptions.html index 3bf8e48031..151e2019f4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignOptions.html @@ -1,5 +1,4 @@ -SignOptions in bdk_wallet::wallet::signer - Rust
    pub struct SignOptions {
    +SignOptions in bdk_wallet::wallet::signer - Rust

    Struct bdk_wallet::wallet::signer::SignOptions

    source ·
    pub struct SignOptions {
         pub trust_witness_utxo: bool,
         pub assume_height: Option<u32>,
         pub allow_all_sighashes: bool,
    @@ -9,9 +8,9 @@
         pub tap_leaves_options: TapLeavesOptions,
         pub sign_with_tap_internal_key: bool,
         pub allow_grinding: bool,
    -}
    Expand description

    Options for a software signer

    +}
    Expand description

    Options for a software signer

    Adjust the behavior of our software signers and the way a transaction is finalized

    -

    Fields§

    §trust_witness_utxo: bool

    Whether the signer should trust the witness_utxo, if the non_witness_utxo hasn’t been +

    Fields§

    §trust_witness_utxo: bool

    Whether the signer should trust the witness_utxo, if the non_witness_utxo hasn’t been provided

    Defaults to false to mitigate the “SegWit bug” which should trick the wallet into paying a fee larger than expected.

    @@ -20,34 +19,42 @@ SegWit transactions in the PSBT they generate: in those cases setting this to

    For more details see: https://blog.trezor.io/details-of-firmware-updates-for-trezor-one-version-1-9-1-and-trezor-model-t-version-2-3-1-1eba8f60f2dd

    -
    §assume_height: Option<u32>

    Whether the wallet should assume a specific height has been reached when trying to finalize +

    §assume_height: Option<u32>

    Whether the wallet should assume a specific height has been reached when trying to finalize a transaction

    The wallet will only “use” a timelock to satisfy the spending policy of an input if the timelock height has already been reached. This option allows overriding the “current height” to let the wallet use timelocks in the future to spend a coin.

    -
    §allow_all_sighashes: bool

    Whether the signer should use the sighash_type set in the PSBT when signing, no matter +

    §allow_all_sighashes: bool

    Whether the signer should use the sighash_type set in the PSBT when signing, no matter what its value is

    Defaults to false which will only allow signing using SIGHASH_ALL.

    -
    §remove_partial_sigs: bool

    Whether to remove partial signatures from the PSBT inputs while finalizing PSBT.

    +
    §remove_partial_sigs: bool

    Whether to remove partial signatures from the PSBT inputs while finalizing PSBT.

    Defaults to true which will remove partial signatures during finalization.

    -
    §remove_taproot_extras: bool

    Whether to remove taproot specific fields from the PSBT on finalization.

    +
    §remove_taproot_extras: bool

    Whether to remove taproot specific fields from the PSBT on finalization.

    For inputs this includes the taproot internal key, merkle root, and individual scripts and signatures. For both inputs and outputs it includes key origin info.

    Defaults to true which will remove all of the above mentioned fields when finalizing.

    See BIP371 for details.

    -
    §try_finalize: bool

    Whether to try finalizing the PSBT after the inputs are signed.

    +
    §try_finalize: bool

    Whether to try finalizing the PSBT after the inputs are signed.

    Defaults to true which will try finalizing PSBT after inputs are signed.

    -
    §tap_leaves_options: TapLeavesOptions

    Specifies which Taproot script-spend leaves we should sign for. This option is +

    §tap_leaves_options: TapLeavesOptions

    Specifies which Taproot script-spend leaves we should sign for. This option is ignored if we’re signing a non-taproot PSBT.

    Defaults to All, i.e., the wallet will sign all the leaves it has a key for.

    -
    §sign_with_tap_internal_key: bool

    Whether we should try to sign a taproot transaction with the taproot internal key +

    §sign_with_tap_internal_key: bool

    Whether we should try to sign a taproot transaction with the taproot internal key or not. This option is ignored if we’re signing a non-taproot PSBT.

    Defaults to true, i.e., we always try to sign with the taproot internal key.

    -
    §allow_grinding: bool

    Whether we should grind ECDSA signature to ensure signing with low r +

    §allow_grinding: bool

    Whether we should grind ECDSA signature to ensure signing with low r or not. Defaults to true, i.e., we always grind ECDSA signature to sign with low r.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for SignOptions

    source§

    fn clone(&self) -> SignOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignOptions

    source§

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

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

    impl Default for SignOptions

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerOrdering.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerOrdering.html index a1567a080b..1c4b5c1928 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerOrdering.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerOrdering.html @@ -1,14 +1,24 @@ -SignerOrdering in bdk_wallet::wallet::signer - Rust
    pub struct SignerOrdering(pub usize);
    Expand description

    Defines the order in which signers are called

    +SignerOrdering in bdk_wallet::wallet::signer - Rust

    Struct bdk_wallet::wallet::signer::SignerOrdering

    source ·
    pub struct SignerOrdering(pub usize);
    Expand description

    Defines the order in which signers are called

    The default value is 100. Signers with an ordering above that will be called later, and they will thus see the partial signatures added to the transaction once they get to sign themselves.

    -

    Tuple Fields§

    §0: usize

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Tuple Fields§

    §0: usize

    Trait Implementations§

    source§

    impl Clone for SignerOrdering

    source§

    fn clone(&self) -> SignerOrdering

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignerOrdering

    source§

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

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

    impl Default for SignerOrdering

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Ord for SignerOrdering

    source§

    fn cmp(&self, other: &SignerOrdering) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for SignerOrdering

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for SignerOrdering

    source§

    fn partial_cmp(&self, other: &SignerOrdering) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Eq for SignerOrdering

    source§

    impl StructuralPartialEq for SignerOrdering

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerWrapper.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerWrapper.html index 6c8fae5687..ab1fc98573 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerWrapper.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignerWrapper.html @@ -1,8 +1,45 @@ -SignerWrapper in bdk_wallet::wallet::signer - Rust
    pub struct SignerWrapper<S: Sized + Debug + Clone> { /* private fields */ }
    Expand description

    Wrapper to pair a signer with its context

    -

    Implementations§

    Create a wrapped signer from a signer and a context

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    The resulting type after dereferencing.
    Dereferences the value.
    Sign a single psbt input
    Sign a single psbt input
    Sign a single psbt input
    Return the SignerId for this signer Read more
    Return the secret key for the signer Read more
    Return the SignerId for this signer Read more
    Return the secret key for the signer Read more
    Return the SignerId for this signer Read more
    Return the secret key for the signer Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +SignerWrapper in bdk_wallet::wallet::signer - Rust

    Struct bdk_wallet::wallet::signer::SignerWrapper

    source ·
    pub struct SignerWrapper<S: Sized + Debug + Clone> { /* private fields */ }
    Expand description

    Wrapper to pair a signer with its context

    +

    Implementations§

    source§

    impl<S: Sized + Debug + Clone> SignerWrapper<S>

    source

    pub fn new(signer: S, ctx: SignerContext) -> Self

    Create a wrapped signer from a signer and a context

    +

    Trait Implementations§

    source§

    impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>

    source§

    fn clone(&self) -> SignerWrapper<S>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>

    source§

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

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

    impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>

    §

    type Target = S

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl InputSigner for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    fn sign_input( + &self, + psbt: &mut Psbt, + input_index: usize, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl InputSigner for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    fn sign_input( + &self, + psbt: &mut Psbt, + input_index: usize, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl InputSigner for SignerWrapper<PrivateKey>

    source§

    fn sign_input( + &self, + psbt: &mut Psbt, + input_index: usize, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign a single psbt input
    source§

    impl SignerCommon for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more
    source§

    impl SignerCommon for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more
    source§

    impl SignerCommon for SignerWrapper<PrivateKey>

    source§

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer Read more
    source§

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer Read more

    Auto Trait Implementations§

    §

    impl<S> Freeze for SignerWrapper<S>
    where + S: Freeze,

    §

    impl<S> RefUnwindSafe for SignerWrapper<S>
    where + S: RefUnwindSafe,

    §

    impl<S> Send for SignerWrapper<S>
    where + S: Send,

    §

    impl<S> Sync for SignerWrapper<S>
    where + S: Sync,

    §

    impl<S> Unpin for SignerWrapper<S>
    where + S: Unpin,

    §

    impl<S> UnwindSafe for SignerWrapper<S>
    where + S: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Sign all the inputs of the psbt
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> TransactionSigner for T
    where + T: InputSigner,

    source§

    fn sign_transaction( + &self, + psbt: &mut Psbt, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign all the inputs of the psbt
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignersContainer.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignersContainer.html index c5899df539..e791ca6293 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignersContainer.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/struct.SignersContainer.html @@ -1,18 +1,38 @@ -SignersContainer in bdk_wallet::wallet::signer - Rust
    pub struct SignersContainer(_);
    Expand description

    Container for multiple signers

    -

    Implementations§

    Create a map of public keys to secret keys

    -

    Build a new signer container from a KeyMap

    -

    Also looks at the corresponding descriptor to determine the SignerContext to attach to +SignersContainer in bdk_wallet::wallet::signer - Rust

    Struct bdk_wallet::wallet::signer::SignersContainer

    source ·
    pub struct SignersContainer(/* private fields */);
    Expand description

    Container for multiple signers

    +

    Implementations§

    source§

    impl SignersContainer

    source

    pub fn as_key_map(&self, secp: &Secp256k1<All>) -> KeyMap

    Create a map of public keys to secret keys

    +
    source

    pub fn build( + keymap: KeyMap, + descriptor: &Descriptor<DescriptorPublicKey>, + secp: &Secp256k1<All> +) -> SignersContainer

    Build a new signer container from a KeyMap

    +

    Also looks at the corresponding descriptor to determine the SignerContext to attach to the signers

    -

    Default constructor

    -

    Adds an external signer to the container for the specified id. Optionally returns the +

    source§

    impl SignersContainer

    source

    pub fn new() -> Self

    Default constructor

    +
    source

    pub fn add_external( + &mut self, + id: SignerId, + ordering: SignerOrdering, + signer: Arc<dyn TransactionSigner> +) -> Option<Arc<dyn TransactionSigner>>

    Adds an external signer to the container for the specified id. Optionally returns the signer that was previously in the container, if any

    -

    Removes a signer from the container and returns it

    -

    Returns the list of identifiers of all the signers in the container

    -

    Returns the list of signers in the container, sorted by lowest to highest ordering

    -

    Finds the signer with lowest ordering for a given id in the container.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    source

    pub fn remove( + &mut self, + id: SignerId, + ordering: SignerOrdering +) -> Option<Arc<dyn TransactionSigner>>

    Removes a signer from the container and returns it

    +
    source

    pub fn ids(&self) -> Vec<&SignerId>

    Returns the list of identifiers of all the signers in the container

    +
    source

    pub fn signers(&self) -> Vec<&Arc<dyn TransactionSigner>>

    Returns the list of signers in the container, sorted by lowest to highest ordering

    +
    source

    pub fn find(&self, id: SignerId) -> Option<&Arc<dyn TransactionSigner>>

    Finds the signer with lowest ordering for a given id in the container.

    +

    Trait Implementations§

    source§

    impl Clone for SignersContainer

    source§

    fn clone(&self) -> SignersContainer

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for SignersContainer

    source§

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

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

    impl Default for SignersContainer

    source§

    fn default() -> SignersContainer

    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.InputSigner.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.InputSigner.html index 34e9198b46..ee89d3214a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.InputSigner.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.InputSigner.html @@ -1,9 +1,21 @@ -InputSigner in bdk_wallet::wallet::signer - Rust
    pub trait InputSigner: SignerCommon {
    -    fn sign_input(
            &self,
            psbt: &mut Psbt,
            input_index: usize,
            sign_options: &SignOptions,
            secp: &Secp256k1<All>
        ) -> Result<(), SignerError>; -}
    Expand description

    PSBT Input signer

    +InputSigner in bdk_wallet::wallet::signer - Rust

    Trait bdk_wallet::wallet::signer::InputSigner

    source ·
    pub trait InputSigner: SignerCommon {
    +    // Required method
    +    fn sign_input(
    +        &self,
    +        psbt: &mut Psbt,
    +        input_index: usize,
    +        sign_options: &SignOptions,
    +        secp: &Secp256k1<All>
    +    ) -> Result<(), SignerError>;
    +}
    Expand description

    PSBT Input signer

    This trait can be implemented to provide custom signers to the wallet. If the signer supports signing individual inputs, this trait should be implemented and BDK will provide automatically an implementation -for TransactionSigner.

    -

    Required Methods§

    Sign a single psbt input

    -

    Implementors§

    \ No newline at end of file +for TransactionSigner.

    +

    Required Methods§

    source

    fn sign_input( + &self, + psbt: &mut Psbt, + input_index: usize, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign a single psbt input

    +

    Implementors§

    source§

    impl InputSigner for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    impl InputSigner for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    impl InputSigner for SignerWrapper<PrivateKey>

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html index 3b060a2e2f..658c46e9a4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.SignerCommon.html @@ -1,14 +1,15 @@ -SignerCommon in bdk_wallet::wallet::signer - Rust
    pub trait SignerCommon: Debug + Send + Sync {
    +SignerCommon in bdk_wallet::wallet::signer - Rust

    Trait bdk_wallet::wallet::signer::SignerCommon

    source ·
    pub trait SignerCommon: Debug + Send + Sync {
    +    // Required method
         fn id(&self, secp: &Secp256k1<All>) -> SignerId;
     
    +    // Provided method
         fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey> { ... }
    -}
    Expand description

    Common signer methods

    -

    Required Methods§

    Return the SignerId for this signer

    -

    The SignerId can be used to lookup a signer in the Wallet’s signers map or to +}

    Expand description

    Common signer methods

    +

    Required Methods§

    source

    fn id(&self, secp: &Secp256k1<All>) -> SignerId

    Return the SignerId for this signer

    +

    The SignerId can be used to lookup a signer in the Wallet’s signers map or to compare two signers.

    -

    Provided Methods§

    Return the secret key for the signer

    +

    Provided Methods§

    source

    fn descriptor_secret_key(&self) -> Option<DescriptorSecretKey>

    Return the secret key for the signer

    This is used internally to reconstruct the original descriptor that may contain secrets. External signers that are meant to keep key isolated should just return None here (which is the default for this method, if not overridden).

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    source§

    impl SignerCommon for SignerWrapper<DescriptorMultiXKey<Xpriv>>

    source§

    impl SignerCommon for SignerWrapper<DescriptorXKey<Xpriv>>

    source§

    impl SignerCommon for SignerWrapper<PrivateKey>

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html index 3989987fe9..190c1bfb39 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/signer/trait.TransactionSigner.html @@ -1,8 +1,18 @@ -TransactionSigner in bdk_wallet::wallet::signer - Rust
    pub trait TransactionSigner: SignerCommon {
    -    fn sign_transaction(
            &self,
            psbt: &mut Psbt,
            sign_options: &SignOptions,
            secp: &Secp256k1<All>
        ) -> Result<(), SignerError>; -}
    Expand description

    PSBT signer

    +TransactionSigner in bdk_wallet::wallet::signer - Rust

    Trait bdk_wallet::wallet::signer::TransactionSigner

    source ·
    pub trait TransactionSigner: SignerCommon {
    +    // Required method
    +    fn sign_transaction(
    +        &self,
    +        psbt: &mut Psbt,
    +        sign_options: &SignOptions,
    +        secp: &Secp256k1<All>
    +    ) -> Result<(), SignerError>;
    +}
    Expand description

    PSBT signer

    This trait can be implemented when the signer can’t sign inputs individually, but signs the whole transaction at once.

    -

    Required Methods§

    Sign all the inputs of the psbt

    -

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn sign_transaction( + &self, + psbt: &mut Psbt, + sign_options: &SignOptions, + secp: &Secp256k1<All> +) -> Result<(), SignerError>

    Sign all the inputs of the psbt

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.AddressInfo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.AddressInfo.html index 355bbf06e7..125ffaa386 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.AddressInfo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.AddressInfo.html @@ -1,21 +1,20 @@ -AddressInfo in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::AddressInfo

    source ·
    pub struct AddressInfo {
    +AddressInfo in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::AddressInfo

    source ·
    pub struct AddressInfo {
         pub index: u32,
         pub address: Address,
         pub keychain: KeychainKind,
    -}
    Expand description

    A derived address and the index it was found at. +}

    Expand description

    A derived address and the index it was found at. For convenience this automatically derefs to Address

    -

    Fields§

    §index: u32

    Child index of this address

    -
    §address: Address

    Address

    -
    §keychain: KeychainKind

    Type of keychain

    -

    Methods from Deref<Target = Address>§

    Returns a reference to the payload of this address.

    -

    Returns a reference to the network of this address.

    -

    Returns a reference to the unchecked address, which is dangerous to use if the address +

    Fields§

    §index: u32

    Child index of this address

    +
    §address: Address

    Address

    +
    §keychain: KeychainKind

    Type of keychain

    +

    Methods from Deref<Target = Address>§

    pub fn payload(&self) -> &Payload

    Returns a reference to the payload of this address.

    +

    pub fn network(&self) -> &Network

    Returns a reference to the network of this address.

    +

    pub fn as_unchecked(&self) -> &Address<NetworkUnchecked>

    Returns a reference to the unchecked address, which is dangerous to use if the address is invalid in the context of NetworkUnchecked.

    -

    Gets the address type of the address.

    -
    Returns
    +

    pub fn address_type(&self) -> Option<AddressType>

    Gets the address type of the address.

    +
    §Returns

    None if unknown, non-standard or related to the future witness version.

    -

    Checks whether or not the address is following Bitcoin standardness rules when +

    pub fn is_spend_standard(&self) -> bool

    Checks whether or not the address is following Bitcoin standardness rules when spending from this address. NOT to be called by senders.

    Spending Standardness @@ -24,8 +23,8 @@ can use this method to check whether or not they can spend from this address.

    SegWit addresses with unassigned witness versions or non-standard program sizes are considered non-standard.

    -

    Generates a script pubkey spending to this address.

    -

    Creates a URI string bitcoin:address optimized to be encoded in QR codes.

    +

    pub fn script_pubkey(&self) -> ScriptBuf

    Generates a script pubkey spending to this address.

    +

    pub fn to_qr_uri(&self) -> String

    Creates a URI string bitcoin:address optimized to be encoded in QR codes.

    If the address is bech32, the address becomes uppercase. If the address is base58, the address is left mixed case.

    Quoting BIP 173 “inside QR codes uppercase SHOULD be used, as those permit the use of @@ -36,20 +35,20 @@ parsed as case-insensitive many wallets got this wrong and don’t parse correct

    If you want to avoid allocation you can use alternate display instead:

    
    -write!(writer, "{:#}", address)?;
    +write!(writer, "{:#}", address)?;
     
    -

    Returns true if the given pubkey is directly related to the address payload.

    +

    Returns true if the given pubkey is directly related to the address payload.

    This is determined by directly comparing the address payload with either the hash of the given public key or the segwit redeem hash generated from the given key. For taproot addresses, the supplied key is assumed to be tweaked

    -

    Returns true if the supplied xonly public key can be used to derive the address.

    +

    Returns true if the supplied xonly public key can be used to derive the address.

    This will only work for Taproot addresses. The Public Key is assumed to have already been tweaked.

    -

    Returns true if the address creates a particular script +

    pub fn matches_script_pubkey(&self, script_pubkey: &Script) -> bool

    Returns true if the address creates a particular script This function doesn’t make any allocations.

    -

    Returns a reference to the checked address. +

    pub fn assume_checked_ref(&self) -> &Address

    Returns a reference to the checked address. This function is dangerous in case the address is not a valid checked address.

    -

    Parsed addresses do not always have one network. The problem is that legacy testnet, +

    pub fn is_valid_for_network(&self, network: Network) -> bool

    Parsed addresses do not always have one network. The problem is that legacy testnet, regtest and signet addresse use the same prefix instead of multiple different ones. When parsing, such addresses are always assumed to be testnet addresses (the same is true for bech32 signet addresses). So if one wants to check if an address belongs to a certain @@ -58,20 +57,28 @@ network a simple comparison is not enough anymore. Instead this function can be

    use bitcoin::{Address, Network};
     use bitcoin::address::NetworkUnchecked;
     
    -let address: Address<NetworkUnchecked> = "2N83imGV3gPwBzKJQvWJ7cRUY2SpUyU6A5e".parse().unwrap();
    +let address: Address<NetworkUnchecked> = "2N83imGV3gPwBzKJQvWJ7cRUY2SpUyU6A5e".parse().unwrap();
     assert!(address.is_valid_for_network(Network::Testnet));
     assert!(address.is_valid_for_network(Network::Regtest));
     assert!(address.is_valid_for_network(Network::Signet));
     
     assert_eq!(address.is_valid_for_network(Network::Bitcoin), false);
     
    -let address: Address<NetworkUnchecked> = "32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf".parse().unwrap();
    +let address: Address<NetworkUnchecked> = "32iVBEu4dxkUQk9dJbZUiBiQdmypcEyJRf".parse().unwrap();
     assert!(address.is_valid_for_network(Network::Bitcoin));
     assert_eq!(address.is_valid_for_network(Network::Testnet), false);
    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    The resulting type after dereferencing.
    Dereferences the value.
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for AddressInfo

    source§

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

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

    impl Deref for AddressInfo

    §

    type Target = Address

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &Self::Target

    Dereferences the value.
    source§

    impl Display for AddressInfo

    source§

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

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

    impl PartialEq for AddressInfo

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Eq for AddressInfo

    source§

    impl StructuralPartialEq for AddressInfo

    Auto Trait Implementations§

    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> 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.

    -
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Balance.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Balance.html index 5c4a1a11b3..a63785bca0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Balance.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Balance.html @@ -1,22 +1,38 @@ -Balance in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Balance

    source ·
    pub struct Balance {
    +Balance in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Balance

    pub struct Balance {
         pub immature: Amount,
         pub trusted_pending: Amount,
         pub untrusted_pending: Amount,
         pub confirmed: Amount,
    -}
    Expand description

    Balance, differentiated into various categories.

    -

    Fields§

    §immature: Amount

    All coinbase outputs not yet matured

    -
    §trusted_pending: Amount

    Unconfirmed UTXOs generated by a wallet tx

    -
    §untrusted_pending: Amount

    Unconfirmed UTXOs received from an external wallet

    -
    §confirmed: Amount

    Confirmed and immediately spendable balance

    -

    Implementations§

    Get sum of trusted_pending and confirmed coins.

    +}
    Expand description

    Balance, differentiated into various categories.

    +

    Fields§

    §immature: Amount

    All coinbase outputs not yet matured

    +
    §trusted_pending: Amount

    Unconfirmed UTXOs generated by a wallet tx

    +
    §untrusted_pending: Amount

    Unconfirmed UTXOs received from an external wallet

    +
    §confirmed: Amount

    Confirmed and immediately spendable balance

    +

    Implementations§

    §

    impl Balance

    pub fn trusted_spendable(&self) -> Amount

    Get sum of trusted_pending and confirmed coins.

    This is the balance you can spend right now that shouldn’t get cancelled via another party double spending it.

    -

    Get the whole balance visible to the wallet.

    -

    Trait Implementations§

    The resulting type after applying the + operator.
    Performs the + operation. Read more
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Formats the value using the given formatter. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    pub fn total(&self) -> Amount

    Get the whole balance visible to the wallet.

    +

    Trait Implementations§

    §

    impl Add for Balance

    §

    type Output = Balance

    The resulting type after applying the + operator.
    §

    fn add(self, other: Balance) -> Balance

    Performs the + operation. Read more
    §

    impl Clone for Balance

    §

    fn clone(&self) -> Balance

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    §

    impl Debug for Balance

    §

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

    Formats the value using the given formatter. Read more
    §

    impl Default for Balance

    §

    fn default() -> Balance

    Returns the “default value” for a type. Read more
    §

    impl<'de> Deserialize<'de> for Balance

    §

    fn deserialize<__D>( + __deserializer: __D +) -> Result<Balance, <__D as Deserializer<'de>>::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    §

    impl Display for Balance

    §

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

    Formats the value using the given formatter. Read more
    §

    impl PartialEq for Balance

    §

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    §

    impl Serialize for Balance

    §

    fn serialize<__S>( + &self, + __serializer: __S +) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    §

    impl Eq for Balance

    §

    impl StructuralPartialEq for Balance

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.ChangeSet.html deleted file mode 100644 index 84abb0d77d..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.ChangeSet.html +++ /dev/null @@ -1,16 +0,0 @@ -ChangeSet in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::ChangeSet

    source ·
    pub struct ChangeSet {
    -    pub chain: ChangeSet,
    -    pub indexed_tx_graph: ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>,
    -    pub network: Option<Network>,
    -}
    Expand description

    The changes made to a wallet by applying an Update.

    -

    Fields§

    §chain: ChangeSet

    Changes to the LocalChain.

    -
    §indexed_tx_graph: ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>

    Changes to IndexedTxGraph.

    -
    §network: Option<Network>

    Stores the network type of the wallet.

    -

    Trait Implementations§

    Append another object of the same type onto self.
    Returns whether the structure is considered empty.
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    -

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

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Update.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Update.html index 358f27d702..43ad13ec34 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Update.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Update.html @@ -1,16 +1,23 @@ -Update in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Update

    source ·
    pub struct Update {
    +Update in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Update

    source ·
    pub struct Update {
         pub last_active_indices: BTreeMap<KeychainKind, u32>,
    -    pub graph: TxGraph<ConfirmationTimeHeightAnchor>,
    -    pub chain: Option<CheckPoint>,
    -}
    Expand description

    Fields§

    §last_active_indices: BTreeMap<KeychainKind, u32>

    Contains the last active derivation indices per keychain (K), which is used to update the -KeychainTxOutIndex.

    -
    §graph: TxGraph<ConfirmationTimeHeightAnchor>

    Update for the wallet’s internal TxGraph.

    -
    §chain: Option<CheckPoint>

    Update for the wallet’s internal LocalChain.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Converts to this type from the input type.
    Converts to this type from the input type.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    + pub graph: TxGraph<ConfirmationTimeHeightAnchor>, + pub chain: Option<CheckPoint>, +}
    Expand description

    An update to Wallet.

    +

    It updates [bdk_chain::keychain::KeychainTxOutIndex], [bdk_chain::TxGraph] and [local_chain::LocalChain] atomically.

    +

    Fields§

    §last_active_indices: BTreeMap<KeychainKind, u32>

    Contains the last active derivation indices per keychain (K), which is used to update the +[KeychainTxOutIndex].

    +
    §graph: TxGraph<ConfirmationTimeHeightAnchor>

    Update for the wallet’s internal [TxGraph].

    +
    §chain: Option<CheckPoint>

    Update for the wallet’s internal LocalChain.

    +

    Trait Implementations§

    source§

    impl Clone for Update

    source§

    fn clone(&self) -> Update

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Update

    source§

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

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

    impl Default for Update

    source§

    fn default() -> Update

    Returns the “default value” for a type. Read more
    source§

    impl From<FullScanResult<KeychainKind>> for Update

    source§

    fn from(value: FullScanResult<KeychainKind>) -> Self

    Converts to this type from the input type.
    source§

    impl From<SyncResult> for Update

    source§

    fn from(value: SyncResult) -> Self

    Converts to this type from the input type.

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Wallet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Wallet.html index 89e25e6cae..9dfd2594f9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Wallet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/struct.Wallet.html @@ -1,28 +1,49 @@ -Wallet in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Wallet

    source ·
    pub struct Wallet { /* private fields */ }
    Expand description

    A Bitcoin wallet

    +Wallet in bdk_wallet::wallet - Rust

    Struct bdk_wallet::wallet::Wallet

    source ·
    pub struct Wallet { /* private fields */ }
    Expand description

    A Bitcoin wallet

    The Wallet acts as a way of coherently interfacing with output descriptors and related transactions. Its main components are:

    1. output descriptors from which it can derive addresses.
    2. -
    3. signers that can contribute signatures to addresses instantiated from the descriptors.
    4. +
    5. signers that can contribute signatures to addresses instantiated from the descriptors.
    -

    Implementations§

    Creates a wallet that does not persist data.

    -

    Creates a wallet that does not persist data, with a custom genesis hash.

    -

    Initialize an empty Wallet.

    -

    Initialize an empty Wallet with a custom genesis hash.

    -

    This is like Wallet::new with an additional genesis_hash parameter. This is useful +

    Implementations§

    source§

    impl Wallet

    source

    pub fn new_no_persist<E: IntoWalletDescriptor>( + descriptor: E, + change_descriptor: Option<E>, + network: Network +) -> Result<Self, DescriptorError>

    Creates a wallet that does not persist data.

    +
    source

    pub fn new_no_persist_with_genesis_hash<E: IntoWalletDescriptor>( + descriptor: E, + change_descriptor: Option<E>, + network: Network, + genesis_hash: BlockHash +) -> Result<Self, DescriptorError>

    Creates a wallet that does not persist data, with a custom genesis hash.

    +
    source§

    impl Wallet

    source

    pub fn new<E: IntoWalletDescriptor>( + descriptor: E, + change_descriptor: Option<E>, + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, + network: Network +) -> Result<Self, NewError>

    Initialize an empty Wallet.

    +
    source

    pub fn new_with_genesis_hash<E: IntoWalletDescriptor>( + descriptor: E, + change_descriptor: Option<E>, + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, + network: Network, + genesis_hash: BlockHash +) -> Result<Self, NewError>

    Initialize an empty Wallet with a custom genesis hash.

    +

    This is like Wallet::new with an additional genesis_hash parameter. This is useful for syncing from alternative networks.

    -

    Load Wallet from the given persistence backend.

    +
    source

    pub fn load( + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static +) -> Result<Self, LoadError>

    Load Wallet from the given persistence backend.

    Note that the descriptor secret keys are not persisted to the db; this means that after -calling this method the Wallet won’t know the secret keys, and as such, won’t be +calling this method the Wallet won’t know the secret keys, and as such, won’t be able to sign transactions.

    If you wish to use the wallet to sign transactions, you need to add the secret keys -manually to the Wallet:

    +manually to the Wallet:

    let secp = Secp256k1::new();
     
    -let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
    -let (internal_descriptor, internal_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)").unwrap();
    +let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
    +let (internal_descriptor, internal_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)").unwrap();
     
     let external_signer_container = SignersContainer::build(external_keymap, &external_descriptor, &secp);
     let internal_signer_container = SignersContainer::build(internal_keymap, &internal_descriptor, &secp);
    @@ -33,114 +54,151 @@ external_signer_container.signers().into_iter()
         .for_each(|s| wallet.add_signer(KeychainKind::External, SignerOrdering::default(), s.clone()));
     internal_signer_container.signers().into_iter()
         .for_each(|s| wallet.add_signer(KeychainKind::Internal, SignerOrdering::default(), s.clone()));
    -

    Alternatively, you can call Wallet::new_or_load, which will add the private keys of the -passed-in descriptors to the Wallet.

    -

    Either loads Wallet from persistence, or initializes it if it does not exist.

    -

    This method will fail if the loaded Wallet has different parameters to those provided.

    -

    Either loads Wallet from persistence, or initializes it if it does not exist, using the +

    Alternatively, you can call Wallet::new_or_load, which will add the private keys of the +passed-in descriptors to the Wallet.

    +
    source

    pub fn new_or_load<E: IntoWalletDescriptor>( + descriptor: E, + change_descriptor: Option<E>, + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, + network: Network +) -> Result<Self, NewOrLoadError>

    Either loads Wallet from persistence, or initializes it if it does not exist.

    +

    This method will fail if the loaded Wallet has different parameters to those provided.

    +
    source

    pub fn new_or_load_with_genesis_hash<E: IntoWalletDescriptor>( + descriptor: E, + change_descriptor: Option<E>, + db: impl PersistBackend<ChangeSet> + Send + Sync + 'static, + network: Network, + genesis_hash: BlockHash +) -> Result<Self, NewOrLoadError>

    Either loads Wallet from persistence, or initializes it if it does not exist, using the provided descriptor, change descriptor, network, and custom genesis hash.

    -

    This method will fail if the loaded Wallet has different parameters to those provided. -This is like Wallet::new_or_load with an additional genesis_hash parameter. This is +

    This method will fail if the loaded Wallet has different parameters to those provided. +This is like Wallet::new_or_load with an additional genesis_hash parameter. This is useful for syncing from alternative networks.

    -

    Get the Bitcoin network the wallet is using.

    -

    Iterator over all keychains in this wallet

    -

    Peek an address of the given keychain at index without revealing it.

    +
    source

    pub fn network(&self) -> Network

    Get the Bitcoin network the wallet is using.

    +
    source

    pub fn keychains( + &self +) -> impl Iterator<Item = (&KeychainKind, &ExtendedDescriptor)>

    Iterator over all keychains in this wallet

    +
    source

    pub fn peek_address(&self, keychain: KeychainKind, index: u32) -> AddressInfo

    Peek an address of the given keychain at index without revealing it.

    For non-wildcard descriptors this returns the same address at every provided index.

    -
    Panics
    +
    §Panics

    This panics when the caller requests for an address of derivation index greater than the BIP32 max index.

    -

    Attempt to reveal the next address of the given keychain.

    +
    source

    pub fn reveal_next_address( + &mut self, + keychain: KeychainKind +) -> Result<AddressInfo>

    Attempt to reveal the next address of the given keychain.

    This will increment the internal derivation index. If the keychain’s descriptor doesn’t contain a wildcard or every address is already revealed up to the maximum derivation index defined in BIP32, then returns the last revealed address.

    -
    Errors
    +
    §Errors

    If writing to persistent storage fails.

    -

    Reveal addresses up to and including the target index and return an iterator +

    source

    pub fn reveal_addresses_to( + &mut self, + keychain: KeychainKind, + index: u32 +) -> Result<impl Iterator<Item = AddressInfo> + '_>

    Reveal addresses up to and including the target index and return an iterator of newly revealed addresses.

    If the target index is unreachable, we make a best effort to reveal up to the last possible index. If all addresses up to the given index are already revealed, then no new addresses are returned.

    -
    Errors
    +
    §Errors

    If writing to persistent storage fails.

    -

    Get the next unused address for the given keychain, i.e. the address with the lowest +

    source

    pub fn next_unused_address( + &mut self, + keychain: KeychainKind +) -> Result<AddressInfo>

    Get the next unused address for the given keychain, i.e. the address with the lowest derivation index that hasn’t been used.

    This will attempt to derive and reveal a new address if no newly revealed addresses -are available. See also reveal_next_address.

    -
    Errors
    +are available. See also reveal_next_address.

    +
    §Errors

    If writing to persistent storage fails.

    -

    Marks an address used of the given keychain at index.

    +
    source

    pub fn mark_used(&mut self, keychain: KeychainKind, index: u32) -> bool

    Marks an address used of the given keychain at index.

    Returns whether the given index was present and then removed from the unused set.

    -

    Undoes the effect of mark_used and returns whether the index was inserted +

    source

    pub fn unmark_used(&mut self, keychain: KeychainKind, index: u32) -> bool

    Undoes the effect of mark_used and returns whether the index was inserted back into the unused set.

    Since this is only a superficial marker, it will have no effect if the address at the given index was actually used, i.e. the wallet has previously indexed a tx output for the derived spk.

    -

    List addresses that are revealed but unused.

    +
    source

    pub fn list_unused_addresses( + &self, + keychain: KeychainKind +) -> impl DoubleEndedIterator<Item = AddressInfo> + '_

    List addresses that are revealed but unused.

    Note if the returned iterator is empty you can reveal more addresses -by using reveal_next_address or -reveal_addresses_to.

    -

    Return whether or not a script is part of this wallet (either internal or external)

    -

    Finds how the wallet derived the script pubkey spk.

    +by using reveal_next_address or +reveal_addresses_to.

    +
    source

    pub fn is_mine(&self, script: &Script) -> bool

    Return whether or not a script is part of this wallet (either internal or external)

    +
    source

    pub fn derivation_of_spk(&self, spk: &Script) -> Option<(KeychainKind, u32)>

    Finds how the wallet derived the script pubkey spk.

    Will only return Some(_) if the wallet has given out the spk.

    -

    Return the list of unspent outputs of this wallet

    -

    List all relevant outputs (includes both spent and unspent, confirmed and unconfirmed).

    -

    To list only unspent outputs (UTXOs), use Wallet::list_unspent instead.

    -

    Get all the checkpoints the wallet is currently storing indexed by height.

    -

    Returns the latest checkpoint.

    -

    Get unbounded script pubkey iterators for both Internal and External keychains.

    +
    source

    pub fn list_unspent(&self) -> impl Iterator<Item = LocalOutput> + '_

    Return the list of unspent outputs of this wallet

    +
    source

    pub fn list_output(&self) -> impl Iterator<Item = LocalOutput> + '_

    List all relevant outputs (includes both spent and unspent, confirmed and unconfirmed).

    +

    To list only unspent outputs (UTXOs), use Wallet::list_unspent instead.

    +
    source

    pub fn checkpoints(&self) -> CheckPointIter

    Get all the checkpoints the wallet is currently storing indexed by height.

    +
    source

    pub fn latest_checkpoint(&self) -> CheckPoint

    Returns the latest checkpoint.

    +
    source

    pub fn all_unbounded_spk_iters( + &self +) -> BTreeMap<KeychainKind, impl Iterator<Item = (u32, ScriptBuf)> + Clone>

    Get unbounded script pubkey iterators for both Internal and External keychains.

    This is intended to be used when doing a full scan of your addresses (e.g. after restoring from seed words). You pass the BTreeMap of iterators to a blockchain data source (e.g. electrum server) which will go through each address until it reaches a stop gap.

    Note carefully that iterators go over all script pubkeys on the keychains (not what script pubkeys the wallet is storing internally).

    -

    Get an unbounded script pubkey iterator for the given keychain.

    -

    See all_unbounded_spk_iters for more documentation

    -

    Returns the utxo owned by this wallet corresponding to outpoint if it exists in the +

    source

    pub fn unbounded_spk_iter( + &self, + keychain: KeychainKind +) -> impl Iterator<Item = (u32, ScriptBuf)> + Clone

    Get an unbounded script pubkey iterator for the given keychain.

    +

    See all_unbounded_spk_iters for more documentation

    +
    source

    pub fn get_utxo(&self, op: OutPoint) -> Option<LocalOutput>

    Returns the utxo owned by this wallet corresponding to outpoint if it exists in the wallet’s database.

    -

    Inserts a [TxOut] at [OutPoint] into the wallet’s transaction graph.

    -

    This is used for providing a previous output’s value so that we can use calculate_fee -or calculate_fee_rate on a given transaction. Outputs inserted with this method will -not be returned in list_unspent or list_output.

    -

    Any inserted TxOuts are not persisted until commit is called.

    +
    source

    pub fn insert_txout(&mut self, outpoint: OutPoint, txout: TxOut)

    Inserts a [TxOut] at [OutPoint] into the wallet’s transaction graph.

    +

    This is used for providing a previous output’s value so that we can use calculate_fee +or calculate_fee_rate on a given transaction. Outputs inserted with this method will +not be returned in list_unspent or list_output.

    +

    Any inserted TxOuts are not persisted until commit is called.

    WARNING: This should only be used to add TxOuts that the wallet does not own. Only insert TxOuts that you trust the values for!

    -

    Calculates the fee of a given transaction. Returns 0 if tx is a coinbase transaction.

    +
    source

    pub fn calculate_fee(&self, tx: &Transaction) -> Result<u64, CalculateFeeError>

    Calculates the fee of a given transaction. Returns 0 if tx is a coinbase transaction.

    To calculate the fee for a [Transaction] with inputs not owned by this wallet you must -manually insert the TxOut(s) into the tx graph using the insert_txout function.

    +manually insert the TxOut(s) into the tx graph using the insert_txout function.

    Note tx does not have to be in the graph for this to work.

    -
    Examples
    -
    let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    -let fee = wallet.calculate_fee(&tx).expect("fee");
    +
    §Examples
    +
    let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    +let fee = wallet.calculate_fee(&tx).expect("fee");
    -
    let tx = &psbt.clone().extract_tx().expect("tx");
    -let fee = wallet.calculate_fee(tx).expect("fee");
    -

    Calculate the [FeeRate] for a given transaction.

    +
    let tx = &psbt.clone().extract_tx().expect("tx");
    +let fee = wallet.calculate_fee(tx).expect("fee");
    +
    source

    pub fn calculate_fee_rate( + &self, + tx: &Transaction +) -> Result<FeeRate, CalculateFeeError>

    Calculate the [FeeRate] for a given transaction.

    To calculate the fee rate for a [Transaction] with inputs not owned by this wallet you must -manually insert the TxOut(s) into the tx graph using the insert_txout function.

    +manually insert the TxOut(s) into the tx graph using the insert_txout function.

    Note tx does not have to be in the graph for this to work.

    -
    Examples
    -
    let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    -let fee_rate = wallet.calculate_fee_rate(&tx).expect("fee rate");
    +
    §Examples
    +
    let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    +let fee_rate = wallet.calculate_fee_rate(&tx).expect("fee rate");
    -
    let tx = &psbt.clone().extract_tx().expect("tx");
    -let fee_rate = wallet.calculate_fee_rate(tx).expect("fee rate");
    -

    Compute the tx’s sent and received [Amount]s.

    +
    let tx = &psbt.clone().extract_tx().expect("tx");
    +let fee_rate = wallet.calculate_fee_rate(tx).expect("fee rate");
    +
    source

    pub fn sent_and_received(&self, tx: &Transaction) -> (Amount, Amount)

    Compute the tx’s sent and received [Amount]s.

    This method returns a tuple (sent, received). Sent is the sum of the txin amounts that spend from previous txouts tracked by this wallet. Received is the summation of this tx’s outputs that send to script pubkeys tracked by this wallet.

    -
    Examples
    -
    let tx = wallet.get_tx(txid).expect("tx exists").tx_node.tx;
    +
    §Examples
    +
    let tx = wallet.get_tx(txid).expect("tx exists").tx_node.tx;
     let (sent, received) = wallet.sent_and_received(&tx);
    -
    let tx = &psbt.clone().extract_tx().expect("tx");
    +
    let tx = &psbt.clone().extract_tx().expect("tx");
     let (sent, received) = wallet.sent_and_received(tx);
    -

    Get a single transaction from the wallet as a CanonicalTx (if the transaction exists).

    +
    source

    pub fn get_tx( + &self, + txid: Txid +) -> Option<CanonicalTx<'_, Arc<Transaction>, ConfirmationTimeHeightAnchor>>

    Get a single transaction from the wallet as a [CanonicalTx] (if the transaction exists).

    CanonicalTx contains the full transaction alongside meta-data such as:

      -
    • Blocks that the transaction is Anchored in. These may or may not be blocks that exist +
    • Blocks that the transaction is Anchored in. These may or may not be blocks that exist in the best chain.
    • -
    • The ChainPosition of the transaction in the best chain - whether the transaction is +
    • The [ChainPosition] of the transaction in the best chain - whether the transaction is confirmed or unconfirmed. If the transaction is confirmed, the anchor which proves the confirmation is provided. If the transaction is unconfirmed, the unix timestamp of when the transaction was last seen in the mempool is provided.
    • @@ -149,15 +207,15 @@ the transaction was last seen in the mempool is provided.
      use bdk_chain::Anchor;
       use bdk_wallet::{chain::ChainPosition, Wallet};
       
      -let canonical_tx = wallet.get_tx(my_txid).expect("panic if tx does not exist");
      +let canonical_tx = wallet.get_tx(my_txid).expect("panic if tx does not exist");
       
       // get reference to full transaction
      -println!("my tx: {:#?}", canonical_tx.tx_node.tx);
      +println!("my tx: {:#?}", canonical_tx.tx_node.tx);
       
       // list all transaction anchors
       for anchor in canonical_tx.tx_node.anchors {
           println!(
      -        "tx is anchored by block of hash {}",
      +        "tx is anchored by block of hash {}",
               anchor.anchor_block().hash
           );
       }
      @@ -165,45 +223,61 @@ the transaction was last seen in the mempool is provided.
       // get confirmation status of transaction
       match canonical_tx.chain_position {
           ChainPosition::Confirmed(anchor) => println!(
      -        "tx is confirmed at height {}, we know this since {}:{} is in the best chain",
      +        "tx is confirmed at height {}, we know this since {}:{} is in the best chain",
               anchor.confirmation_height, anchor.anchor_block.height, anchor.anchor_block.hash,
           ),
           ChainPosition::Unconfirmed(last_seen) => println!(
      -        "tx is last seen at {}, it is unconfirmed as it is not anchored in the best chain",
      +        "tx is last seen at {}, it is unconfirmed as it is not anchored in the best chain",
               last_seen,
           ),
       }
      -

    Add a new checkpoint to the wallet’s internal view of the chain. -This stages but does not commit the change.

    +
    source

    pub fn insert_checkpoint( + &mut self, + block_id: BlockId +) -> Result<bool, AlterCheckPointError>

    Add a new checkpoint to the wallet’s internal view of the chain. +This stages but does not commit the change.

    Returns whether anything changed with the insertion (e.g. false if checkpoint was already there).

    -

    Add a transaction to the wallet’s internal view of the chain. This stages but does not -commit the change.

    +
    source

    pub fn insert_tx( + &mut self, + tx: Transaction, + position: ConfirmationTime +) -> Result<bool, InsertTxError>

    Add a transaction to the wallet’s internal view of the chain. This stages but does not +commit the change.

    Returns whether anything changed with the transaction insertion (e.g. false if the transaction was already inserted at the same position).

    -

    A tx can be rejected if position has a height greater than the latest_checkpoint. -Therefore you should use insert_checkpoint to insert new checkpoints before manually +

    A tx can be rejected if position has a height greater than the latest_checkpoint. +Therefore you should use insert_checkpoint to insert new checkpoints before manually inserting new transactions.

    WARNING: If position is confirmed, we anchor the tx to a the lowest checkpoint that is >= the position’s height. The caller is responsible for ensuring the tx exists in our local view of the best chain’s history.

    -

    Iterate over the transactions in the wallet.

    -

    Return the balance, separated into available, trusted-pending, untrusted-pending and immature +

    source

    pub fn transactions( + &self +) -> impl Iterator<Item = CanonicalTx<'_, Arc<Transaction>, ConfirmationTimeHeightAnchor>> + '_

    Iterate over the transactions in the wallet.

    +
    source

    pub fn get_balance(&self) -> Balance

    Return the balance, separated into available, trusted-pending, untrusted-pending and immature values.

    -

    Add an external signer

    -

    See the signer module for an example.

    -

    Get the signers

    -
    Example
    -
    let wallet = Wallet::new_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?;
    +
    source

    pub fn add_signer( + &mut self, + keychain: KeychainKind, + ordering: SignerOrdering, + signer: Arc<dyn TransactionSigner> +)

    Add an external signer

    +

    See the signer module for an example.

    +
    source

    pub fn get_signers(&self, keychain: KeychainKind) -> Arc<SignersContainer>

    Get the signers

    +
    §Example
    +
    let wallet = Wallet::new_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?;
     for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
    -    // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
    -    println!("secret_key: {}", secret_key);
    +    // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
    +    println!("secret_key: {}", secret_key);
     }
     
     Ok::<(), Box<dyn std::error::Error>>(())
    -

    Start building a transaction.

    -

    This returns a blank TxBuilder from which you can specify the parameters for the transaction.

    -
    Example
    +
    source

    pub fn build_tx( + &mut self +) -> TxBuilder<'_, DefaultCoinSelectionAlgorithm, CreateTx>

    Start building a transaction.

    +

    This returns a blank TxBuilder from which you can specify the parameters for the transaction.

    +
    §Example
    let psbt = {
        let mut builder =  wallet.build_tx();
        builder
    @@ -212,11 +286,14 @@ values.

    }; // sign and broadcast ...
    -

    Bump the fee of a transaction previously created with this wallet.

    +
    source

    pub fn build_fee_bump( + &mut self, + txid: Txid +) -> Result<TxBuilder<'_, DefaultCoinSelectionAlgorithm, BumpFee>, BuildFeeBumpError>

    Bump the fee of a transaction previously created with this wallet.

    Returns an error if the transaction is already confirmed or doesn’t explicitly signal -replace by fee (RBF). If the transaction can be fee bumped then it returns a TxBuilder +replace by fee (RBF). If the transaction can be fee bumped then it returns a TxBuilder pre-populated with the inputs and outputs of the original transaction.

    -
    Example
    +
    §Example
    let mut psbt = {
         let mut builder = wallet.build_tx();
         builder
    @@ -225,90 +302,134 @@ pre-populated with the inputs and outputs of the original transaction.

    builder.finish()? }; let _ = wallet.sign(&mut psbt, SignOptions::default())?; -let tx = psbt.clone().extract_tx().expect("tx"); -// broadcast tx but it's taking too long to confirm so we want to bump the fee +let tx = psbt.clone().extract_tx().expect("tx"); +// broadcast tx but it's taking too long to confirm so we want to bump the fee let mut psbt = { let mut builder = wallet.build_fee_bump(tx.txid())?; builder - .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate")); + .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate")); builder.finish()? }; let _ = wallet.sign(&mut psbt, SignOptions::default())?; let fee_bumped_tx = psbt.extract_tx(); // broadcast fee_bumped_tx to replace original
    -

    Sign a transaction with all the wallet’s signers, in the order specified by every signer’s -SignerOrdering. This function returns the Result type with an encapsulated bool that has the value true if the PSBT was finalized, or false otherwise.

    -

    The SignOptions can be used to tweak the behavior of the software signers, and the way +

    source

    pub fn sign( + &self, + psbt: &mut Psbt, + sign_options: SignOptions +) -> Result<bool, SignerError>

    Sign a transaction with all the wallet’s signers, in the order specified by every signer’s +SignerOrdering. This function returns the Result type with an encapsulated bool that has the value true if the PSBT was finalized, or false otherwise.

    +

    The SignOptions can be used to tweak the behavior of the software signers, and the way the transaction is finalized at the end. Note that it can’t be guaranteed that every signers will follow the options, but the “software signers” (WIF keys and xprv) defined in this library will.

    -
    Example
    +
    §Example
    let mut psbt = {
         let mut builder = wallet.build_tx();
         builder.add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000));
         builder.finish()?
     };
     let finalized = wallet.sign(&mut psbt, SignOptions::default())?;
    -assert!(finalized, "we should have signed all the inputs");
    -

    Return the spending policies for the wallet’s descriptor

    -

    Return the “public” version of the wallet’s descriptor, meaning a new descriptor that has +assert!(finalized, "we should have signed all the inputs");

    +
    source

    pub fn policies( + &self, + keychain: KeychainKind +) -> Result<Option<Policy>, DescriptorError>

    Return the spending policies for the wallet’s descriptor

    +
    source

    pub fn public_descriptor( + &self, + keychain: KeychainKind +) -> Option<&ExtendedDescriptor>

    Return the “public” version of the wallet’s descriptor, meaning a new descriptor that has the same structure but with every secret key removed

    This can be used to build a watch-only version of a wallet

    -

    Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass +

    source

    pub fn finalize_psbt( + &self, + psbt: &mut Psbt, + sign_options: SignOptions +) -> Result<bool, SignerError>

    Finalize a PSBT, i.e., for each input determine if sufficient data is available to pass validation and construct the respective scriptSig or scriptWitness. Please refer to BIP174 for further information.

    Returns true if the PSBT could be finalized, and false otherwise.

    -

    The SignOptions can be used to tweak the behavior of the finalizer.

    -

    Return the secp256k1 context used for all signing operations

    -

    Returns the descriptor used to create addresses for a particular keychain.

    -

    The derivation index of this wallet. It will return None if it has not derived any addresses. +

    The SignOptions can be used to tweak the behavior of the finalizer.

    +
    source

    pub fn secp_ctx(&self) -> &Secp256k1<All>

    Return the secp256k1 context used for all signing operations

    +
    source

    pub fn get_descriptor_for_keychain( + &self, + keychain: KeychainKind +) -> &ExtendedDescriptor

    Returns the descriptor used to create addresses for a particular keychain.

    +
    source

    pub fn derivation_index(&self, keychain: KeychainKind) -> Option<u32>

    The derivation index of this wallet. It will return None if it has not derived any addresses. Otherwise, it will return the index of the highest address it has derived.

    -

    The index of the next address that you would get if you were to ask the wallet for a new address

    -

    Informs the wallet that you no longer intend to broadcast a tx that was built from it.

    +
    source

    pub fn next_derivation_index(&self, keychain: KeychainKind) -> u32

    The index of the next address that you would get if you were to ask the wallet for a new address

    +
    source

    pub fn cancel_tx(&mut self, tx: &Transaction)

    Informs the wallet that you no longer intend to broadcast a tx that was built from it.

    This frees up the change address used when creating the tx for use in future transactions.

    -

    get the corresponding PSBT Input for a LocalUtxo

    -

    Return the checksum of the public descriptor associated to keychain

    -

    Internally calls Self::get_descriptor_for_keychain to fetch the right descriptor

    -

    Applies an update to the wallet and stages the changes (but does not commit them).

    +
    source

    pub fn get_psbt_input( + &self, + utxo: LocalOutput, + sighash_type: Option<PsbtSighashType>, + only_witness_utxo: bool +) -> Result<Input, CreateTxError>

    get the corresponding PSBT Input for a LocalUtxo

    +
    source

    pub fn descriptor_checksum(&self, keychain: KeychainKind) -> String

    Return the checksum of the public descriptor associated to keychain

    +

    Internally calls Self::get_descriptor_for_keychain to fetch the right descriptor

    +
    source

    pub fn apply_update( + &mut self, + update: impl Into<Update> +) -> Result<(), CannotConnectError>

    Applies an update to the wallet and stages the changes (but does not commit them).

    Usually you create an update by interacting with some blockchain data source and inserting transactions related to your wallet into it.

    -

    Commits all currently staged changed to the persistence backend returning and error when +

    source

    pub fn commit(&mut self) -> Result<bool>

    Commits all currently staged changed to the persistence backend returning and error when this fails.

    This returns whether the update resulted in any changes.

    -

    Returns the changes that will be committed with the next call to commit.

    -

    Get a reference to the inner TxGraph.

    -

    Get a reference to the inner KeychainTxOutIndex.

    -

    Get a reference to the inner LocalChain.

    -

    Introduces a block of height to the wallet, and tries to connect it to the +

    source

    pub fn staged(&self) -> &ChangeSet

    Returns the changes that will be committed with the next call to commit.

    +
    source

    pub fn tx_graph(&self) -> &TxGraph<ConfirmationTimeHeightAnchor>

    Get a reference to the inner [TxGraph].

    +
    source

    pub fn spk_index(&self) -> &KeychainTxOutIndex<KeychainKind>

    Get a reference to the inner [KeychainTxOutIndex].

    +
    source

    pub fn local_chain(&self) -> &LocalChain

    Get a reference to the inner [LocalChain].

    +
    source

    pub fn apply_block( + &mut self, + block: &Block, + height: u32 +) -> Result<(), CannotConnectError>

    Introduces a block of height to the wallet, and tries to connect it to the prev_blockhash of the block’s header.

    -

    This is a convenience method that is equivalent to calling apply_block_connected_to +

    This is a convenience method that is equivalent to calling apply_block_connected_to with prev_blockhash and height-1 as the connected_to parameter.

    -

    Applies relevant transactions from block of height to the wallet, and connects the +

    source

    pub fn apply_block_connected_to( + &mut self, + block: &Block, + height: u32, + connected_to: BlockId +) -> Result<(), ApplyHeaderError>

    Applies relevant transactions from block of height to the wallet, and connects the block to the internal chain.

    The connected_to parameter informs the wallet how this block connects to the internal -LocalChain. Relevant transactions are filtered from the block and inserted into the -internal TxGraph.

    -

    Apply relevant unconfirmed transactions to the wallet.

    +[LocalChain]. Relevant transactions are filtered from the block and inserted into the +internal [TxGraph].

    +
    source

    pub fn apply_unconfirmed_txs<'t>( + &mut self, + unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)> +)

    Apply relevant unconfirmed transactions to the wallet.

    Transactions that are not relevant are filtered out.

    This method takes in an iterator of (tx, last_seen) where last_seen is the timestamp of when the transaction was last seen in the mempool. This is used for conflict resolution when there is conflicting unconfirmed transactions. The transaction with the later last_seen is prioritized.

    -

    Methods to construct sync/full-scan requests for spk-based chain sources.

    -

    Create a partial SyncRequest for this wallet for all revealed spks.

    +
    source§

    impl Wallet

    Methods to construct sync/full-scan requests for spk-based chain sources.

    +
    source

    pub fn start_sync_with_revealed_spks(&self) -> SyncRequest

    Create a partial [SyncRequest] for this wallet for all revealed spks.

    This is the first step when performing a spk-based wallet partial sync, the returned -SyncRequest collects all revealed script pubkeys from the wallet keychain needed to +[SyncRequest] collects all revealed script pubkeys from the wallet keychain needed to start a blockchain sync with a spk based blockchain client.

    -

    Create a `FullScanRequest for this wallet.

    +
    source

    pub fn start_full_scan(&self) -> FullScanRequest<KeychainKind>

    Create a [`FullScanRequest] for this wallet.

    This is the first step when performing a spk-based wallet full scan, the returned -`FullScanRequest collects iterators for the wallet’s keychain script pub keys needed to +[`FullScanRequest] collects iterators for the wallet’s keychain script pub keys needed to start a blockchain full scan with a spk based blockchain client.

    This operation is generally only used when importing or restoring a previously used wallet in which the list of used scripts is not known.

    -

    Trait Implementations§

    Converts this type into a shared reference of the (usually inferred) input type.
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl AsRef<TxGraph<ConfirmationTimeHeightAnchor>> for Wallet

    source§

    fn as_ref(&self) -> &TxGraph<ConfirmationTimeHeightAnchor>

    Converts this type into a shared reference of the (usually inferred) input type.
    source§

    impl Debug for Wallet

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/trait.IsDust.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/trait.IsDust.html index fa47d50e51..01c661deb1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/trait.IsDust.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/trait.IsDust.html @@ -1,8 +1,8 @@ -IsDust in bdk_wallet::wallet - Rust

    Trait bdk_wallet::wallet::IsDust

    source ·
    pub trait IsDust {
    +IsDust in bdk_wallet::wallet - Rust

    Trait bdk_wallet::wallet::IsDust

    source ·
    pub trait IsDust {
    +    // Required method
         fn is_dust(&self, script: &Script) -> bool;
    -}
    Expand description

    Trait to check if a value is below the dust limit. +}

    Expand description

    Trait to check if a value is below the dust limit. We are performing dust value calculation for a given script public key using rust-bitcoin to keep it compatible with network dust rate

    -

    Required Methods§

    Check whether or not a value is below dust limit

    -

    Implementations on Foreign Types§

    Implementors§

    \ No newline at end of file +

    Required Methods§

    source

    fn is_dust(&self, script: &Script) -> bool

    Check whether or not a value is below dust limit

    +

    Implementations on Foreign Types§

    source§

    impl IsDust for u64

    source§

    fn is_dust(&self, script: &Script) -> bool

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddForeignUtxoError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddForeignUtxoError.html index 9c1079e5e9..c225e64c4c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddForeignUtxoError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddForeignUtxoError.html @@ -1,20 +1,26 @@ -AddForeignUtxoError in bdk_wallet::wallet::tx_builder - Rust
    pub enum AddForeignUtxoError {
    +AddForeignUtxoError in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::AddForeignUtxoError

    source ·
    pub enum AddForeignUtxoError {
         InvalidTxid {
             input_txid: Txid,
             foreign_utxo: OutPoint,
         },
         InvalidOutpoint(OutPoint),
         MissingUtxo,
    -}
    Expand description

    Error returned from TxBuilder::add_foreign_utxo.

    -

    Variants§

    §

    InvalidTxid

    Fields

    §input_txid: Txid

    PSBT input txid

    -
    §foreign_utxo: OutPoint

    Foreign UTXO outpoint

    -

    Foreign utxo outpoint txid does not match PSBT input txid

    -
    §

    InvalidOutpoint(OutPoint)

    Requested outpoint doesn’t exist in the tx (vout greater than available outputs)

    +}
    Expand description

    Error returned from TxBuilder::add_foreign_utxo.

    +

    Variants§

    §

    InvalidTxid

    Foreign utxo outpoint txid does not match PSBT input txid

    +

    Fields

    §input_txid: Txid

    PSBT input txid

    +
    §foreign_utxo: OutPoint

    Foreign UTXO outpoint

    +
    §

    InvalidOutpoint(OutPoint)

    Requested outpoint doesn’t exist in the tx (vout greater than available outputs)

    §

    MissingUtxo

    Foreign utxo missing witness_utxo or non_witness_utxo

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for AddForeignUtxoError

    source§

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

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

    impl Display for AddForeignUtxoError

    source§

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

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

    impl Error for AddForeignUtxoError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddUtxoError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddUtxoError.html index 71b8782ffb..1d7e6f1cec 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddUtxoError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AddUtxoError.html @@ -1,11 +1,17 @@ -AddUtxoError in bdk_wallet::wallet::tx_builder - Rust
    pub enum AddUtxoError {
    +AddUtxoError in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::AddUtxoError

    source ·
    pub enum AddUtxoError {
         UnknownUtxo(OutPoint),
    -}
    Expand description

    Error returned from TxBuilder::add_utxo and TxBuilder::add_utxos

    -

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Error returned from TxBuilder::add_utxo and TxBuilder::add_utxos

    +

    Variants§

    §

    UnknownUtxo(OutPoint)

    Happens when trying to spend an UTXO that is not in the internal database

    +

    Trait Implementations§

    source§

    impl Debug for AddUtxoError

    source§

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

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

    impl Display for AddUtxoError

    source§

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

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

    impl Error for AddUtxoError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AllowShrinkingError.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AllowShrinkingError.html index c370d58ef9..a6f3b1bfe9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AllowShrinkingError.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.AllowShrinkingError.html @@ -1,11 +1,17 @@ -AllowShrinkingError in bdk_wallet::wallet::tx_builder - Rust
    pub enum AllowShrinkingError {
    +AllowShrinkingError in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::AllowShrinkingError

    source ·
    pub enum AllowShrinkingError {
         MissingScriptPubKey(ScriptBuf),
    -}
    Expand description

    Error returned from TxBuilder::allow_shrinking

    -

    Variants§

    §

    MissingScriptPubKey(ScriptBuf)

    Script/PubKey was not in the original transaction

    -

    Trait Implementations§

    Formats the value using the given formatter. Read more
    Formats the value using the given formatter. Read more
    The lower-level source of this error, if any. Read more
    👎Deprecated since 1.42.0: use the Display impl or to_string()
    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Error returned from TxBuilder::allow_shrinking

    +

    Variants§

    §

    MissingScriptPubKey(ScriptBuf)

    Script/PubKey was not in the original transaction

    +

    Trait Implementations§

    source§

    impl Debug for AllowShrinkingError

    source§

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

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

    impl Display for AllowShrinkingError

    source§

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

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

    impl Error for AllowShrinkingError

    1.30.0 · source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    1.0.0 · source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    1.0.0 · source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    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> 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.

    -
    🔬This is a nightly-only experimental API. (provide_any)
    Data providers should implement this method to provide all values they are able to -provide by using demand. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.ChangeSpendPolicy.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.ChangeSpendPolicy.html index 3ab92f4649..dd2b8a65cf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.ChangeSpendPolicy.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.ChangeSpendPolicy.html @@ -1,18 +1,30 @@ -ChangeSpendPolicy in bdk_wallet::wallet::tx_builder - Rust
    pub enum ChangeSpendPolicy {
    +ChangeSpendPolicy in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::ChangeSpendPolicy

    source ·
    pub enum ChangeSpendPolicy {
         ChangeAllowed,
         OnlyChange,
         ChangeForbidden,
    -}
    Expand description

    Policy regarding the use of change outputs when creating a transaction

    -

    Variants§

    §

    ChangeAllowed

    Use both change and non-change outputs (default)

    -
    §

    OnlyChange

    Only use change outputs (see TxBuilder::only_spend_change)

    -
    §

    ChangeForbidden

    Only use non-change outputs (see TxBuilder::do_not_spend_change)

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    Policy regarding the use of change outputs when creating a transaction

    +

    Variants§

    §

    ChangeAllowed

    Use both change and non-change outputs (default)

    +
    §

    OnlyChange

    Only use change outputs (see TxBuilder::only_spend_change)

    +
    §

    ChangeForbidden

    Only use non-change outputs (see TxBuilder::do_not_spend_change)

    +

    Trait Implementations§

    source§

    impl Clone for ChangeSpendPolicy

    source§

    fn clone(&self) -> ChangeSpendPolicy

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ChangeSpendPolicy

    source§

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

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

    impl Default for ChangeSpendPolicy

    source§

    fn default() -> ChangeSpendPolicy

    Returns the “default value” for a type. Read more
    source§

    impl Hash for ChangeSpendPolicy

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for ChangeSpendPolicy

    source§

    fn cmp(&self, other: &ChangeSpendPolicy) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for ChangeSpendPolicy

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for ChangeSpendPolicy

    source§

    fn partial_cmp(&self, other: &ChangeSpendPolicy) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Copy for ChangeSpendPolicy

    source§

    impl Eq for ChangeSpendPolicy

    source§

    impl StructuralPartialEq for ChangeSpendPolicy

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.TxOrdering.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.TxOrdering.html index 8e86c588f4..b52ab8177d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.TxOrdering.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/enum.TxOrdering.html @@ -1,19 +1,31 @@ -TxOrdering in bdk_wallet::wallet::tx_builder - Rust
    pub enum TxOrdering {
    +TxOrdering in bdk_wallet::wallet::tx_builder - Rust

    Enum bdk_wallet::wallet::tx_builder::TxOrdering

    source ·
    pub enum TxOrdering {
         Shuffle,
         Untouched,
         Bip69Lexicographic,
    -}
    Expand description

    Ordering of the transaction’s inputs and outputs

    -

    Variants§

    §

    Shuffle

    Randomized (default)

    +}
    Expand description

    Ordering of the transaction’s inputs and outputs

    +

    Variants§

    §

    Shuffle

    Randomized (default)

    §

    Untouched

    Unchanged

    §

    Bip69Lexicographic

    BIP69 / Lexicographic

    -

    Implementations§

    Sort transaction inputs and outputs by TxOrdering variant

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Feeds this value into the given Hasher. Read more
    Feeds a slice of this type into the given Hasher. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Implementations§

    source§

    impl TxOrdering

    source

    pub fn sort_tx(&self, tx: &mut Transaction)

    Sort transaction inputs and outputs by TxOrdering variant

    +

    Trait Implementations§

    source§

    impl Clone for TxOrdering

    source§

    fn clone(&self) -> TxOrdering

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TxOrdering

    source§

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

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

    impl Default for TxOrdering

    source§

    fn default() -> TxOrdering

    Returns the “default value” for a type. Read more
    source§

    impl Hash for TxOrdering

    source§

    fn hash<__H: Hasher>(&self, state: &mut __H)

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where + H: Hasher, + Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    source§

    impl Ord for TxOrdering

    source§

    fn cmp(&self, other: &TxOrdering) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for TxOrdering

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for TxOrdering

    source§

    fn partial_cmp(&self, other: &TxOrdering) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Copy for TxOrdering

    source§

    impl Eq for TxOrdering

    source§

    impl StructuralPartialEq for TxOrdering

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/index.html index 590df4f3f3..fd542f8b68 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/index.html @@ -1,6 +1,5 @@ -bdk_wallet::wallet::tx_builder - Rust

    Module bdk_wallet::wallet::tx_builder

    source ·
    Expand description

    Transaction builder

    -

    Example

    +bdk_wallet::wallet::tx_builder - Rust

    Module bdk_wallet::wallet::tx_builder

    source ·
    Expand description

    Transaction builder

    +

    §Example

    // create a TxBuilder from a wallet
     let mut tx_builder = wallet.build_tx();
     
    @@ -8,11 +7,11 @@ tx_builder
         // Create a transaction with one output to `to_address` of 50_000 satoshi
         .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
         // With a custom fee rate of 5.0 satoshi/vbyte
    -    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    +    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
         // Only spend non-change outputs
         .do_not_spend_change()
         // Turn on RBF signaling
         .enable_rbf();
     let psbt = tx_builder.finish()?;
    -

    Structs

    Marker type to indicate the TxBuilder is being used to bump the fee of an existing transaction.
    Marker type to indicate the TxBuilder is being used to create a new transaction (as opposed -to bumping the fee of an existing one).
    A transaction builder

    Enums

    Policy regarding the use of change outputs when creating a transaction
    Ordering of the transaction’s inputs and outputs

    Traits

    Context in which the TxBuilder is valid
    \ No newline at end of file +

    Structs§

    • Marker type to indicate the TxBuilder is being used to bump the fee of an existing transaction.
    • Marker type to indicate the TxBuilder is being used to create a new transaction (as opposed +to bumping the fee of an existing one).
    • A transaction builder

    Enums§

    Traits§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/sidebar-items.js index abc3e92eca..fe18d73ca1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["AddForeignUtxoError","Error returned from [`TxBuilder::add_foreign_utxo`]."],["AddUtxoError","Error returned from [`TxBuilder::add_utxo`] and [`TxBuilder::add_utxos`]"],["AllowShrinkingError","Error returned from [`TxBuilder::allow_shrinking`]"],["ChangeSpendPolicy","Policy regarding the use of change outputs when creating a transaction"],["TxOrdering","Ordering of the transaction’s inputs and outputs"]],"struct":[["BumpFee","Marker type to indicate the [`TxBuilder`] is being used to bump the fee of an existing transaction."],["CreateTx","Marker type to indicate the [`TxBuilder`] is being used to create a new transaction (as opposed to bumping the fee of an existing one)."],["TxBuilder","A transaction builder"]],"trait":[["TxBuilderContext","Context in which the [`TxBuilder`] is valid"]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["AddForeignUtxoError","AddUtxoError","AllowShrinkingError","ChangeSpendPolicy","TxOrdering"],"struct":["BumpFee","CreateTx","TxBuilder"],"trait":["TxBuilderContext"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.BumpFee.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.BumpFee.html index 69e745fa0e..56f28807f7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.BumpFee.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.BumpFee.html @@ -1,7 +1,14 @@ -BumpFee in bdk_wallet::wallet::tx_builder - Rust
    pub struct BumpFee;
    Expand description

    Marker type to indicate the TxBuilder is being used to bump the fee of an existing transaction.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +BumpFee in bdk_wallet::wallet::tx_builder - Rust

    Struct bdk_wallet::wallet::tx_builder::BumpFee

    source ·
    pub struct BumpFee;
    Expand description

    Marker type to indicate the TxBuilder is being used to bump the fee of an existing transaction.

    +

    Trait Implementations§

    source§

    impl Clone for BumpFee

    source§

    fn clone(&self) -> BumpFee

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for BumpFee

    source§

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

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

    impl Default for BumpFee

    source§

    fn default() -> BumpFee

    Returns the “default value” for a type. Read more
    source§

    impl TxBuilderContext for BumpFee

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.CreateTx.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.CreateTx.html index 77bbe78def..b2f4b7e83a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.CreateTx.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.CreateTx.html @@ -1,8 +1,15 @@ -CreateTx in bdk_wallet::wallet::tx_builder - Rust
    pub struct CreateTx;
    Expand description

    Marker type to indicate the TxBuilder is being used to create a new transaction (as opposed +CreateTx in bdk_wallet::wallet::tx_builder - Rust

    Struct bdk_wallet::wallet::tx_builder::CreateTx

    source ·
    pub struct CreateTx;
    Expand description

    Marker type to indicate the TxBuilder is being used to create a new transaction (as opposed to bumping the fee of an existing one).

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for CreateTx

    source§

    fn clone(&self) -> CreateTx

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CreateTx

    source§

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

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

    impl Default for CreateTx

    source§

    fn default() -> CreateTx

    Returns the “default value” for a type. Read more
    source§

    impl TxBuilderContext for CreateTx

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.TxBuilder.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.TxBuilder.html index c4021e57a6..b2c7628659 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.TxBuilder.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/struct.TxBuilder.html @@ -1,7 +1,6 @@ -TxBuilder in bdk_wallet::wallet::tx_builder - Rust
    pub struct TxBuilder<'a, Cs, Ctx> { /* private fields */ }
    Expand description

    A transaction builder

    -

    A TxBuilder is created by calling build_tx or build_fee_bump on a wallet. After -assigning it, you set options on it until finally calling finish to consume the builder and +TxBuilder in bdk_wallet::wallet::tx_builder - Rust

    Struct bdk_wallet::wallet::tx_builder::TxBuilder

    source ·
    pub struct TxBuilder<'a, Cs, Ctx> { /* private fields */ }
    Expand description

    A transaction builder

    +

    A TxBuilder is created by calling build_tx or build_fee_bump on a wallet. After +assigning it, you set options on it until finally calling finish to consume the builder and generate the transaction.

    Each option setting method on TxBuilder takes and returns &mut self so you can chain calls as in the following example:

    @@ -27,10 +26,10 @@ as in the following example:

    }; assert_eq!(psbt1.unsigned_tx.output[..2], psbt2.unsigned_tx.output[..2]);
    -

    At the moment coin_selection is an exception to the rule as it consumes self. -This means it is usually best to call coin_selection on the return value of build_tx before assigning it.

    -

    For further examples see this module’s documentation;

    -

    Implementations§

    Set a custom fee rate.

    +

    At the moment coin_selection is an exception to the rule as it consumes self. +This means it is usually best to call coin_selection on the return value of build_tx before assigning it.

    +

    For further examples see this module’s documentation;

    +

    Implementations§

    source§

    impl<'a, Cs, Ctx> TxBuilder<'a, Cs, Ctx>

    source

    pub fn fee_rate(&mut self, fee_rate: FeeRate) -> &mut Self

    Set a custom fee rate.

    This method sets the mining fee paid by the transaction as a rate on its size. This means that the total fee paid is equal to fee_rate times the size of the transaction. Default is 1 sat/vB in accordance with Bitcoin Core’s default @@ -38,7 +37,7 @@ relay policy.

    Note that this is really a minimum feerate – it’s possible to overshoot it slightly since adding a change output to drain the remaining excess might not be viable.

    -

    Set an absolute fee +

    source

    pub fn fee_absolute(&mut self, fee_amount: u64) -> &mut Self

    Set an absolute fee The fee_absolute method refers to the absolute transaction fee in satoshis (sats). If anyone sets both the fee_absolute method and the fee_rate method, the FeePolicy enum will be set by whichever method was called last, @@ -46,12 +45,16 @@ as the FeeRate and FeeAmount are mutually exclusive.

    Note that this is really a minimum absolute fee – it’s possible to overshoot it slightly since adding a change output to drain the remaining excess might not be viable.

    -

    Set the policy path to use while creating the transaction for a given keychain.

    +
    source

    pub fn policy_path( + &mut self, + policy_path: BTreeMap<String, Vec<usize>>, + keychain: KeychainKind +) -> &mut Self

    Set the policy path to use while creating the transaction for a given keychain.

    This method accepts a map where the key is the policy node id (see -Policy::id) and the value is the list of the indexes of +Policy::id) and the value is the list of the indexes of the items that are intended to be satisfied from the policy node (see -SatisfiableItem::Thresh::items).

    -
    Example
    +SatisfiableItem::Thresh::items).

    +
    §Example

    An example of when the policy path is needed is the following descriptor: wsh(thresh(2,pk(A),sj:and_v(v:pk(B),n:older(6)),snj:and_v(v:pk(C),after(630000)))), derived from the miniscript policy thresh(2,pk(A),and(pk(B),older(6)),and(pk(C),after(630000))). @@ -72,7 +75,7 @@ in order to spend an OP_CLTV branch.

  • If fragments 2 and 3 are used, the transaction will need both.
  • When the spending policy is represented as a tree (see -Wallet::policies), every node +Wallet::policies), every node is assigned a unique identifier that can be used in the policy path to specify which of the node’s children the user intends to satisfy: for instance, assuming the thresh() root node of this example has an id of aabbccdd, the policy path map would look like:

    @@ -82,25 +85,36 @@ used, in no particular order.

    If a particularly complex descriptor has multiple ambiguous thresholds in its structure, multiple entries can be added to the map, one for each node that requires an explicit path.

    -
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
         .unwrap()
         .assume_checked();
     let mut path = BTreeMap::new();
    -path.insert("aabbccdd".to_string(), vec![0, 1]);
    +path.insert("aabbccdd".to_string(), vec![0, 1]);
     
     let builder = wallet
         .build_tx()
         .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
         .policy_path(path, KeychainKind::External);
     
    -

    Add the list of outpoints to the internal list of UTXOs that must be spent.

    +
    source

    pub fn add_utxos( + &mut self, + outpoints: &[OutPoint] +) -> Result<&mut Self, AddUtxoError>

    Add the list of outpoints to the internal list of UTXOs that must be spent.

    If an error occurs while adding any of the UTXOs then none of them are added and the error is returned.

    These have priority over the “unspendable” utxos, meaning that if a utxo is present both in the “utxos” and the “unspendable” list, it will be spent.

    -

    Add a utxo to the internal list of utxos that must be spent

    +
    source

    pub fn add_utxo( + &mut self, + outpoint: OutPoint +) -> Result<&mut Self, AddUtxoError>

    Add a utxo to the internal list of utxos that must be spent

    These have priority over the “unspendable” utxos, meaning that if a utxo is present both in the “utxos” and the “unspendable” list, it will be spent.

    -

    Add a foreign UTXO i.e. a UTXO not owned by this wallet.

    +
    source

    pub fn add_foreign_utxo( + &mut self, + outpoint: OutPoint, + psbt_input: Input, + satisfaction_weight: usize +) -> Result<&mut Self, AddForeignUtxoError>

    Add a foreign UTXO i.e. a UTXO not owned by this wallet.

    At a minimum to add a foreign UTXO we need:

    1. outpoint: To add it to the raw transaction.
    2. @@ -121,102 +135,118 @@ causing you to pay a fee that is too high. The party who is broadcasting the tra of course check the real input weight matches the expected weight prior to broadcasting.

      To guarantee the max_weight_to_satisfy is correct, you can require the party providing the psbt_input provide a miniscript descriptor for the input so you can check it against the -script_pubkey and then ask it for the max_weight_to_satisfy.

      +script_pubkey and then ask it for the max_weight_to_satisfy.

      This is an EXPERIMENTAL feature, API and other major changes are expected.

      -

      In order to use Wallet::calculate_fee or Wallet::calculate_fee_rate for a transaction +

      In order to use Wallet::calculate_fee or Wallet::calculate_fee_rate for a transaction created with foreign UTXO(s) you must manually insert the corresponding TxOut(s) into the tx -graph using the Wallet::insert_txout function.

      -
      Errors
      +graph using the Wallet::insert_txout function.

      +
      §Errors

      This method returns errors in the following circumstances:

      1. The psbt_input does not contain a witness_utxo or non_witness_utxo.
      2. The data in non_witness_utxo does not match what is in outpoint.
      -

      Note unless you set only_witness_utxo any non-taproot psbt_input you pass to this -method must have non_witness_utxo set otherwise you will get an error when finish +

      Note unless you set only_witness_utxo any non-taproot psbt_input you pass to this +method must have non_witness_utxo set otherwise you will get an error when finish is called.

      -

    Same as add_foreign_utxo but allows to set the nSequence value.

    -

    Only spend utxos added by add_utxo.

    +
    source

    pub fn add_foreign_utxo_with_sequence( + &mut self, + outpoint: OutPoint, + psbt_input: Input, + satisfaction_weight: usize, + sequence: Sequence +) -> Result<&mut Self, AddForeignUtxoError>

    Same as add_foreign_utxo but allows to set the nSequence value.

    +
    source

    pub fn manually_selected_only(&mut self) -> &mut Self

    Only spend utxos added by add_utxo.

    The wallet will not add additional utxos to the transaction even if they are needed to make the transaction valid.

    -

    Replace the internal list of unspendable utxos with a new list

    -

    It’s important to note that the “must-be-spent” utxos added with TxBuilder::add_utxo +

    source

    pub fn unspendable(&mut self, unspendable: Vec<OutPoint>) -> &mut Self

    Replace the internal list of unspendable utxos with a new list

    +

    It’s important to note that the “must-be-spent” utxos added with TxBuilder::add_utxo have priority over these. See the docs of the two linked methods for more details.

    -

    Add a utxo to the internal list of unspendable utxos

    -

    It’s important to note that the “must-be-spent” utxos added with TxBuilder::add_utxo +

    source

    pub fn add_unspendable(&mut self, unspendable: OutPoint) -> &mut Self

    Add a utxo to the internal list of unspendable utxos

    +

    It’s important to note that the “must-be-spent” utxos added with TxBuilder::add_utxo have priority over this. See the docs of the two linked methods for more details.

    -

    Sign with a specific sig hash

    +
    source

    pub fn sighash(&mut self, sighash: PsbtSighashType) -> &mut Self

    Sign with a specific sig hash

    Use this option very carefully

    -

    Choose the ordering for inputs and outputs of the transaction

    -

    Use a specific nLockTime while creating the transaction

    +
    source

    pub fn ordering(&mut self, ordering: TxOrdering) -> &mut Self

    Choose the ordering for inputs and outputs of the transaction

    +
    source

    pub fn nlocktime(&mut self, locktime: LockTime) -> &mut Self

    Use a specific nLockTime while creating the transaction

    This can cause conflicts if the wallet’s descriptors contain an “after” (OP_CLTV) operator.

    -

    Build a transaction with a specific version

    +
    source

    pub fn version(&mut self, version: i32) -> &mut Self

    Build a transaction with a specific version

    The version should always be greater than 0 and greater than 1 if the wallet’s descriptors contain an “older” (OP_CSV) operator.

    -

    Do not spend change outputs

    +
    source

    pub fn do_not_spend_change(&mut self) -> &mut Self

    Do not spend change outputs

    This effectively adds all the change outputs to the “unspendable” list. See -TxBuilder::unspendable.

    -

    Only spend change outputs

    +TxBuilder::unspendable.

    +
    source

    pub fn only_spend_change(&mut self) -> &mut Self

    Only spend change outputs

    This effectively adds all the non-change outputs to the “unspendable” list. See -TxBuilder::unspendable.

    -

    Only Fill-in the psbt::Input::witness_utxo field when spending from +TxBuilder::unspendable.

    +
    source

    pub fn change_policy(&mut self, change_policy: ChangeSpendPolicy) -> &mut Self

    source

    pub fn only_witness_utxo(&mut self) -> &mut Self

    Only Fill-in the psbt::Input::witness_utxo field when spending from SegWit descriptors.

    This reduces the size of the PSBT, but some signers might reject them due to the lack of the non_witness_utxo.

    -

    Fill-in the psbt::Output::redeem_script and +

    source

    pub fn include_output_redeem_witness_script(&mut self) -> &mut Self

    Fill-in the psbt::Output::redeem_script and psbt::Output::witness_script fields.

    This is useful for signers which always require it, like ColdCard hardware wallets.

    -

    Fill-in the PSBT_GLOBAL_XPUB field with the extended keys contained in both the external +

    source

    pub fn add_global_xpubs(&mut self) -> &mut Self

    Fill-in the PSBT_GLOBAL_XPUB field with the extended keys contained in both the external and internal descriptors

    This is useful for offline signers that take part to a multisig. Some hardware wallets like BitBox and ColdCard are known to require this.

    -

    Spend all the available inputs. This respects filters like TxBuilder::unspendable and the change policy.

    -

    Choose the coin selection algorithm

    -

    Overrides the DefaultCoinSelectionAlgorithm.

    +
    source

    pub fn drain_wallet(&mut self) -> &mut Self

    Spend all the available inputs. This respects filters like TxBuilder::unspendable and the change policy.

    +
    source

    pub fn coin_selection<P: CoinSelectionAlgorithm>( + self, + coin_selection: P +) -> TxBuilder<'a, P, Ctx>

    Choose the coin selection algorithm

    +

    Overrides the DefaultCoinSelectionAlgorithm.

    Note that this function consumes the builder and returns it so it is usually best to put this as the first call on the builder.

    -

    Enable signaling RBF

    +
    source

    pub fn enable_rbf(&mut self) -> &mut Self

    Enable signaling RBF

    This will use the default nSequence value of 0xFFFFFFFD.

    -

    Enable signaling RBF with a specific nSequence value

    +
    source

    pub fn enable_rbf_with_sequence(&mut self, nsequence: Sequence) -> &mut Self

    Enable signaling RBF with a specific nSequence value

    This can cause conflicts if the wallet’s descriptors contain an “older” (OP_CSV) operator and the given nsequence is lower than the CSV value.

    If the nsequence is higher than 0xFFFFFFFD an error will be thrown, since it would not be a valid nSequence to signal RBF.

    -

    Set the current blockchain height.

    +
    source

    pub fn current_height(&mut self, height: u32) -> &mut Self

    Set the current blockchain height.

    This will be used to:

    1. Set the nLockTime for preventing fee sniping. -Note: This will be ignored if you manually specify a nlocktime using TxBuilder::nlocktime.
    2. +Note: This will be ignored if you manually specify a nlocktime using TxBuilder::nlocktime.
    3. Decide whether coinbase outputs are mature or not. If the coinbase outputs are not mature at current_height, we ignore them in the coin selection. If you want to create a transaction that spends immature coinbase inputs, manually -add them using TxBuilder::add_utxos.
    4. +add them using TxBuilder::add_utxos.

    In both cases, if you don’t provide a current height, we use the last sync height.

    -

    Set whether or not the dust limit is checked.

    +
    source

    pub fn allow_dust(&mut self, allow_dust: bool) -> &mut Self

    Set whether or not the dust limit is checked.

    Note: by avoiding a dust limit check you may end up with a transaction that is non-standard.

    -

    Finish building the transaction.

    +
    source§

    impl<'a, Cs: CoinSelectionAlgorithm, Ctx> TxBuilder<'a, Cs, Ctx>

    source

    pub fn finish(self) -> Result<Psbt, CreateTxError>

    Finish building the transaction.

    Returns a new [Psbt] per BIP174.

    -

    Replace the recipients already added with a new list

    -

    Add a recipient to the internal list

    -

    Add data as an output, using OP_RETURN

    -

    Sets the address to drain excess coins to.

    +
    source§

    impl<'a, Cs: CoinSelectionAlgorithm> TxBuilder<'a, Cs, CreateTx>

    source

    pub fn set_recipients( + &mut self, + recipients: Vec<(ScriptBuf, Amount)> +) -> &mut Self

    Replace the recipients already added with a new list

    +
    source

    pub fn add_recipient( + &mut self, + script_pubkey: ScriptBuf, + amount: Amount +) -> &mut Self

    Add a recipient to the internal list

    +
    source

    pub fn add_data<T: AsRef<PushBytes>>(&mut self, data: &T) -> &mut Self

    Add data as an output, using OP_RETURN

    +
    source

    pub fn drain_to(&mut self, script_pubkey: ScriptBuf) -> &mut Self

    Sets the address to drain excess coins to.

    Usually, when there are excess coins they are sent to a change address generated by the wallet. This option replaces the usual change address with an arbitrary script_pubkey of your choosing. Just as with a change output, if the drain output is not needed (the excess coins are too small) it will not be included in the resulting transaction. The only difference is that it is valid to use drain_to without setting any ordinary recipients -with add_recipient (but it is perfectly fine to add recipients as well).

    +with add_recipient (but it is perfectly fine to add recipients as well).

    If you choose not to set any recipients, you should either provide the utxos that the -transaction should spend via add_utxos, or set drain_wallet to spend all of them.

    +transaction should spend via add_utxos, or set drain_wallet to spend all of them.

    When bumping the fees of a transaction made with this option, you probably want to -use allow_shrinking to allow this output to be reduced to pay for the extra fees.

    -
    Example
    -

    drain_to is very useful for draining all the coins in a wallet with drain_wallet to a +use allow_shrinking to allow this output to be reduced to pay for the extra fees.

    +
    §Example
    +

    drain_to is very useful for draining all the coins in a wallet with drain_wallet to a single address.

    -
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +
    Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
         .unwrap()
         .assume_checked();
     let mut tx_builder = wallet.build_tx();
    @@ -226,10 +256,13 @@ tx_builder
         .drain_wallet()
         // Send the excess (which is all the coins minus the fee) to this address.
         .drain_to(to_address.script_pubkey())
    -    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    +    .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
         .enable_rbf();
     let psbt = tx_builder.finish()?;
    -

    Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this +

    source§

    impl<'a> TxBuilder<'a, DefaultCoinSelectionAlgorithm, BumpFee>

    source

    pub fn allow_shrinking( + &mut self, + script_pubkey: ScriptBuf +) -> Result<&mut Self, AllowShrinkingError>

    Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this script_pubkey in order to bump the transaction fee. Without specifying this the wallet will attempt to find a change output to shrink instead.

    Note that the output may shrink to below the dust limit and therefore be removed. If it is @@ -237,8 +270,19 @@ preserved then it is currently not guaranteed to be in the same position as it w originally.

    Returns an Err if script_pubkey can’t be found among the recipients of the transaction we are bumping.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl<'a, Cs: Clone, Ctx> Clone for TxBuilder<'a, Cs, Ctx>

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<'a, Cs: Debug, Ctx: Debug> Debug for TxBuilder<'a, Cs, Ctx>

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    §

    impl<'a, Cs, Ctx> Freeze for TxBuilder<'a, Cs, Ctx>
    where + Cs: Freeze,

    §

    impl<'a, Cs, Ctx> !RefUnwindSafe for TxBuilder<'a, Cs, Ctx>

    §

    impl<'a, Cs, Ctx> !Send for TxBuilder<'a, Cs, Ctx>

    §

    impl<'a, Cs, Ctx> !Sync for TxBuilder<'a, Cs, Ctx>

    §

    impl<'a, Cs, Ctx> Unpin for TxBuilder<'a, Cs, Ctx>
    where + Cs: Unpin, + Ctx: Unpin,

    §

    impl<'a, Cs, Ctx> !UnwindSafe for TxBuilder<'a, Cs, Ctx>

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.html index 94acc722f1..e286615e0d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.html @@ -1,3 +1,2 @@ -TxBuilderContext in bdk_wallet::wallet::tx_builder - Rust
    pub trait TxBuilderContext: Debug + Default + Clone { }
    Expand description

    Context in which the TxBuilder is valid

    -

    Implementors§

    \ No newline at end of file +TxBuilderContext in bdk_wallet::wallet::tx_builder - Rust

    Trait bdk_wallet::wallet::tx_builder::TxBuilderContext

    source ·
    pub trait TxBuilderContext: Debug + Default + Clone { }
    Expand description

    Context in which the TxBuilder is valid

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/type.ChangeSet.html new file mode 100644 index 0000000000..345673b189 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/bdk_wallet/wallet/type.ChangeSet.html @@ -0,0 +1,9 @@ +ChangeSet in bdk_wallet::wallet - Rust

    Type Alias bdk_wallet::wallet::ChangeSet

    source ·
    pub type ChangeSet = CombinedChangeSet<KeychainKind, ConfirmationTimeHeightAnchor>;
    Expand description

    The changes made to a wallet by applying an Update.

    +

    Aliased Type§

    struct ChangeSet {
    +    pub chain: BTreeMap<u32, Option<BlockHash>>,
    +    pub indexed_tx_graph: ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>,
    +    pub network: Option<Network>,
    +}

    Fields§

    §chain: BTreeMap<u32, Option<BlockHash>>

    Changes to the LocalChain.

    +
    §indexed_tx_graph: ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>

    Changes to IndexedTxGraph.

    +
    §network: Option<Network>

    Stores the network type of the transaction data.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/crates.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/crates.js index 98748871e4..9042705563 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/crates.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/crates.js @@ -1 +1 @@ -window.ALL_CRATES = ["bdk_bitcoind_rpc","bdk_chain","bdk_coin_select","bdk_electrum","bdk_esplora","bdk_file_store","bdk_hwi","bdk_persist","bdk_testenv","bdk_tmp_plan","bdk_wallet","example_bitcoind_rpc_polling","example_cli","example_electrum","example_esplora","wallet_electrum_example","wallet_esplora_async","wallet_esplora_blocking","wallet_rpc"]; \ No newline at end of file +window.ALL_CRATES = ["bdk_bitcoind_rpc","bdk_chain","bdk_coin_select","bdk_electrum","bdk_esplora","bdk_file_store","bdk_hwi","bdk_persist","bdk_sqlite","bdk_testenv","bdk_tmp_plan","bdk_wallet","example_bitcoind_rpc_polling","example_cli","example_electrum","example_esplora","wallet_electrum_example","wallet_esplora_async","wallet_esplora_blocking","wallet_rpc"]; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/all.html index 76928bdfaa..cd8c111819 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.CHANNEL_BOUND.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.CHANNEL_BOUND.html index 8193574090..2d2f3961a9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.CHANNEL_BOUND.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.CHANNEL_BOUND.html @@ -1,2 +1,2 @@ -CHANNEL_BOUND in example_bitcoind_rpc_polling - Rust
    pub(crate) const CHANNEL_BOUND: usize = 10;
    Expand description

    The mpsc channel bound for emissions from [Emitter].

    -
    \ No newline at end of file +CHANNEL_BOUND in example_bitcoind_rpc_polling - Rust

    Constant example_bitcoind_rpc_polling::CHANNEL_BOUND

    source ·
    pub(crate) const CHANNEL_BOUND: usize = 10;
    Expand description

    The mpsc channel bound for emissions from [Emitter].

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_COMMIT_DELAY.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_COMMIT_DELAY.html index 6f9e6bfc55..66f6a15fd6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_COMMIT_DELAY.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_COMMIT_DELAY.html @@ -1,2 +1,2 @@ -DB_COMMIT_DELAY in example_bitcoind_rpc_polling - Rust
    pub(crate) const DB_COMMIT_DELAY: Duration;
    Expand description

    Delay for committing to persistence.

    -
    \ No newline at end of file +DB_COMMIT_DELAY in example_bitcoind_rpc_polling - Rust

    Constant example_bitcoind_rpc_polling::DB_COMMIT_DELAY

    source ·
    pub(crate) const DB_COMMIT_DELAY: Duration;
    Expand description

    Delay for committing to persistence.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_MAGIC.html index 3f26a61858..40e25f9a1c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_MAGIC.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_MAGIC.html @@ -1 +1 @@ -DB_MAGIC in example_bitcoind_rpc_polling - Rust
    pub(crate) const DB_MAGIC: &[u8] = b"bdk_example_rpc";
    \ No newline at end of file +DB_MAGIC in example_bitcoind_rpc_polling - Rust

    Constant example_bitcoind_rpc_polling::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &[u8] = b"bdk_example_rpc";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_PATH.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_PATH.html index e16c476c86..67ff96599e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_PATH.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.DB_PATH.html @@ -1 +1 @@ -DB_PATH in example_bitcoind_rpc_polling - Rust
    pub(crate) const DB_PATH: &str = ".bdk_example_rpc.db";
    \ No newline at end of file +DB_PATH in example_bitcoind_rpc_polling - Rust

    Constant example_bitcoind_rpc_polling::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = ".bdk_example_rpc.db";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.MEMPOOL_EMIT_DELAY.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.MEMPOOL_EMIT_DELAY.html index b1cf47e078..504f5a4a77 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.MEMPOOL_EMIT_DELAY.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.MEMPOOL_EMIT_DELAY.html @@ -1,2 +1,2 @@ -MEMPOOL_EMIT_DELAY in example_bitcoind_rpc_polling - Rust
    pub(crate) const MEMPOOL_EMIT_DELAY: Duration;
    Expand description

    Delay between mempool emissions.

    -
    \ No newline at end of file +MEMPOOL_EMIT_DELAY in example_bitcoind_rpc_polling - Rust

    Constant example_bitcoind_rpc_polling::MEMPOOL_EMIT_DELAY

    source ·
    pub(crate) const MEMPOOL_EMIT_DELAY: Duration;
    Expand description

    Delay between mempool emissions.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.STDOUT_PRINT_DELAY.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.STDOUT_PRINT_DELAY.html index 31cb353d33..2b8b5cf6d0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.STDOUT_PRINT_DELAY.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/constant.STDOUT_PRINT_DELAY.html @@ -1,2 +1,2 @@ -STDOUT_PRINT_DELAY in example_bitcoind_rpc_polling - Rust
    pub(crate) const STDOUT_PRINT_DELAY: Duration;
    Expand description

    Delay for printing status to stdout.

    -
    \ No newline at end of file +STDOUT_PRINT_DELAY in example_bitcoind_rpc_polling - Rust

    Constant example_bitcoind_rpc_polling::STDOUT_PRINT_DELAY

    source ·
    pub(crate) const STDOUT_PRINT_DELAY: Duration;
    Expand description

    Delay for printing status to stdout.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/enum.Emission.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/enum.Emission.html index c551f59d9a..a9820ac291 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/enum.Emission.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/enum.Emission.html @@ -1,9 +1,16 @@ -Emission in example_bitcoind_rpc_polling - Rust
    pub(crate) enum Emission {
    +Emission in example_bitcoind_rpc_polling - Rust

    Enum example_bitcoind_rpc_polling::Emission

    source ·
    pub(crate) enum Emission {
         Block(BlockEvent<Block>),
         Mempool(Vec<(Transaction, u64)>),
         Tip(u32),
    -}

    Variants§

    §

    Block(BlockEvent<Block>)

    §

    Mempool(Vec<(Transaction, u64)>)

    §

    Tip(u32)

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    Block(BlockEvent<Block>)

    §

    Mempool(Vec<(Transaction, u64)>)

    §

    Tip(u32)

    Trait Implementations§

    source§

    impl Debug for Emission

    source§

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

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/enum.RpcCommands.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/enum.RpcCommands.html index fc08602cd4..3d540a88dd 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/enum.RpcCommands.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/enum.RpcCommands.html @@ -1,15 +1,31 @@ -RpcCommands in example_bitcoind_rpc_polling - Rust
    pub(crate) enum RpcCommands {
    +RpcCommands in example_bitcoind_rpc_polling - Rust

    Enum example_bitcoind_rpc_polling::RpcCommands

    source ·
    pub(crate) enum RpcCommands {
         Sync {
             rpc_args: RpcArgs,
         },
         Live {
             rpc_args: RpcArgs,
         },
    -}

    Variants§

    §

    Sync

    Fields

    §rpc_args: RpcArgs

    Syncs local state with remote state via RPC (starting from last point of agreement) and +}

    Variants§

    §

    Sync

    Syncs local state with remote state via RPC (starting from last point of agreement) and stores/indexes relevant transactions

    -
    §

    Live

    Fields

    §rpc_args: RpcArgs

    Sync by having the emitter logic in a separate thread

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Fields

    §rpc_args: RpcArgs
    §

    Live

    Sync by having the emitter logic in a separate thread

    +

    Fields

    §rpc_args: RpcArgs

    Trait Implementations§

    source§

    impl Clone for RpcCommands

    source§

    fn clone(&self) -> RpcCommands

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RpcCommands

    source§

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

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

    impl FromArgMatches for RpcCommands

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut<'b>( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Subcommand for RpcCommands

    source§

    fn augment_subcommands<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_subcommands_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    fn has_subcommand(__clap_name: &str) -> bool

    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.await_flag.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.await_flag.html index 4f353f1b8a..d13bc59192 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.await_flag.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.await_flag.html @@ -1 +1 @@ -await_flag in example_bitcoind_rpc_polling - Rust
    pub(crate) fn await_flag(flag: &AtomicBool, duration: Duration) -> bool
    \ No newline at end of file +await_flag in example_bitcoind_rpc_polling - Rust

    Function example_bitcoind_rpc_polling::await_flag

    source ·
    pub(crate) fn await_flag(flag: &AtomicBool, duration: Duration) -> bool
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.main.html index 4959b3139c..3cf5946671 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.main.html @@ -1 +1 @@ -main in example_bitcoind_rpc_polling - Rust
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file +main in example_bitcoind_rpc_polling - Rust

    Function example_bitcoind_rpc_polling::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.start_ctrlc_handler.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.start_ctrlc_handler.html index 58abd4cc3c..968560755a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.start_ctrlc_handler.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/fn.start_ctrlc_handler.html @@ -1 +1 @@ -start_ctrlc_handler in example_bitcoind_rpc_polling - Rust
    pub(crate) fn start_ctrlc_handler() -> Arc<AtomicBool>
    \ No newline at end of file +start_ctrlc_handler in example_bitcoind_rpc_polling - Rust

    Function example_bitcoind_rpc_polling::start_ctrlc_handler

    source ·
    pub(crate) fn start_ctrlc_handler() -> Arc<AtomicBool>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/index.html index 7578ce1705..03248b95b5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/index.html @@ -1 +1 @@ -example_bitcoind_rpc_polling - Rust

    Structs

    RpcArgs ðŸ”’

    Enums

    Emission ðŸ”’
    RpcCommands ðŸ”’

    Constants

    CHANNEL_BOUND ðŸ”’
    The mpsc channel bound for emissions from [Emitter].
    DB_COMMIT_DELAY ðŸ”’
    Delay for committing to persistence.
    DB_MAGIC ðŸ”’
    DB_PATH ðŸ”’
    Delay between mempool emissions.
    Delay for printing status to stdout.

    Functions

    await_flag ðŸ”’
    main ðŸ”’

    Type Definitions

    ChangeSet ðŸ”’
    \ No newline at end of file +example_bitcoind_rpc_polling - Rust

    Crate example_bitcoind_rpc_polling

    source ·

    Structs§

    Enums§

    Constants§

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/sidebar-items.js index 24f642fb1b..7886e0a7a6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["CHANNEL_BOUND","The mpsc channel bound for emissions from [`Emitter`]."],["DB_COMMIT_DELAY","Delay for committing to persistence."],["DB_MAGIC",""],["DB_PATH",""],["MEMPOOL_EMIT_DELAY","Delay between mempool emissions."],["STDOUT_PRINT_DELAY","Delay for printing status to stdout."]],"enum":[["Emission",""],["RpcCommands",""]],"fn":[["await_flag",""],["main",""],["start_ctrlc_handler",""]],"struct":[["RpcArgs",""]],"type":[["ChangeSet",""]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["CHANNEL_BOUND","DB_COMMIT_DELAY","DB_MAGIC","DB_PATH","MEMPOOL_EMIT_DELAY","STDOUT_PRINT_DELAY"],"enum":["Emission","RpcCommands"],"fn":["await_flag","main","start_ctrlc_handler"],"struct":["RpcArgs"],"type":["ChangeSet"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/struct.RpcArgs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/struct.RpcArgs.html index 4403b81788..60fef8aca6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/struct.RpcArgs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/struct.RpcArgs.html @@ -1,16 +1,32 @@ -RpcArgs in example_bitcoind_rpc_polling - Rust
    pub(crate) struct RpcArgs {
    +RpcArgs in example_bitcoind_rpc_polling - Rust

    Struct example_bitcoind_rpc_polling::RpcArgs

    source ·
    pub(crate) struct RpcArgs {
         pub(crate) url: String,
         pub(crate) rpc_cookie: Option<PathBuf>,
         pub(crate) rpc_user: Option<String>,
         pub(crate) rpc_password: Option<String>,
         pub(crate) fallback_height: u32,
    -}

    Fields§

    §url: String

    RPC URL

    -
    §rpc_cookie: Option<PathBuf>

    RPC auth cookie file

    -
    §rpc_user: Option<String>

    RPC auth username

    -
    §rpc_password: Option<String>

    RPC auth password

    -
    §fallback_height: u32

    Starting block height to fallback to if no point of agreement if found

    -

    Implementations§

    Trait Implementations§

    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Converts to this type from the input type.
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Fields§

    §url: String

    RPC URL

    +
    §rpc_cookie: Option<PathBuf>

    RPC auth cookie file

    +
    §rpc_user: Option<String>

    RPC auth username

    +
    §rpc_password: Option<String>

    RPC auth password

    +
    §fallback_height: u32

    Starting block height to fallback to if no point of agreement if found

    +

    Implementations§

    source§

    impl RpcArgs

    source

    pub(crate) fn new_client(&self) -> Result<Client>

    Trait Implementations§

    source§

    impl Args for RpcArgs

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl Clone for RpcArgs

    source§

    fn clone(&self) -> RpcArgs

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for RpcArgs

    source§

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

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

    impl From<RpcArgs> for Auth

    source§

    fn from(args: RpcArgs) -> Self

    Converts to this type from the input type.
    source§

    impl FromArgMatches for RpcArgs

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html index 09cf68d152..d5d66e6bf7 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_bitcoind_rpc_polling/type.ChangeSet.html @@ -1 +1 @@ -ChangeSet in example_bitcoind_rpc_polling - Rust

    Type Definition example_bitcoind_rpc_polling::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<Keychain>>);
    \ No newline at end of file +ChangeSet in example_bitcoind_rpc_polling - Rust

    Type Alias example_bitcoind_rpc_polling::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<Keychain>>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/all.html index 5e5df573c0..372f31133c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/all.html @@ -1 +1 @@ -List of all items in this crate
    \ No newline at end of file +List of all items in this crate
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.AddressCmd.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.AddressCmd.html index e0c51e63f2..6a35bc1982 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.AddressCmd.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.AddressCmd.html @@ -1,17 +1,33 @@ -AddressCmd in example_cli - Rust

    Enum example_cli::AddressCmd

    source ·
    pub enum AddressCmd {
    +AddressCmd in example_cli - Rust

    Enum example_cli::AddressCmd

    source ·
    pub enum AddressCmd {
         Next,
         New,
         List {
             change: bool,
         },
         Index,
    -}

    Variants§

    §

    Next

    Get the next unused address.

    +}

    Variants§

    §

    Next

    Get the next unused address.

    §

    New

    Get a new address regardless of the existing unused addresses.

    -
    §

    List

    Fields

    §change: bool

    List change addresses

    -

    List all addresses

    -
    §

    Index

    Get last revealed address index for each keychain.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +
    §

    List

    List all addresses

    +

    Fields

    §change: bool

    List change addresses

    +
    §

    Index

    Get last revealed address index for each keychain.

    +

    Trait Implementations§

    source§

    impl Clone for AddressCmd

    source§

    fn clone(&self) -> AddressCmd

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AddressCmd

    source§

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

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

    impl FromArgMatches for AddressCmd

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut<'b>( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Subcommand for AddressCmd

    source§

    fn augment_subcommands<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_subcommands_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    fn has_subcommand(__clap_name: &str) -> bool

    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.CoinSelectionAlgo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.CoinSelectionAlgo.html index 6473ba62fe..172fcdd28b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.CoinSelectionAlgo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.CoinSelectionAlgo.html @@ -1,11 +1,20 @@ -CoinSelectionAlgo in example_cli - Rust
    pub enum CoinSelectionAlgo {
    +CoinSelectionAlgo in example_cli - Rust

    Enum example_cli::CoinSelectionAlgo

    source ·
    pub enum CoinSelectionAlgo {
         LargestFirst,
         SmallestFirst,
         OldestFirst,
         NewestFirst,
         BranchAndBound,
    -}

    Variants§

    §

    LargestFirst

    §

    SmallestFirst

    §

    OldestFirst

    §

    NewestFirst

    §

    BranchAndBound

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Returns the “default value” for a type. Read more
    Formats the value using the given formatter. Read more
    The associated error which can be returned from parsing.
    Parses a string s to return a value of this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    LargestFirst

    §

    SmallestFirst

    §

    OldestFirst

    §

    NewestFirst

    §

    BranchAndBound

    Trait Implementations§

    source§

    impl Clone for CoinSelectionAlgo

    source§

    fn clone(&self) -> CoinSelectionAlgo

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CoinSelectionAlgo

    source§

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

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

    impl Default for CoinSelectionAlgo

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    source§

    impl Display for CoinSelectionAlgo

    source§

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

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

    impl FromStr for CoinSelectionAlgo

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Commands.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Commands.html index 81ba5f4106..81919b91eb 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Commands.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Commands.html @@ -1,4 +1,4 @@ -Commands in example_cli - Rust

    Enum example_cli::Commands

    source ·
    pub enum Commands<CS: Subcommand, S: Args> {
    +Commands in example_cli - Rust

    Enum example_cli::Commands

    source ·
    pub enum Commands<CS: Subcommand, S: Args> {
         ChainSpecific(CS),
         Address {
             addr_cmd: AddressCmd,
    @@ -13,14 +13,42 @@
             coin_select: CoinSelectionAlgo,
             chain_specific: S,
         },
    -}

    Variants§

    §

    ChainSpecific(CS)

    §

    Address

    Fields

    §addr_cmd: AddressCmd

    Address generation and inspection.

    -
    §

    Balance

    Get the wallet balance.

    -
    §

    TxOut

    Fields

    §txout_cmd: TxOutCmd

    TxOut related commands.

    -
    §

    Send

    Fields

    §value: u64

    Amount to send in satoshis

    -
    §address: Address<NetworkUnchecked>

    Destination address

    -
    §coin_select: CoinSelectionAlgo
    §chain_specific: S

    Send coins to an address.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    ChainSpecific(CS)

    §

    Address

    Address generation and inspection.

    +

    Fields

    §addr_cmd: AddressCmd
    §

    Balance

    Get the wallet balance.

    +
    §

    TxOut

    TxOut related commands.

    +

    Fields

    §txout_cmd: TxOutCmd
    §

    Send

    Send coins to an address.

    +

    Fields

    §value: u64

    Amount to send in satoshis

    +
    §address: Address<NetworkUnchecked>

    Destination address

    +
    §chain_specific: S

    Trait Implementations§

    source§

    impl<CS: Clone + Subcommand, S: Clone + Args> Clone for Commands<CS, S>

    source§

    fn clone(&self) -> Commands<CS, S>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl<CS: Debug + Subcommand, S: Debug + Args> Debug for Commands<CS, S>

    source§

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

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

    impl<CS: Subcommand, S: Args> FromArgMatches for Commands<CS, S>

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut<'b>( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl<CS: Subcommand, S: Args> Subcommand for Commands<CS, S>

    source§

    fn augment_subcommands<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_subcommands_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    fn has_subcommand(__clap_name: &str) -> bool

    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    §

    impl<CS, S> Freeze for Commands<CS, S>
    where + CS: Freeze, + S: Freeze,

    §

    impl<CS, S> RefUnwindSafe for Commands<CS, S>
    where + CS: RefUnwindSafe, + S: RefUnwindSafe,

    §

    impl<CS, S> Send for Commands<CS, S>
    where + CS: Send, + S: Send,

    §

    impl<CS, S> Sync for Commands<CS, S>
    where + CS: Sync, + S: Sync,

    §

    impl<CS, S> Unpin for Commands<CS, S>
    where + CS: Unpin, + S: Unpin,

    §

    impl<CS, S> UnwindSafe for Commands<CS, S>
    where + CS: UnwindSafe, + S: UnwindSafe,

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Keychain.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Keychain.html index 32aef87bc6..69b9d6b361 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Keychain.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.Keychain.html @@ -1,12 +1,29 @@ -Keychain in example_cli - Rust

    Enum example_cli::Keychain

    source ·
    pub enum Keychain {
    +Keychain in example_cli - Rust

    Enum example_cli::Keychain

    source ·
    pub enum Keychain {
         External,
         Internal,
    -}

    Variants§

    §

    External

    §

    Internal

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Deserialize this value from the given Serde deserializer. Read more
    Formats the value using the given formatter. Read more
    This method returns an Ordering between self and other. Read more
    Compares and returns the maximum of two values. Read more
    Compares and returns the minimum of two values. Read more
    Restrict a value to a certain interval. Read more
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more
    This method returns an ordering between self and other values if one exists. Read more
    This method tests less than (for self and other) and is used by the < operator. Read more
    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    This method tests greater than (for self and other) and is used by the > operator. Read more
    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    Serialize this value into the given Serde serializer. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more
    Compare self to key and return true if they are equal.

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    External

    §

    Internal

    Trait Implementations§

    source§

    impl Clone for Keychain

    source§

    fn clone(&self) -> Keychain

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Keychain

    source§

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

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

    impl<'de> Deserialize<'de> for Keychain

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where + __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    source§

    impl Display for Keychain

    source§

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

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

    impl Ord for Keychain

    source§

    fn cmp(&self, other: &Keychain) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for Keychain

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for Keychain

    source§

    fn partial_cmp(&self, other: &Keychain) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

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

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

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

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

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

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Serialize for Keychain

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where + __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    source§

    impl Copy for Keychain

    source§

    impl Eq for Keychain

    source§

    impl StructuralPartialEq for Keychain

    Auto Trait Implementations§

    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<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    source§

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    Converts the given value to a String. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    source§

    impl<T> DeserializeOwned for T
    where + T: for<'de> Deserialize<'de>,

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.TxOutCmd.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.TxOutCmd.html index ab2eff4573..43029de20a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.TxOutCmd.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/enum.TxOutCmd.html @@ -1,17 +1,33 @@ -TxOutCmd in example_cli - Rust

    Enum example_cli::TxOutCmd

    source ·
    pub enum TxOutCmd {
    +TxOutCmd in example_cli - Rust

    Enum example_cli::TxOutCmd

    source ·
    pub enum TxOutCmd {
         List {
             spent: bool,
             unspent: bool,
             confirmed: bool,
             unconfirmed: bool,
         },
    -}

    Variants§

    §

    List

    Fields

    §spent: bool

    Return only spent outputs.

    -
    §unspent: bool

    Return only unspent outputs.

    -
    §confirmed: bool

    Return only confirmed outputs.

    -
    §unconfirmed: bool

    Return only unconfirmed outputs.

    -

    List transaction outputs.

    -

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    List

    List transaction outputs.

    +

    Fields

    §spent: bool

    Return only spent outputs.

    +
    §unspent: bool

    Return only unspent outputs.

    +
    §confirmed: bool

    Return only confirmed outputs.

    +
    §unconfirmed: bool

    Return only unconfirmed outputs.

    +

    Trait Implementations§

    source§

    impl Clone for TxOutCmd

    source§

    fn clone(&self) -> TxOutCmd

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for TxOutCmd

    source§

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

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

    impl FromArgMatches for TxOutCmd

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut<'b>( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Subcommand for TxOutCmd

    source§

    fn augment_subcommands<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_subcommands_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    fn has_subcommand(__clap_name: &str) -> bool

    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.create_tx.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.create_tx.html index 4649b94070..ddc241fe6e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.create_tx.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.create_tx.html @@ -1 +1,9 @@ -create_tx in example_cli - Rust

    Function example_cli::create_tx

    source ·
    pub fn create_tx<A: Anchor, O: ChainOracle>(
        graph: &mut KeychainTxGraph<A>,
        chain: &O,
        keymap: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>,
        cs_algorithm: CoinSelectionAlgo,
        address: Address,
        value: u64
    ) -> Result<(Transaction, Option<CreateTxChange>)>where
        O::Error: Error + Send + Sync + 'static,
    \ No newline at end of file +create_tx in example_cli - Rust

    Function example_cli::create_tx

    source ·
    pub fn create_tx<A: Anchor, O: ChainOracle>(
    +    graph: &mut KeychainTxGraph<A>,
    +    chain: &O,
    +    keymap: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>,
    +    cs_algorithm: CoinSelectionAlgo,
    +    address: Address,
    +    value: u64
    +) -> Result<(Transaction, Option<CreateTxChange>)>
    where + O::Error: Error + Send + Sync + 'static,
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.handle_commands.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.handle_commands.html index 96864f5dad..413ffd69d3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.handle_commands.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.handle_commands.html @@ -1 +1,11 @@ -handle_commands in example_cli - Rust

    Function example_cli::handle_commands

    source ·
    pub fn handle_commands<CS: Subcommand, S: Args, A: Anchor, O: ChainOracle, C>(
        graph: &Mutex<KeychainTxGraph<A>>,
        db: &Mutex<Persist<C>>,
        chain: &Mutex<O>,
        keymap: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>,
        network: Network,
        broadcast: impl FnOnce(S, &Transaction) -> Result<()>,
        cmd: Commands<CS, S>
    ) -> Result<()>where
        O::Error: Error + Send + Sync + 'static,
        C: Default + Append + DeserializeOwned + Serialize + From<KeychainChangeSet<A>>,
    \ No newline at end of file +handle_commands in example_cli - Rust

    Function example_cli::handle_commands

    source ·
    pub fn handle_commands<CS: Subcommand, S: Args, A: Anchor, O: ChainOracle, C>(
    +    graph: &Mutex<KeychainTxGraph<A>>,
    +    db: &Mutex<Persist<C>>,
    +    chain: &Mutex<O>,
    +    keymap: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>,
    +    network: Network,
    +    broadcast: impl FnOnce(S, &Transaction) -> Result<()>,
    +    cmd: Commands<CS, S>
    +) -> Result<()>
    where + O::Error: Error + Send + Sync + 'static, + C: Default + Append + DeserializeOwned + Serialize + From<KeychainChangeSet<A>>,
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.init.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.init.html index d2bc65e427..0355566d49 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.init.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.init.html @@ -1,3 +1,7 @@ -init in example_cli - Rust

    Function example_cli::init

    source ·
    pub fn init<CS: Subcommand, S: Args, C>(
        db_magic: &[u8],
        db_default_path: &str
    ) -> Result<Init<CS, S, C>>where
        C: Default + Append + Serialize + DeserializeOwned + Send + Sync + 'static,
    Expand description

    Parses command line arguments and initializes all components, creating +init in example_cli - Rust

    Function example_cli::init

    source ·
    pub fn init<CS: Subcommand, S: Args, C>(
    +    db_magic: &[u8],
    +    db_default_path: &str
    +) -> Result<Init<CS, S, C>>
    where + C: Default + Append + Serialize + DeserializeOwned + Send + Sync + 'static,
    Expand description

    Parses command line arguments and initializes all components, creating a file store with the given parameters, or loading one if it exists.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.planned_utxos.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.planned_utxos.html index a6a5a5e716..d1ac50fd8f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.planned_utxos.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/fn.planned_utxos.html @@ -1 +1,5 @@ -planned_utxos in example_cli - Rust

    Function example_cli::planned_utxos

    source ·
    pub fn planned_utxos<A: Anchor, O: ChainOracle, K: Clone + CanDerive>(
        graph: &KeychainTxGraph<A>,
        chain: &O,
        assets: &Assets<K>
    ) -> Result<Vec<PlannedUtxo<K, A>>, O::Error>
    \ No newline at end of file +planned_utxos in example_cli - Rust

    Function example_cli::planned_utxos

    source ·
    pub fn planned_utxos<A: Anchor, O: ChainOracle, K: Clone + CanDerive>(
    +    graph: &KeychainTxGraph<A>,
    +    chain: &O,
    +    assets: &Assets<K>
    +) -> Result<Vec<PlannedUtxo<K, A>>, O::Error>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html index 65248be987..f3a1e90733 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/index.html @@ -1,2 +1,2 @@ -example_cli - Rust

    Crate example_cli

    source ·

    Re-exports

    pub use anyhow;
    pub use bdk_file_store;
    pub use clap;

    Structs

    The initial state returned by init.

    Enums

    Functions

    Parses command line arguments and initializes all components, creating -a file store with the given parameters, or loading one if it exists.

    Type Definitions

    \ No newline at end of file +example_cli - Rust

    Crate example_cli

    source ·

    Re-exports§

    • pub use anyhow;
    • pub use bdk_file_store;
    • pub use clap;

    Structs§

    Enums§

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/sidebar-items.js index 81996a812c..a4e9fc5af0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":[["AddressCmd",""],["CoinSelectionAlgo",""],["Commands",""],["Keychain",""],["TxOutCmd",""]],"fn":[["create_tx",""],["handle_commands",""],["init","Parses command line arguments and initializes all components, creating a file store with the given parameters, or loading one if it exists."],["planned_utxos",""]],"struct":[["Args",""],["CreateTxChange",""],["Init","The initial state returned by [`init`]."]],"type":[["KeychainChangeSet",""],["KeychainTxGraph",""],["PlannedUtxo",""]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["AddressCmd","CoinSelectionAlgo","Commands","Keychain","TxOutCmd"],"fn":["create_tx","handle_commands","init","planned_utxos"],"struct":["Args","CreateTxChange","Init"],"type":["KeychainChangeSet","KeychainTxGraph","PlannedUtxo"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Args.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Args.html index 2b5f3edcc0..959ed1509c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Args.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Args.html @@ -1,12 +1,47 @@ -Args in example_cli - Rust

    Struct example_cli::Args

    source ·
    pub struct Args<CS: Subcommand, S: Args> {
    +Args in example_cli - Rust

    Struct example_cli::Args

    source ·
    pub struct Args<CS: Subcommand, S: Args> {
         pub descriptor: String,
         pub change_descriptor: Option<String>,
         pub network: Network,
         pub db_path: PathBuf,
         pub cp_limit: usize,
         pub command: Commands<CS, S>,
    -}

    Fields§

    §descriptor: String§change_descriptor: Option<String>§network: Network§db_path: PathBuf§cp_limit: usize§command: Commands<CS, S>

    Trait Implementations§

    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Deprecated, replaced with CommandFactory::command
    Deprecated, replaced with CommandFactory::command_for_update
    Build a [Command] that can instantiate Self. Read more
    Build a [Command] that can update self. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Parse from std::env::args_os(), exit on error
    Parse from std::env::args_os(), return Err on error.
    Parse from iterator, exit on error
    Parse from iterator, return Err on error.
    Update from iterator, exit on error
    Update from iterator, return Err on error.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Fields§

    §descriptor: String§change_descriptor: Option<String>§network: Network§db_path: PathBuf§cp_limit: usize§command: Commands<CS, S>

    Trait Implementations§

    source§

    impl<CS: Subcommand, S: Args> Args for Args<CS, S>

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl<CS: Subcommand, S: Args> CommandFactory for Args<CS, S>

    source§

    fn into_app<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command
    source§

    fn into_app_for_update<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command_for_update
    §

    fn command<'help>() -> App<'help>

    Build a [Command] that can instantiate Self. Read more
    §

    fn command_for_update<'help>() -> App<'help>

    Build a [Command] that can update self. Read more
    source§

    impl<CS: Subcommand, S: Args> FromArgMatches for Args<CS, S>

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl<CS: Subcommand, S: Args> Parser for Args<CS, S>

    §

    fn parse() -> Self

    Parse from std::env::args_os(), exit on error
    §

    fn try_parse() -> Result<Self, Error>

    Parse from std::env::args_os(), return Err on error.
    §

    fn parse_from<I, T>(itr: I) -> Self
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, exit on error
    §

    fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, return Err on error.
    §

    fn update_from<I, T>(&mut self, itr: I)
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, exit on error
    §

    fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, return Err on error.

    Auto Trait Implementations§

    §

    impl<CS, S> Freeze for Args<CS, S>
    where + CS: Freeze, + S: Freeze,

    §

    impl<CS, S> RefUnwindSafe for Args<CS, S>
    where + CS: RefUnwindSafe, + S: RefUnwindSafe,

    §

    impl<CS, S> Send for Args<CS, S>
    where + CS: Send, + S: Send,

    §

    impl<CS, S> Sync for Args<CS, S>
    where + CS: Sync, + S: Sync,

    §

    impl<CS, S> Unpin for Args<CS, S>
    where + CS: Unpin, + S: Unpin,

    §

    impl<CS, S> UnwindSafe for Args<CS, S>
    where + CS: UnwindSafe, + S: UnwindSafe,

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html index 0d5bfa7f3d..5aaa356a40 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.CreateTxChange.html @@ -1,9 +1,16 @@ -CreateTxChange in example_cli - Rust
    pub struct CreateTxChange {
    -    pub index_changeset: ChangeSet<Keychain>,
    +CreateTxChange in example_cli - Rust

    Struct example_cli::CreateTxChange

    source ·
    pub struct CreateTxChange {
    +    pub index_changeset: ChangeSet<Keychain>,
         pub change_keychain: Keychain,
         pub index: u32,
    -}

    Fields§

    §index_changeset: ChangeSet<Keychain>§change_keychain: Keychain§index: u32

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Fields§

    §index_changeset: ChangeSet<Keychain>§change_keychain: Keychain§index: u32

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Init.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Init.html index f0b9568fa2..a8054682ce 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Init.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/struct.Init.html @@ -1,17 +1,39 @@ -Init in example_cli - Rust

    Struct example_cli::Init

    source ·
    pub struct Init<CS: Subcommand, S: Args, C> {
    +Init in example_cli - Rust

    Struct example_cli::Init

    source ·
    pub struct Init<CS: Subcommand, S: Args, C> {
         pub args: Args<CS, S>,
         pub keymap: KeyMap,
    -    pub index: KeychainTxOutIndex<Keychain>,
    +    pub index: KeychainTxOutIndex<Keychain>,
         pub db: Mutex<Persist<C>>,
         pub init_changeset: C,
    -}
    Expand description

    The initial state returned by init.

    -

    Fields§

    §args: Args<CS, S>

    Arguments parsed by the cli.

    -
    §keymap: KeyMap

    Descriptor keymap.

    -
    §index: KeychainTxOutIndex<Keychain>

    Keychain-txout index.

    -
    §db: Mutex<Persist<C>>

    Persistence backend.

    -
    §init_changeset: C

    Initial changeset.

    -

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}
    Expand description

    The initial state returned by init.

    +

    Fields§

    §args: Args<CS, S>

    Arguments parsed by the cli.

    +
    §keymap: KeyMap

    Descriptor keymap.

    +
    §index: KeychainTxOutIndex<Keychain>

    Keychain-txout index.

    +
    §db: Mutex<Persist<C>>

    Persistence backend.

    +
    §init_changeset: C

    Initial changeset.

    +

    Auto Trait Implementations§

    §

    impl<CS, S, C> !Freeze for Init<CS, S, C>

    §

    impl<CS, S, C> RefUnwindSafe for Init<CS, S, C>
    where + C: RefUnwindSafe, + CS: RefUnwindSafe, + S: RefUnwindSafe,

    §

    impl<CS, S, C> Send for Init<CS, S, C>
    where + C: Send, + CS: Send, + S: Send,

    §

    impl<CS, S, C> Sync for Init<CS, S, C>
    where + C: Sync + Send, + CS: Sync, + S: Sync,

    §

    impl<CS, S, C> Unpin for Init<CS, S, C>
    where + C: Unpin, + CS: Unpin, + S: Unpin,

    §

    impl<CS, S, C> UnwindSafe for Init<CS, S, C>
    where + C: UnwindSafe, + CS: UnwindSafe, + S: UnwindSafe,

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html index 7f3f8999d1..0ecea609e6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainChangeSet.html @@ -1 +1 @@ -KeychainChangeSet in example_cli - Rust

    Type Definition example_cli::KeychainChangeSet

    source ·
    pub type KeychainChangeSet<A> = (ChangeSet, ChangeSet<A, ChangeSet<Keychain>>);
    \ No newline at end of file +KeychainChangeSet in example_cli - Rust

    Type Alias example_cli::KeychainChangeSet

    source ·
    pub type KeychainChangeSet<A> = (ChangeSet, ChangeSet<A, ChangeSet<Keychain>>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainTxGraph.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainTxGraph.html index e96eeba1f2..1a92e2720e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainTxGraph.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.KeychainTxGraph.html @@ -1 +1,5 @@ -KeychainTxGraph in example_cli - Rust

    Type Definition example_cli::KeychainTxGraph

    source ·
    pub type KeychainTxGraph<A> = IndexedTxGraph<A, KeychainTxOutIndex<Keychain>>;
    \ No newline at end of file +KeychainTxGraph in example_cli - Rust

    Type Alias example_cli::KeychainTxGraph

    source ·
    pub type KeychainTxGraph<A> = IndexedTxGraph<A, KeychainTxOutIndex<Keychain>>;

    Aliased Type§

    struct KeychainTxGraph<A> {
    +    pub index: KeychainTxOutIndex<Keychain>,
    +    /* private fields */
    +}

    Fields§

    §index: KeychainTxOutIndex<Keychain>

    Transaction index.

    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.PlannedUtxo.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.PlannedUtxo.html index 120288d032..426d5cfa9a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.PlannedUtxo.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_cli/type.PlannedUtxo.html @@ -1 +1 @@ -PlannedUtxo in example_cli - Rust

    Type Definition example_cli::PlannedUtxo

    source ·
    pub type PlannedUtxo<K, A> = (Plan<K>, FullTxOut<A>);
    \ No newline at end of file +PlannedUtxo in example_cli - Rust

    Type Alias example_cli::PlannedUtxo

    source ·
    pub type PlannedUtxo<K, A> = (Plan<K>, FullTxOut<A>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/all.html index 4157c0d963..785c30caf4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    Enums

    Functions

    Type Definitions

    Constants

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    Enums

    Functions

    Type Aliases

    Constants

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/constant.DB_MAGIC.html index 0dfa8a0d4c..5793d87a57 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/constant.DB_MAGIC.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/constant.DB_MAGIC.html @@ -1 +1 @@ -DB_MAGIC in example_electrum - Rust

    Constant example_electrum::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &[u8] = b"bdk_example_electrum";
    \ No newline at end of file +DB_MAGIC in example_electrum - Rust

    Constant example_electrum::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &[u8] = b"bdk_example_electrum";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/constant.DB_PATH.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/constant.DB_PATH.html index 0e3af347b5..634e36ad3c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/constant.DB_PATH.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/constant.DB_PATH.html @@ -1 +1 @@ -DB_PATH in example_electrum - Rust

    Constant example_electrum::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = ".bdk_example_electrum.db";
    \ No newline at end of file +DB_PATH in example_electrum - Rust

    Constant example_electrum::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = ".bdk_example_electrum.db";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/enum.ElectrumCommands.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/enum.ElectrumCommands.html index df56d4905d..2a33a4ce81 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/enum.ElectrumCommands.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/enum.ElectrumCommands.html @@ -1,4 +1,4 @@ -ElectrumCommands in example_electrum - Rust
    pub(crate) enum ElectrumCommands {
    +ElectrumCommands in example_electrum - Rust

    Enum example_electrum::ElectrumCommands

    source ·
    pub(crate) enum ElectrumCommands {
         Scan {
             stop_gap: usize,
             scan_options: ScanOptions,
    @@ -12,15 +12,31 @@
             scan_options: ScanOptions,
             electrum_args: ElectrumArgs,
         },
    -}

    Variants§

    §

    Scan

    Fields

    §stop_gap: usize

    When a gap this large has been found for a keychain, it will stop.

    -
    §scan_options: ScanOptions
    §electrum_args: ElectrumArgs

    Scans the addresses in the wallet using the electrum API.

    -
    §

    Sync

    Fields

    §unused_spks: bool

    Scan all the unused addresses.

    -
    §all_spks: bool

    Scan every address that you have derived.

    -
    §utxos: bool

    Scan unspent outpoints for spends or changes to confirmation status of residing tx.

    -
    §unconfirmed: bool

    Scan unconfirmed transactions for updates.

    -
    §scan_options: ScanOptions
    §electrum_args: ElectrumArgs

    Scans particular addresses using the electrum API.

    -

    Implementations§

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    Scan

    Scans the addresses in the wallet using the electrum API.

    +

    Fields

    §stop_gap: usize

    When a gap this large has been found for a keychain, it will stop.

    +
    §scan_options: ScanOptions
    §electrum_args: ElectrumArgs
    §

    Sync

    Scans particular addresses using the electrum API.

    +

    Fields

    §unused_spks: bool

    Scan all the unused addresses.

    +
    §all_spks: bool

    Scan every address that you have derived.

    +
    §utxos: bool

    Scan unspent outpoints for spends or changes to confirmation status of residing tx.

    +
    §unconfirmed: bool

    Scan unconfirmed transactions for updates.

    +
    §scan_options: ScanOptions
    §electrum_args: ElectrumArgs

    Implementations§

    Trait Implementations§

    source§

    impl Clone for ElectrumCommands

    source§

    fn clone(&self) -> ElectrumCommands

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ElectrumCommands

    source§

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

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

    impl FromArgMatches for ElectrumCommands

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut<'b>( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Subcommand for ElectrumCommands

    source§

    fn augment_subcommands<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_subcommands_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    fn has_subcommand(__clap_name: &str) -> bool

    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/fn.main.html index 025ddd06b0..a0e96a282f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/fn.main.html @@ -1 +1 @@ -main in example_electrum - Rust

    Function example_electrum::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file +main in example_electrum - Rust

    Function example_electrum::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/index.html index 33176ce7f1..39d9ba5f12 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/index.html @@ -1 +1 @@ -example_electrum - Rust
    \ No newline at end of file +example_electrum - Rust

    Crate example_electrum

    source ·

    Structs§

    Enums§

    Constants§

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/sidebar-items.js index 89b47916ac..1d1e0cd2ef 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["DB_MAGIC",""],["DB_PATH",""]],"enum":[["ElectrumCommands",""]],"fn":[["main",""]],"struct":[["ElectrumArgs",""],["ScanOptions",""]],"type":[["ChangeSet",""]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DB_MAGIC","DB_PATH"],"enum":["ElectrumCommands"],"fn":["main"],"struct":["ElectrumArgs","ScanOptions"],"type":["ChangeSet"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/struct.ElectrumArgs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/struct.ElectrumArgs.html index f719f44ea0..c98085e2d9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/struct.ElectrumArgs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/struct.ElectrumArgs.html @@ -1,9 +1,25 @@ -ElectrumArgs in example_electrum - Rust
    pub struct ElectrumArgs {
    +ElectrumArgs in example_electrum - Rust

    Struct example_electrum::ElectrumArgs

    source ·
    pub struct ElectrumArgs {
         pub(crate) electrum_url: Option<String>,
    -}

    Fields§

    §electrum_url: Option<String>

    The electrum url to use to connect to. If not provided it will use a default electrum server +}

    Fields§

    §electrum_url: Option<String>

    The electrum url to use to connect to. If not provided it will use a default electrum server for your chosen network.

    -

    Implementations§

    Trait Implementations§

    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Implementations§

    source§

    impl ElectrumArgs

    source

    pub fn client(&self, network: Network) -> Result<Client>

    Trait Implementations§

    source§

    impl Args for ElectrumArgs

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl Clone for ElectrumArgs

    source§

    fn clone(&self) -> ElectrumArgs

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for ElectrumArgs

    source§

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

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

    impl FromArgMatches for ElectrumArgs

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/struct.ScanOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/struct.ScanOptions.html index 73f1178fcf..bb179aad21 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/struct.ScanOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/struct.ScanOptions.html @@ -1,10 +1,34 @@ -ScanOptions in example_electrum - Rust
    pub struct ScanOptions {
    +ScanOptions in example_electrum - Rust

    Struct example_electrum::ScanOptions

    source ·
    pub struct ScanOptions {
         pub batch_size: usize,
    -}

    Fields§

    §batch_size: usize

    Set batch size for each script_history call to electrum client.

    -

    Trait Implementations§

    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Deprecated, replaced with CommandFactory::command
    Deprecated, replaced with CommandFactory::command_for_update
    Build a [Command] that can instantiate Self. Read more
    Build a [Command] that can update self. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Parse from std::env::args_os(), exit on error
    Parse from std::env::args_os(), return Err on error.
    Parse from iterator, exit on error
    Parse from iterator, return Err on error.
    Update from iterator, exit on error
    Update from iterator, return Err on error.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Fields§

    §batch_size: usize

    Set batch size for each script_history call to electrum client.

    +

    Trait Implementations§

    source§

    impl Args for ScanOptions

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl Clone for ScanOptions

    source§

    fn clone(&self) -> ScanOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl CommandFactory for ScanOptions

    source§

    fn into_app<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command
    source§

    fn into_app_for_update<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command_for_update
    §

    fn command<'help>() -> App<'help>

    Build a [Command] that can instantiate Self. Read more
    §

    fn command_for_update<'help>() -> App<'help>

    Build a [Command] that can update self. Read more
    source§

    impl Debug for ScanOptions

    source§

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

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

    impl FromArgMatches for ScanOptions

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Parser for ScanOptions

    §

    fn parse() -> Self

    Parse from std::env::args_os(), exit on error
    §

    fn try_parse() -> Result<Self, Error>

    Parse from std::env::args_os(), return Err on error.
    §

    fn parse_from<I, T>(itr: I) -> Self
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, exit on error
    §

    fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, return Err on error.
    §

    fn update_from<I, T>(&mut self, itr: I)
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, exit on error
    §

    fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, return Err on error.
    source§

    impl PartialEq for ScanOptions

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for ScanOptions

    Auto Trait Implementations§

    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> 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.

    -
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/type.ChangeSet.html index fc0b21a348..be32deed0e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_electrum/type.ChangeSet.html @@ -1 +1 @@ -ChangeSet in example_electrum - Rust

    Type Definition example_electrum::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationHeightAnchor, ChangeSet<Keychain>>);
    \ No newline at end of file +ChangeSet in example_electrum - Rust

    Type Alias example_electrum::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationHeightAnchor, ChangeSet<Keychain>>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/all.html index bdd8295a7d..21cb00582e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    Enums

    Functions

    Type Definitions

    Constants

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    Enums

    Functions

    Type Aliases

    Constants

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_MAGIC.html index 86675b1f1f..7db2c70f0b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_MAGIC.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_MAGIC.html @@ -1 +1 @@ -DB_MAGIC in example_esplora - Rust

    Constant example_esplora::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &[u8] = b"bdk_example_esplora";
    \ No newline at end of file +DB_MAGIC in example_esplora - Rust

    Constant example_esplora::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &[u8] = b"bdk_example_esplora";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_PATH.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_PATH.html index 967ad25090..1755584fc1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_PATH.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/constant.DB_PATH.html @@ -1 +1 @@ -DB_PATH in example_esplora - Rust

    Constant example_esplora::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = ".bdk_esplora_example.db";
    \ No newline at end of file +DB_PATH in example_esplora - Rust

    Constant example_esplora::DB_PATH

    source ·
    pub(crate) const DB_PATH: &str = ".bdk_esplora_example.db";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/enum.EsploraCommands.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/enum.EsploraCommands.html index 68f09aed04..29ab166e07 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/enum.EsploraCommands.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/enum.EsploraCommands.html @@ -1,4 +1,4 @@ -EsploraCommands in example_esplora - Rust
    pub(crate) enum EsploraCommands {
    +EsploraCommands in example_esplora - Rust

    Enum example_esplora::EsploraCommands

    source ·
    pub(crate) enum EsploraCommands {
         Scan {
             stop_gap: usize,
             scan_options: ScanOptions,
    @@ -12,25 +12,43 @@
             scan_options: ScanOptions,
             esplora_args: EsploraArgs,
         },
    -}

    Variants§

    §

    Scan

    Fields

    §stop_gap: usize

    When a gap this large has been found for a keychain, it will stop.

    -
    §scan_options: ScanOptions
    §esplora_args: EsploraArgs

    Scans the addresses in the wallet using the esplora API.

    -
    §

    Sync

    Fields

    §unused_spks: bool

    Scan all the unused addresses.

    -
    §all_spks: bool

    Scan every address that you have derived.

    -
    §utxos: bool

    Scan unspent outpoints for spends or changes to confirmation status of residing tx.

    -
    §unconfirmed: bool

    Scan unconfirmed transactions for updates.

    -
    §scan_options: ScanOptions
    §esplora_args: EsploraArgs

    Scan for particular addresses and unconfirmed transactions using the esplora API.

    -

    Implementations§

    Trait Implementations§

    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Instruments this type with the provided [Span], returning an -Instrumented wrapper. Read more
    Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

    Calls U::from(self).

    +}

    Variants§

    §

    Scan

    Scans the addresses in the wallet using the esplora API.

    +

    Fields

    §stop_gap: usize

    When a gap this large has been found for a keychain, it will stop.

    +
    §scan_options: ScanOptions
    §esplora_args: EsploraArgs
    §

    Sync

    Scan for particular addresses and unconfirmed transactions using the esplora API.

    +

    Fields

    §unused_spks: bool

    Scan all the unused addresses.

    +
    §all_spks: bool

    Scan every address that you have derived.

    +
    §utxos: bool

    Scan unspent outpoints for spends or changes to confirmation status of residing tx.

    +
    §unconfirmed: bool

    Scan unconfirmed transactions for updates.

    +
    §scan_options: ScanOptions
    §esplora_args: EsploraArgs

    Implementations§

    Trait Implementations§

    source§

    impl Clone for EsploraCommands

    source§

    fn clone(&self) -> EsploraCommands

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for EsploraCommands

    source§

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

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

    impl FromArgMatches for EsploraCommands

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut<'b>( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Subcommand for EsploraCommands

    source§

    fn augment_subcommands<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_subcommands_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    fn has_subcommand(__clap_name: &str) -> bool

    Test whether Self can parse a specific subcommand

    Auto Trait Implementations§

    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> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T> Instrument for T

    §

    fn instrument(self, span: Span) -> Instrumented<Self>

    Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
    §

    fn in_current_span(self) -> Instrumented<Self>

    Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
    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.

    -
    Converts self into a Left variant of Either<Self, Self> +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoEither for T

    source§

    fn into_either(self, into_left: bool) -> Either<Self, Self>

    Converts self into a Left variant of Either<Self, Self> if into_left is true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    Converts self into a Left variant of Either<Self, Self> +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
    source§

    fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
    where + F: FnOnce(&Self) -> bool,

    Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    Attaches the provided Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    \ No newline at end of file +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
    where + S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/fn.main.html index f81d383537..d08beeb163 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/fn.main.html @@ -1 +1 @@ -main in example_esplora - Rust

    Function example_esplora::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file +main in example_esplora - Rust

    Function example_esplora::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/index.html index 393d46d1ec..52dbd8798b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/index.html @@ -1 +1 @@ -example_esplora - Rust
    \ No newline at end of file +example_esplora - Rust

    Crate example_esplora

    source ·

    Structs§

    Enums§

    Constants§

    Functions§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/sidebar-items.js index 159f3ddbd9..13d1f67a0e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["DB_MAGIC",""],["DB_PATH",""]],"enum":[["EsploraCommands",""]],"fn":[["main",""]],"struct":[["EsploraArgs",""],["ScanOptions",""]],"type":[["ChangeSet",""]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DB_MAGIC","DB_PATH"],"enum":["EsploraCommands"],"fn":["main"],"struct":["EsploraArgs","ScanOptions"],"type":["ChangeSet"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/struct.EsploraArgs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/struct.EsploraArgs.html index de25c54264..c1c9bf9f12 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/struct.EsploraArgs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/struct.EsploraArgs.html @@ -1,19 +1,37 @@ -EsploraArgs in example_esplora - Rust
    pub struct EsploraArgs {
    +EsploraArgs in example_esplora - Rust

    Struct example_esplora::EsploraArgs

    source ·
    pub struct EsploraArgs {
         pub(crate) esplora_url: Option<String>,
    -}

    Fields§

    §esplora_url: Option<String>

    The esplora url endpoint to connect to e.g. <https://blockstream.info/api> +}

    Fields§

    §esplora_url: Option<String>

    The esplora url endpoint to connect to e.g. <https://blockstream.info/api> If not provided it’ll be set to a default for the network provided

    -

    Implementations§

    Trait Implementations§

    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Instruments this type with the provided [Span], returning an -Instrumented wrapper. Read more
    Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

    Calls U::from(self).

    +

    Implementations§

    source§

    impl EsploraArgs

    source

    pub fn client(&self, network: Network) -> Result<BlockingClient>

    Trait Implementations§

    source§

    impl Args for EsploraArgs

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl Clone for EsploraArgs

    source§

    fn clone(&self) -> EsploraArgs

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl Debug for EsploraArgs

    source§

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

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

    impl FromArgMatches for EsploraArgs

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.

    Auto Trait Implementations§

    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> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T> Instrument for T

    §

    fn instrument(self, span: Span) -> Instrumented<Self>

    Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
    §

    fn in_current_span(self) -> Instrumented<Self>

    Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
    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.

    -
    Converts self into a Left variant of Either<Self, Self> +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoEither for T

    source§

    fn into_either(self, into_left: bool) -> Either<Self, Self>

    Converts self into a Left variant of Either<Self, Self> if into_left is true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    Converts self into a Left variant of Either<Self, Self> +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
    source§

    fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
    where + F: FnOnce(&Self) -> bool,

    Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    Attaches the provided Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    \ No newline at end of file +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
    where + S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/struct.ScanOptions.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/struct.ScanOptions.html index e35146c5ad..b240ce02b0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/struct.ScanOptions.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/struct.ScanOptions.html @@ -1,20 +1,46 @@ -ScanOptions in example_esplora - Rust
    pub struct ScanOptions {
    +ScanOptions in example_esplora - Rust

    Struct example_esplora::ScanOptions

    source ·
    pub struct ScanOptions {
         pub parallel_requests: usize,
    -}

    Fields§

    §parallel_requests: usize

    Max number of concurrent esplora server requests.

    -

    Trait Implementations§

    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Returns a copy of the value. Read more
    Performs copy-assignment from source. Read more
    Deprecated, replaced with CommandFactory::command
    Deprecated, replaced with CommandFactory::command_for_update
    Build a [Command] that can instantiate Self. Read more
    Build a [Command] that can update self. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Parse from std::env::args_os(), exit on error
    Parse from std::env::args_os(), return Err on error.
    Parse from iterator, exit on error
    Parse from iterator, return Err on error.
    Update from iterator, exit on error
    Update from iterator, return Err on error.
    This method tests for self and other values to be equal, and is used -by ==. Read more
    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -
    Instruments this type with the provided [Span], returning an -Instrumented wrapper. Read more
    Instruments this type with the current Span, returning an -Instrumented wrapper. Read more

    Calls U::from(self).

    +}

    Fields§

    §parallel_requests: usize

    Max number of concurrent esplora server requests.

    +

    Trait Implementations§

    source§

    impl Args for ScanOptions

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl Clone for ScanOptions

    source§

    fn clone(&self) -> ScanOptions

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    source§

    impl CommandFactory for ScanOptions

    source§

    fn into_app<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command
    source§

    fn into_app_for_update<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command_for_update
    §

    fn command<'help>() -> App<'help>

    Build a [Command] that can instantiate Self. Read more
    §

    fn command_for_update<'help>() -> App<'help>

    Build a [Command] that can update self. Read more
    source§

    impl Debug for ScanOptions

    source§

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

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

    impl FromArgMatches for ScanOptions

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Parser for ScanOptions

    §

    fn parse() -> Self

    Parse from std::env::args_os(), exit on error
    §

    fn try_parse() -> Result<Self, Error>

    Parse from std::env::args_os(), return Err on error.
    §

    fn parse_from<I, T>(itr: I) -> Self
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, exit on error
    §

    fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, return Err on error.
    §

    fn update_from<I, T>(&mut self, itr: I)
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, exit on error
    §

    fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, return Err on error.
    source§

    impl PartialEq for ScanOptions

    source§

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

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl StructuralPartialEq for ScanOptions

    Auto Trait Implementations§

    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> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    §

    impl<T> Instrument for T

    §

    fn instrument(self, span: Span) -> Instrumented<Self>

    Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
    §

    fn in_current_span(self) -> Instrumented<Self>

    Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
    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.

    -
    Converts self into a Left variant of Either<Self, Self> +From<T> for U chooses to do.

    +
    source§

    impl<T> IntoEither for T

    source§

    fn into_either(self, into_left: bool) -> Either<Self, Self>

    Converts self into a Left variant of Either<Self, Self> if into_left is true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    Converts self into a Left variant of Either<Self, Self> +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
    source§

    fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
    where + F: FnOnce(&Self) -> bool,

    Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. -Converts self into a Right variant of Either<Self, Self> -otherwise. Read more
    The resulting type after obtaining ownership.
    Creates owned data from borrowed data, usually by cloning. Read more
    Uses borrowed data to replace owned data, usually by cloning. Read more
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    Attaches the provided Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
    \ No newline at end of file +Converts self into a Right variant of Either<Self, Self> +otherwise. Read more
    source§

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

    §

    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>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    §

    impl<T> WithSubscriber for T

    §

    fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
    where + S: Into<Dispatch>,

    Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
    §

    fn with_current_subscriber(self) -> WithDispatch<Self>

    Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html index 4cfaffc9f9..f5b9f8ca41 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/example_esplora/type.ChangeSet.html @@ -1 +1 @@ -ChangeSet in example_esplora - Rust

    Type Definition example_esplora::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<Keychain>>);
    \ No newline at end of file +ChangeSet in example_esplora - Rust

    Type Alias example_esplora::ChangeSet

    source ·
    pub(crate) type ChangeSet = (ChangeSet, ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<Keychain>>);
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/help.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/help.html index 663fe26dfb..08ff977b9d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/help.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/help.html @@ -1 +1 @@ -Rustdoc help

    Rustdoc help

    Back
    \ No newline at end of file +Help

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.js deleted file mode 100644 index ef568dba87..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_bitcoind_rpc":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/chain_oracle/trait.ChainOracle.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/chain_oracle/trait.ChainOracle.js deleted file mode 100644 index 1a8211de1a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/chain_oracle/trait.ChainOracle.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/descriptor_ext/trait.DescriptorExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/descriptor_ext/trait.DescriptorExt.js deleted file mode 100644 index 1a8211de1a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/descriptor_ext/trait.DescriptorExt.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/indexed_tx_graph/trait.Indexer.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/indexed_tx_graph/trait.Indexer.js deleted file mode 100644 index 1a8211de1a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/indexed_tx_graph/trait.Indexer.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.Anchor.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.Anchor.js deleted file mode 100644 index 1a8211de1a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.Anchor.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.AnchorFromBlockPosition.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.AnchorFromBlockPosition.js deleted file mode 100644 index 1a8211de1a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.AnchorFromBlockPosition.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.Append.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.Append.js deleted file mode 100644 index 9b001ae654..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_chain/tx_data_traits/trait.Append.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[], -"bdk_wallet":[["impl Append for ChangeSet"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_electrum/electrum_ext/trait.ElectrumExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_electrum/electrum_ext/trait.ElectrumExt.js deleted file mode 100644 index 11e040008a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_electrum/electrum_ext/trait.ElectrumExt.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_electrum":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_esplora/async_ext/trait.EsploraAsyncExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_esplora/async_ext/trait.EsploraAsyncExt.js deleted file mode 100644 index 1f4be89de9..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_esplora/async_ext/trait.EsploraAsyncExt.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_esplora":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_esplora/blocking_ext/trait.EsploraExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_esplora/blocking_ext/trait.EsploraExt.js deleted file mode 100644 index 1f4be89de9..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_esplora/blocking_ext/trait.EsploraExt.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_esplora":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_persist/persist/trait.PersistBackend.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_persist/persist/trait.PersistBackend.js deleted file mode 100644 index dc8bb98d24..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_persist/persist/trait.PersistBackend.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"bdk_file_store":[["impl<C> PersistBackend<C> for Store<C>where
        C: Append + Serialize + DeserializeOwned + Send + Sync,
    "]], -"bdk_persist":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_tmp_plan/trait.CanDerive.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_tmp_plan/trait.CanDerive.js deleted file mode 100644 index d955c83b6e..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_tmp_plan/trait.CanDerive.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_tmp_plan":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/template/trait.DescriptorTemplate.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/template/trait.DescriptorTemplate.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/template/trait.DescriptorTemplate.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/trait.ExtractPolicy.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/trait.ExtractPolicy.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/trait.ExtractPolicy.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/trait.IntoWalletDescriptor.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/trait.IntoWalletDescriptor.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/descriptor/trait.IntoWalletDescriptor.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.DerivableKey.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.DerivableKey.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.DerivableKey.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.ExtScriptContext.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.ExtScriptContext.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.ExtScriptContext.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.GeneratableDefaultOptions.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.GeneratableDefaultOptions.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.GeneratableDefaultOptions.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.GeneratableKey.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.GeneratableKey.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.GeneratableKey.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.IntoDescriptorKey.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.IntoDescriptorKey.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/keys/trait.IntoDescriptorKey.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/psbt/trait.PsbtUtils.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/psbt/trait.PsbtUtils.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/psbt/trait.PsbtUtils.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.InputSigner.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.InputSigner.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.InputSigner.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.SignerCommon.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.SignerCommon.js deleted file mode 100644 index e2be123c6f..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.SignerCommon.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"bdk_hwi":[["impl SignerCommon for HWISigner"]], -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.TransactionSigner.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.TransactionSigner.js deleted file mode 100644 index 54cf1ae9be..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/signer/trait.TransactionSigner.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"bdk_hwi":[["impl TransactionSigner for HWISigner"]], -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/utils/trait.IsDust.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/utils/trait.IsDust.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bdk_wallet/wallet/utils/trait.IsDust.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js deleted file mode 100644 index 01ce8781c2..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl SerdeHash for DescriptorId"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/trait.Hash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/trait.Hash.js deleted file mode 100644 index feda1f6314..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/bitcoin_hashes/trait.Hash.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl Hash for DescriptorId"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Args.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Args.js deleted file mode 100644 index 80ad3cffa4..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Args.js +++ /dev/null @@ -1,7 +0,0 @@ -(function() {var implementors = { -"example_bitcoind_rpc_polling":[["impl Args for RpcArgs"]], -"example_cli":[["impl<CS: Subcommand, S: Args> Args for Args<CS, S>"]], -"example_electrum":[["impl Args for ElectrumArgs"],["impl Args for ScanOptions"]], -"example_esplora":[["impl Args for EsploraArgs"],["impl Args for ScanOptions"]], -"wallet_rpc":[["impl Args for Args"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.CommandFactory.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.CommandFactory.js deleted file mode 100644 index 254d9f382f..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.CommandFactory.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"example_cli":[["impl<CS: Subcommand, S: Args> CommandFactory for Args<CS, S>"]], -"example_electrum":[["impl CommandFactory for ScanOptions"]], -"example_esplora":[["impl CommandFactory for ScanOptions"]], -"wallet_rpc":[["impl CommandFactory for Args"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.FromArgMatches.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.FromArgMatches.js deleted file mode 100644 index 067371da9e..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.FromArgMatches.js +++ /dev/null @@ -1,7 +0,0 @@ -(function() {var implementors = { -"example_bitcoind_rpc_polling":[["impl FromArgMatches for RpcArgs"],["impl FromArgMatches for RpcCommands"]], -"example_cli":[["impl<CS: Subcommand, S: Args> FromArgMatches for Args<CS, S>"],["impl<CS: Subcommand, S: Args> FromArgMatches for Commands<CS, S>"],["impl FromArgMatches for AddressCmd"],["impl FromArgMatches for TxOutCmd"]], -"example_electrum":[["impl FromArgMatches for ElectrumCommands"],["impl FromArgMatches for ElectrumArgs"],["impl FromArgMatches for ScanOptions"]], -"example_esplora":[["impl FromArgMatches for EsploraCommands"],["impl FromArgMatches for EsploraArgs"],["impl FromArgMatches for ScanOptions"]], -"wallet_rpc":[["impl FromArgMatches for Args"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Parser.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Parser.js deleted file mode 100644 index ca49f8da5f..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Parser.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"example_cli":[["impl<CS: Subcommand, S: Args> Parser for Args<CS, S>"]], -"example_electrum":[["impl Parser for ScanOptions"]], -"example_esplora":[["impl Parser for ScanOptions"]], -"wallet_rpc":[["impl Parser for Args"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Subcommand.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Subcommand.js deleted file mode 100644 index 340cabee8e..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/clap/derive/trait.Subcommand.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"example_bitcoind_rpc_polling":[["impl Subcommand for RpcCommands"]], -"example_cli":[["impl<CS: Subcommand, S: Args> Subcommand for Commands<CS, S>"],["impl Subcommand for AddressCmd"],["impl Subcommand for TxOutCmd"]], -"example_electrum":[["impl Subcommand for ElectrumCommands"]], -"example_esplora":[["impl Subcommand for EsploraCommands"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/borrow/trait.Borrow.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/borrow/trait.Borrow.js deleted file mode 100644 index 06ec974d68..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/borrow/trait.Borrow.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl Borrow<[u8]> for DescriptorId"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/clone/trait.Clone.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/clone/trait.Clone.js deleted file mode 100644 index 5ffd443913..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/clone/trait.Clone.js +++ /dev/null @@ -1,10 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<I: Clone> Clone for SpkTxOutIndex<I>"],["impl<A: Clone> Clone for ChainPosition<A>"],["impl Clone for ConfirmationTime"],["impl Clone for BlockId"],["impl Clone for ConfirmationHeightAnchor"],["impl Clone for ConfirmationTimeHeightAnchor"],["impl<A: Clone> Clone for FullTxOut<A>"],["impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>"],["impl<K: Clone> Clone for ChangeSet<K>"],["impl<K: Clone> Clone for KeychainTxOutIndex<K>"],["impl Clone for Balance"],["impl Clone for CheckPoint"],["impl Clone for LocalChain"],["impl Clone for MissingGenesisError"],["impl Clone for AlterCheckPointError"],["impl Clone for CannotConnectError"],["impl Clone for ApplyHeaderError"],["impl<A: Clone> Clone for TxGraph<A>"],["impl<'a, T: Clone, A: Clone> Clone for TxNode<'a, T, A>"],["impl<'a, T: Clone, A: Clone> Clone for CanonicalTx<'a, T, A>"],["impl<A: Clone> Clone for ChangeSet<A>"],["impl Clone for DescriptorId"],["impl<D: Clone> Clone for SpkIterator<D>"]], -"bdk_coin_select":[["impl Clone for WeightedValue"],["impl Clone for CoinSelectorOpt"],["impl<'a> Clone for CoinSelector<'a>"],["impl Clone for SelectionError"],["impl Clone for SelectionConstraint"],["impl Clone for Selection"],["impl Clone for ExcessStrategyKind"],["impl Clone for ExcessStrategy"]], -"bdk_tmp_plan":[["impl<Ak: Clone> Clone for Requirements<Ak>"],["impl<Ak: Clone> Clone for RequiredSignatures<Ak>"],["impl Clone for SigningError"],["impl<Ak: Clone> Clone for PlanKey<Ak>"],["impl<AK: Clone> Clone for Plan<AK>"],["impl Clone for SatisfactionMaterial"],["impl<K: Clone> Clone for Assets<K>"]], -"bdk_wallet":[["impl Clone for PkOrF"],["impl Clone for SatisfiableItem"],["impl Clone for Satisfaction"],["impl Clone for Policy"],["impl Clone for Condition"],["impl<'a> Clone for BuildSatisfaction<'a>"],["impl Clone for ScriptContextEnum"],["impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>"],["impl Clone for PrivateKeyGenerateOptions"],["impl Clone for KeychainKind"],["impl Clone for LocalOutput"],["impl Clone for WeightedUtxo"],["impl Clone for Utxo"],["impl Clone for LargestFirstCoinSelection"],["impl Clone for OldestFirstCoinSelection"],["impl Clone for BranchAndBoundCoinSelection"],["impl Clone for SignerId"],["impl Clone for SignerContext"],["impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>"],["impl Clone for SignerOrdering"],["impl Clone for SignersContainer"],["impl Clone for SignOptions"],["impl Clone for TapLeavesOptions"],["impl Clone for CreateTx"],["impl Clone for BumpFee"],["impl<'a, Cs: Clone, Ctx> Clone for TxBuilder<'a, Cs, Ctx>"],["impl Clone for TxOrdering"],["impl Clone for ChangeSpendPolicy"],["impl Clone for MiniscriptPsbtError"],["impl Clone for Update"],["impl Clone for ChangeSet"]], -"example_bitcoind_rpc_polling":[["impl Clone for RpcArgs"],["impl Clone for RpcCommands"]], -"example_cli":[["impl<CS: Clone + Subcommand, S: Clone + Args> Clone for Commands<CS, S>"],["impl Clone for CoinSelectionAlgo"],["impl Clone for AddressCmd"],["impl Clone for TxOutCmd"],["impl Clone for Keychain"]], -"example_electrum":[["impl Clone for ElectrumCommands"],["impl Clone for ElectrumArgs"],["impl Clone for ScanOptions"]], -"example_esplora":[["impl Clone for EsploraCommands"],["impl Clone for EsploraArgs"],["impl Clone for ScanOptions"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Eq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Eq.js deleted file mode 100644 index adfdb5aaf4..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Eq.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A: Eq> Eq for ChainPosition<A>"],["impl Eq for ConfirmationTime"],["impl Eq for BlockId"],["impl Eq for ConfirmationHeightAnchor"],["impl Eq for ConfirmationTimeHeightAnchor"],["impl<A: Eq> Eq for FullTxOut<A>"],["impl Eq for Balance"],["impl<'a, T: Eq, A: Eq> Eq for TxNode<'a, T, A>"],["impl<'a, T: Eq, A: Eq> Eq for CanonicalTx<'a, T, A>"],["impl Eq for CalculateFeeError"],["impl Eq for DescriptorId"]], -"bdk_coin_select":[["impl Eq for SelectionConstraint"],["impl Eq for ExcessStrategyKind"]], -"bdk_wallet":[["impl Eq for PkOrF"],["impl Eq for SatisfiableItem"],["impl Eq for Satisfaction"],["impl Eq for Policy"],["impl Eq for Condition"],["impl Eq for PolicyError"],["impl Eq for ScriptContextEnum"],["impl Eq for KeychainKind"],["impl Eq for LocalOutput"],["impl Eq for WeightedUtxo"],["impl Eq for Utxo"],["impl Eq for SignerId"],["impl Eq for SignerContext"],["impl Eq for SignerOrdering"],["impl Eq for TapLeavesOptions"],["impl Eq for TxOrdering"],["impl Eq for ChangeSpendPolicy"],["impl Eq for AddressInfo"]], -"example_cli":[["impl Eq for Keychain"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Ord.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Ord.js deleted file mode 100644 index 0806c79b5c..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.Ord.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A: Ord> Ord for ChainPosition<A>"],["impl Ord for ConfirmationTime"],["impl Ord for BlockId"],["impl Ord for ConfirmationHeightAnchor"],["impl Ord for ConfirmationTimeHeightAnchor"],["impl<A: Ord> Ord for FullTxOut<A>"],["impl<'a, T: Ord, A: Ord> Ord for TxNode<'a, T, A>"],["impl<'a, T: Ord, A: Ord> Ord for CanonicalTx<'a, T, A>"],["impl Ord for DescriptorId"]], -"bdk_coin_select":[["impl Ord for ExcessStrategyKind"]], -"bdk_wallet":[["impl Ord for KeychainKind"],["impl Ord for SignerId"],["impl Ord for SignerOrdering"],["impl Ord for TxOrdering"],["impl Ord for ChangeSpendPolicy"]], -"example_cli":[["impl Ord for Keychain"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialEq.js deleted file mode 100644 index 512177f03f..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialEq.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A: PartialEq> PartialEq<ChainPosition<A>> for ChainPosition<A>"],["impl PartialEq<ConfirmationTime> for ConfirmationTime"],["impl PartialEq<BlockId> for BlockId"],["impl PartialEq<ConfirmationHeightAnchor> for ConfirmationHeightAnchor"],["impl PartialEq<ConfirmationTimeHeightAnchor> for ConfirmationTimeHeightAnchor"],["impl<A: PartialEq> PartialEq<FullTxOut<A>> for FullTxOut<A>"],["impl<A: PartialEq, IA: PartialEq> PartialEq<ChangeSet<A, IA>> for ChangeSet<A, IA>"],["impl<K: PartialEq> PartialEq<ChangeSet<K>> for ChangeSet<K>"],["impl PartialEq<Balance> for Balance"],["impl PartialEq<CheckPoint> for CheckPoint"],["impl PartialEq<LocalChain> for LocalChain"],["impl PartialEq<MissingGenesisError> for MissingGenesisError"],["impl PartialEq<AlterCheckPointError> for AlterCheckPointError"],["impl PartialEq<CannotConnectError> for CannotConnectError"],["impl PartialEq<ApplyHeaderError> for ApplyHeaderError"],["impl<A: PartialEq> PartialEq<TxGraph<A>> for TxGraph<A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq<TxNode<'a, T, A>> for TxNode<'a, T, A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq<CanonicalTx<'a, T, A>> for CanonicalTx<'a, T, A>"],["impl PartialEq<CalculateFeeError> for CalculateFeeError"],["impl<A: PartialEq> PartialEq<ChangeSet<A>> for ChangeSet<A>"],["impl PartialEq<DescriptorId> for DescriptorId"]], -"bdk_coin_select":[["impl PartialEq<SelectionConstraint> for SelectionConstraint"],["impl PartialEq<ExcessStrategyKind> for ExcessStrategyKind"]], -"bdk_wallet":[["impl PartialEq<PkOrF> for PkOrF"],["impl PartialEq<SatisfiableItem> for SatisfiableItem"],["impl PartialEq<Satisfaction> for Satisfaction"],["impl PartialEq<Policy> for Policy"],["impl PartialEq<Condition> for Condition"],["impl PartialEq<PolicyError> for PolicyError"],["impl PartialEq<ScriptContextEnum> for ScriptContextEnum"],["impl PartialEq<KeychainKind> for KeychainKind"],["impl PartialEq<LocalOutput> for LocalOutput"],["impl PartialEq<WeightedUtxo> for WeightedUtxo"],["impl PartialEq<Utxo> for Utxo"],["impl PartialEq<SignerId> for SignerId"],["impl PartialEq<SignerContext> for SignerContext"],["impl PartialEq<SignerOrdering> for SignerOrdering"],["impl PartialEq<TapLeavesOptions> for TapLeavesOptions"],["impl PartialEq<TxOrdering> for TxOrdering"],["impl PartialEq<ChangeSpendPolicy> for ChangeSpendPolicy"],["impl PartialEq<ChangeSet> for ChangeSet"],["impl PartialEq<AddressInfo> for AddressInfo"]], -"example_cli":[["impl PartialEq<Keychain> for Keychain"]], -"example_electrum":[["impl PartialEq<ScanOptions> for ScanOptions"]], -"example_esplora":[["impl PartialEq<ScanOptions> for ScanOptions"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialOrd.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialOrd.js deleted file mode 100644 index 68a8e1d3b4..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/cmp/trait.PartialOrd.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A: PartialOrd> PartialOrd<ChainPosition<A>> for ChainPosition<A>"],["impl PartialOrd<ConfirmationTime> for ConfirmationTime"],["impl PartialOrd<BlockId> for BlockId"],["impl PartialOrd<ConfirmationHeightAnchor> for ConfirmationHeightAnchor"],["impl PartialOrd<ConfirmationTimeHeightAnchor> for ConfirmationTimeHeightAnchor"],["impl<A: PartialOrd> PartialOrd<FullTxOut<A>> for FullTxOut<A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd<TxNode<'a, T, A>> for TxNode<'a, T, A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd<CanonicalTx<'a, T, A>> for CanonicalTx<'a, T, A>"],["impl PartialOrd<DescriptorId> for DescriptorId"]], -"bdk_coin_select":[["impl PartialOrd<ExcessStrategyKind> for ExcessStrategyKind"]], -"bdk_wallet":[["impl PartialOrd<Condition> for Condition"],["impl PartialOrd<KeychainKind> for KeychainKind"],["impl PartialOrd<SignerId> for SignerId"],["impl PartialOrd<SignerOrdering> for SignerOrdering"],["impl PartialOrd<TxOrdering> for TxOrdering"],["impl PartialOrd<ChangeSpendPolicy> for ChangeSpendPolicy"]], -"example_cli":[["impl PartialOrd<Keychain> for Keychain"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.AsRef.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.AsRef.js deleted file mode 100644 index 596d47c807..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.AsRef.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A> AsRef<TxGraph<A>> for TxGraph<A>"],["impl AsRef<[u8]> for DescriptorId"],["impl AsRef<[u8; 32]> for DescriptorId"]], -"bdk_wallet":[["impl AsRef<[u8]> for KeychainKind"],["impl AsRef<TxGraph<ConfirmationTimeHeightAnchor>> for Wallet"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js deleted file mode 100644 index 45651c4345..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/convert/trait.From.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl From<ChainPosition<ConfirmationTimeHeightAnchor>> for ConfirmationTime"],["impl From<(u32, BlockHash)> for BlockId"],["impl From<BlockId> for (u32, BlockHash)"],["impl From<(&u32, &BlockHash)> for BlockId"],["impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>"],["impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>"],["impl From<Hash> for DescriptorId"],["impl From<DescriptorId> for Hash"]], -"bdk_coin_select":[["impl From<usize> for BnbLimit"],["impl From<Duration> for BnbLimit"]], -"bdk_file_store":[["impl From<Error> for IterError"],["impl From<Error> for FileError"]], -"bdk_tmp_plan":[["impl From<Error> for SigningError"],["impl From<Error> for SigningError"]], -"bdk_wallet":[["impl From<KeyError> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<HexToBytesError> for Error"],["impl From<PolicyError> for Error"],["impl From<bool> for Satisfaction"],["impl From<SatisfiableItem> for Policy"],["impl<Ctx: ScriptContext> From<Xpub> for ExtendedKey<Ctx>"],["impl<Ctx: ScriptContext> From<Xpriv> for ExtendedKey<Ctx>"],["impl From<Error> for KeyError"],["impl From<Error> for KeyError"],["impl From<Hash> for SignerId"],["impl From<Fingerprint> for SignerId"],["impl From<Error> for SignerError"],["impl From<Error> for CreateTxError"],["impl From<PolicyError> for CreateTxError"],["impl From<MiniscriptPsbtError> for CreateTxError"],["impl From<Error> for CreateTxError"],["impl From<Error> for CreateTxError"],["impl From<FullScanResult<KeychainKind, ConfirmationTimeHeightAnchor>> for Update"],["impl From<SyncResult<ConfirmationTimeHeightAnchor>> for Update"],["impl From<BTreeMap<u32, Option<BlockHash>, Global>> for ChangeSet"],["impl From<ChangeSet<ConfirmationTimeHeightAnchor, ChangeSet<KeychainKind>>> for ChangeSet"]], -"example_bitcoind_rpc_polling":[["impl From<RpcArgs> for Auth"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/default/trait.Default.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/default/trait.Default.js deleted file mode 100644 index 8890b7f31a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/default/trait.Default.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<I> Default for SpkTxOutIndex<I>"],["impl Default for BlockId"],["impl Default for ConfirmationHeightAnchor"],["impl Default for ConfirmationTimeHeightAnchor"],["impl<A, I: Default> Default for IndexedTxGraph<A, I>"],["impl<A, IA: Default> Default for ChangeSet<A, IA>"],["impl<K> Default for ChangeSet<K>"],["impl<K> Default for KeychainTxOutIndex<K>"],["impl Default for Balance"],["impl<A> Default for TxGraph<A>"],["impl<A> Default for ChangeSet<A>"]], -"bdk_tmp_plan":[["impl<Ak> Default for RequiredSignatures<Ak>"],["impl<Ak> Default for Requirements<Ak>"],["impl Default for SatisfactionMaterial"],["impl<K> Default for Assets<K>"]], -"bdk_wallet":[["impl Default for Condition"],["impl Default for PrivateKeyGenerateOptions"],["impl Default for LargestFirstCoinSelection"],["impl Default for OldestFirstCoinSelection"],["impl Default for BranchAndBoundCoinSelection"],["impl Default for SignerOrdering"],["impl Default for SignersContainer"],["impl Default for TapLeavesOptions"],["impl Default for SignOptions"],["impl Default for CreateTx"],["impl Default for BumpFee"],["impl Default for TxOrdering"],["impl Default for ChangeSpendPolicy"],["impl Default for Update"],["impl Default for ChangeSet"]], -"example_cli":[["impl Default for CoinSelectionAlgo"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/error/trait.Error.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/error/trait.Error.js deleted file mode 100644 index 731f5b687f..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/error/trait.Error.js +++ /dev/null @@ -1,7 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl Error for MissingGenesisError"],["impl Error for AlterCheckPointError"],["impl Error for CannotConnectError"],["impl Error for ApplyHeaderError"],["impl Error for CalculateFeeError"]], -"bdk_coin_select":[["impl Error for SelectionError"]], -"bdk_file_store":[["impl Error for IterError"],["impl<C: Debug> Error for AggregateChangesetsError<C>"],["impl Error for FileError"]], -"bdk_tmp_plan":[["impl Error for SigningError"]], -"bdk_wallet":[["impl Error for Error"],["impl Error for PolicyError"],["impl Error for KeyError"],["impl Error for Error"],["impl Error for SignerError"],["impl Error for AddUtxoError"],["impl Error for AddForeignUtxoError"],["impl Error for AllowShrinkingError"],["impl Error for MiniscriptPsbtError"],["impl Error for CreateTxError"],["impl Error for BuildFeeBumpError"],["impl Error for NewError"],["impl Error for LoadError"],["impl Error for NewOrLoadError"],["impl Error for InsertTxError"],["impl Error for ApplyBlockError"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Debug.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Debug.js deleted file mode 100644 index 26dfb1436c..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Debug.js +++ /dev/null @@ -1,15 +0,0 @@ -(function() {var implementors = { -"bdk_bitcoind_rpc":[["impl<B: Debug> Debug for BlockEvent<B>"]], -"bdk_chain":[["impl<I: Debug> Debug for SpkTxOutIndex<I>"],["impl<A: Debug> Debug for ChainPosition<A>"],["impl Debug for ConfirmationTime"],["impl Debug for BlockId"],["impl Debug for ConfirmationHeightAnchor"],["impl Debug for ConfirmationTimeHeightAnchor"],["impl<A: Debug> Debug for FullTxOut<A>"],["impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>"],["impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>"],["impl<K: Debug> Debug for ChangeSet<K>"],["impl<K: Debug> Debug for KeychainTxOutIndex<K>"],["impl Debug for Balance"],["impl Debug for CheckPoint"],["impl Debug for LocalChain"],["impl Debug for MissingGenesisError"],["impl Debug for AlterCheckPointError"],["impl Debug for CannotConnectError"],["impl Debug for ApplyHeaderError"],["impl<A: Debug> Debug for TxGraph<A>"],["impl<'a, T: Debug, A: Debug> Debug for TxNode<'a, T, A>"],["impl<'a, T: Debug, A: Debug> Debug for CanonicalTx<'a, T, A>"],["impl Debug for CalculateFeeError"],["impl<A: Debug> Debug for ChangeSet<A>"],["impl Debug for DescriptorId"]], -"bdk_coin_select":[["impl Debug for WeightedValue"],["impl Debug for CoinSelectorOpt"],["impl<'a> Debug for CoinSelector<'a>"],["impl Debug for SelectionError"],["impl Debug for SelectionConstraint"],["impl Debug for Selection"],["impl Debug for ExcessStrategyKind"],["impl Debug for ExcessStrategy"]], -"bdk_file_store":[["impl Debug for IterError"],["impl<C> Debug for Store<C>where
        C: Sync + Send + Debug,
    "],["impl<C: Debug> Debug for AggregateChangesetsError<C>"],["impl Debug for FileError"]], -"bdk_hwi":[["impl Debug for HWISigner"]], -"bdk_persist":[["impl<C: Debug> Debug for Persist<C>"]], -"bdk_tmp_plan":[["impl<Ak: Debug> Debug for Requirements<Ak>"],["impl<Ak: Debug> Debug for RequiredSignatures<Ak>"],["impl Debug for SigningError"],["impl<Ak: Debug> Debug for PlanKey<Ak>"],["impl<AK: Debug> Debug for Plan<AK>"],["impl Debug for SatisfactionMaterial"],["impl<K: Debug> Debug for Assets<K>"]], -"bdk_wallet":[["impl Debug for Error"],["impl Debug for PkOrF"],["impl Debug for SatisfiableItem"],["impl Debug for Satisfaction"],["impl Debug for Policy"],["impl Debug for Condition"],["impl Debug for PolicyError"],["impl<'a> Debug for BuildSatisfaction<'a>"],["impl<Ctx: Debug + ScriptContext> Debug for DescriptorKey<Ctx>"],["impl Debug for ScriptContextEnum"],["impl Debug for PrivateKeyGenerateOptions"],["impl Debug for KeyError"],["impl Debug for KeychainKind"],["impl Debug for LocalOutput"],["impl Debug for WeightedUtxo"],["impl Debug for Utxo"],["impl Debug for Error"],["impl Debug for Excess"],["impl Debug for CoinSelectionResult"],["impl Debug for LargestFirstCoinSelection"],["impl Debug for OldestFirstCoinSelection"],["impl Debug for BranchAndBoundCoinSelection"],["impl Debug for FullyNodedExport"],["impl Debug for SignerId"],["impl Debug for SignerError"],["impl Debug for SignerContext"],["impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>"],["impl Debug for SignerOrdering"],["impl Debug for SignersContainer"],["impl Debug for SignOptions"],["impl Debug for TapLeavesOptions"],["impl Debug for CreateTx"],["impl Debug for BumpFee"],["impl<'a, Cs: Debug, Ctx: Debug> Debug for TxBuilder<'a, Cs, Ctx>"],["impl Debug for AddUtxoError"],["impl Debug for AddForeignUtxoError"],["impl Debug for AllowShrinkingError"],["impl Debug for TxOrdering"],["impl Debug for ChangeSpendPolicy"],["impl Debug for MiniscriptPsbtError"],["impl Debug for CreateTxError"],["impl Debug for BuildFeeBumpError"],["impl Debug for Wallet"],["impl Debug for Update"],["impl Debug for ChangeSet"],["impl Debug for AddressInfo"],["impl Debug for NewError"],["impl Debug for LoadError"],["impl Debug for NewOrLoadError"],["impl Debug for InsertTxError"],["impl Debug for ApplyBlockError"]], -"example_bitcoind_rpc_polling":[["impl Debug for Emission"],["impl Debug for RpcArgs"],["impl Debug for RpcCommands"]], -"example_cli":[["impl<CS: Debug + Subcommand, S: Debug + Args> Debug for Commands<CS, S>"],["impl Debug for CoinSelectionAlgo"],["impl Debug for AddressCmd"],["impl Debug for TxOutCmd"],["impl Debug for Keychain"]], -"example_electrum":[["impl Debug for ElectrumCommands"],["impl Debug for ElectrumArgs"],["impl Debug for ScanOptions"]], -"example_esplora":[["impl Debug for EsploraCommands"],["impl Debug for EsploraArgs"],["impl Debug for ScanOptions"]], -"wallet_rpc":[["impl Debug for Args"],["impl Debug for Emission"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Display.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Display.js deleted file mode 100644 index 58d7c3c703..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.Display.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl Display for Balance"],["impl Display for MissingGenesisError"],["impl Display for AlterCheckPointError"],["impl Display for CannotConnectError"],["impl Display for ApplyHeaderError"],["impl Display for CalculateFeeError"],["impl Display for DescriptorId"]], -"bdk_coin_select":[["impl Display for SelectionError"],["impl Display for SelectionConstraint"],["impl Display for ExcessStrategyKind"]], -"bdk_file_store":[["impl Display for IterError"],["impl<C> Display for AggregateChangesetsError<C>"],["impl Display for FileError"]], -"bdk_tmp_plan":[["impl Display for SigningError"]], -"bdk_wallet":[["impl Display for Error"],["impl Display for PolicyError"],["impl Display for KeyError"],["impl Display for Error"],["impl Display for FullyNodedExport"],["impl Display for SignerError"],["impl Display for AddUtxoError"],["impl Display for AddForeignUtxoError"],["impl Display for AllowShrinkingError"],["impl Display for MiniscriptPsbtError"],["impl Display for CreateTxError"],["impl Display for BuildFeeBumpError"],["impl Display for AddressInfo"],["impl Display for NewError"],["impl Display for LoadError"],["impl Display for NewOrLoadError"],["impl Display for InsertTxError"],["impl Display for ApplyBlockError"]], -"example_cli":[["impl Display for CoinSelectionAlgo"],["impl Display for Keychain"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.LowerHex.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.LowerHex.js deleted file mode 100644 index afa0c3fa90..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.LowerHex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl LowerHex for DescriptorId"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.UpperHex.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.UpperHex.js deleted file mode 100644 index fb5a7a8e66..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/fmt/trait.UpperHex.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl UpperHex for DescriptorId"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/hash/trait.Hash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/hash/trait.Hash.js deleted file mode 100644 index 065747e4c9..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/hash/trait.Hash.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A: Hash> Hash for ChainPosition<A>"],["impl Hash for ConfirmationTime"],["impl Hash for BlockId"],["impl Hash for ConfirmationHeightAnchor"],["impl Hash for ConfirmationTimeHeightAnchor"],["impl Hash for DescriptorId"]], -"bdk_coin_select":[["impl Hash for ExcessStrategyKind"]], -"bdk_wallet":[["impl Hash for PkOrF"],["impl Hash for Condition"],["impl Hash for KeychainKind"],["impl Hash for LocalOutput"],["impl Hash for SignerId"],["impl Hash for TxOrdering"],["impl Hash for ChangeSpendPolicy"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/iter/traits/collect/trait.IntoIterator.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/iter/traits/collect/trait.IntoIterator.js deleted file mode 100644 index 8b097e3f40..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/iter/traits/collect/trait.IntoIterator.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl IntoIterator for CheckPoint"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/iter/traits/iterator/trait.Iterator.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/iter/traits/iterator/trait.Iterator.js deleted file mode 100644 index 697c4325aa..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/iter/traits/iterator/trait.Iterator.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl Iterator for CheckPointIter"],["impl<'g, A, F, O> Iterator for TxAncestors<'g, A, F>where
        F: FnMut(usize, Arc<Transaction>) -> Option<O>,
    "],["impl<'g, A, F, O> Iterator for TxDescendants<'g, A, F>where
        F: FnMut(usize, Txid) -> Option<O>,
    "],["impl<D> Iterator for SpkIterator<D>where
        D: Borrow<Descriptor<DescriptorPublicKey>>,
    "]], -"bdk_coin_select":[["impl<'c, 'f, S: Ord + Copy + Display> Iterator for BnbIter<'c, 'f, S>"]], -"bdk_file_store":[["impl<'t, T> Iterator for EntryIter<'t, T>where
        T: DeserializeOwned,
    "]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Copy.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Copy.js deleted file mode 100644 index a80e0f1201..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Copy.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A: Copy> Copy for ChainPosition<A>"],["impl Copy for ConfirmationTime"],["impl Copy for BlockId"],["impl Copy for ConfirmationHeightAnchor"],["impl Copy for ConfirmationTimeHeightAnchor"],["impl Copy for DescriptorId"]], -"bdk_coin_select":[["impl Copy for WeightedValue"],["impl Copy for CoinSelectorOpt"],["impl Copy for SelectionConstraint"],["impl Copy for ExcessStrategyKind"],["impl Copy for ExcessStrategy"]], -"bdk_wallet":[["impl Copy for Condition"],["impl<'a> Copy for BuildSatisfaction<'a>"],["impl Copy for ScriptContextEnum"],["impl Copy for PrivateKeyGenerateOptions"],["impl Copy for KeychainKind"],["impl Copy for LargestFirstCoinSelection"],["impl Copy for OldestFirstCoinSelection"],["impl Copy for SignerContext"],["impl Copy for TxOrdering"],["impl Copy for ChangeSpendPolicy"]], -"example_cli":[["impl Copy for Keychain"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Freeze.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Freeze.js deleted file mode 100644 index b976ded3d2..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Freeze.js +++ /dev/null @@ -1,17 +0,0 @@ -(function() {var implementors = { -"bdk_bitcoind_rpc":[["impl<'c, C> Freeze for Emitter<'c, C>",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Freeze for BlockEvent<B>where
        B: Freeze,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> Freeze for SpkTxOutIndex<I>",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Freeze for ChainPosition<A>where
        A: Freeze,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Freeze for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Freeze for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Freeze for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Freeze for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Freeze for FullTxOut<A>where
        A: Freeze,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Freeze for IndexedTxGraph<A, I>where
        I: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Freeze for ChangeSet<A, IA>where
        IA: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Freeze for ChangeSet<K>",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Freeze for KeychainTxOutIndex<K>",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl Freeze for Balance",1,["bdk_chain::keychain::Balance"]],["impl Freeze for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Freeze for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Freeze for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Freeze for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Freeze for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Freeze for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Freeze for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Freeze for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Freeze for TxNode<'a, T, A>where
        T: Freeze,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Freeze for CanonicalTx<'a, T, A>where
        T: Freeze,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Freeze for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Freeze for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Freeze for TxAncestors<'g, A, F>where
        F: Freeze,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Freeze for TxDescendants<'g, A, F>where
        F: Freeze,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl Freeze for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> Freeze for SpkIterator<D>where
        D: Freeze,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Freeze for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Freeze for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Freeze for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Freeze for FullScanResult<K, A>",1,["bdk_chain::spk_client::FullScanResult"]]], -"bdk_coin_select":[["impl Freeze for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl Freeze for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> Freeze for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl Freeze for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Freeze for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Freeze for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Freeze for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Freeze for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Freeze for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> Freeze for Bnb<'c, S>where
        S: Freeze,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> Freeze for BnbIter<'c, 'f, S>where
        S: Freeze,
    ",1,["bdk_coin_select::bnb::BnbIter"]],["impl Freeze for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], -"bdk_electrum":[["impl<K> Freeze for ElectrumFullScanResult<K>",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]],["impl Freeze for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]]], -"bdk_file_store":[["impl<'t, T> Freeze for EntryIter<'t, T>",1,["bdk_file_store::entry_iter::EntryIter"]],["impl Freeze for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> Freeze for Store<C>",1,["bdk_file_store::store::Store"]],["impl<C> Freeze for AggregateChangesetsError<C>where
        C: Freeze,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl Freeze for FileError",1,["bdk_file_store::FileError"]]], -"bdk_hwi":[["impl Freeze for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_persist":[["impl<C> Freeze for Persist<C>where
        C: Freeze,
    ",1,["bdk_persist::persist::Persist"]]], -"bdk_testenv":[["impl !Freeze for TestEnv",1,["bdk_testenv::TestEnv"]]], -"bdk_tmp_plan":[["impl<Ak> Freeze for Requirements<Ak>where
        Ak: Freeze,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<Ak> Freeze for RequiredSignatures<Ak>where
        Ak: Freeze,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl Freeze for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl<Ak> Freeze for PlanKey<Ak>where
        Ak: Freeze,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<AK> !Freeze for Plan<AK>",1,["bdk_tmp_plan::Plan"]],["impl Freeze for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<Ak> Freeze for PlanState<Ak>where
        Ak: Freeze,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<K> Freeze for Assets<K>",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl Freeze for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Freeze for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Freeze for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Freeze for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Freeze for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Freeze for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Freeze for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl<'a> Freeze for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<K> Freeze for P2Pkh<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Freeze for P2Wpkh_P2Sh<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Freeze for P2Wpkh<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Freeze for P2TR<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Freeze for Bip44<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Freeze for Bip44Public<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Freeze for Bip49<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Freeze for Bip49Public<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Freeze for Bip84<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Freeze for Bip84Public<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Freeze for Bip86<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Freeze for Bip86Public<K>where
        K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<Ctx> Freeze for DescriptorKey<Ctx>",1,["bdk_wallet::keys::DescriptorKey"]],["impl Freeze for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl<Ctx> Freeze for ExtendedKey<Ctx>",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>where
        K: Freeze,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl Freeze for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Freeze for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Freeze for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Freeze for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Freeze for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Freeze for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Freeze for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Freeze for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Freeze for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Freeze for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Freeze for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Freeze for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Freeze for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Freeze for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Freeze for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Freeze for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl<S> Freeze for SignerWrapper<S>where
        S: Freeze,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]],["impl Freeze for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Freeze for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Freeze for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Freeze for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Freeze for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl Freeze for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> Freeze for TxBuilder<'a, Cs, Ctx>where
        Cs: Freeze,
    ",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl Freeze for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Freeze for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Freeze for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl Freeze for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Freeze for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Freeze for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Freeze for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Freeze for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Freeze for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Freeze for Update",1,["bdk_wallet::wallet::Update"]],["impl Freeze for ChangeSet",1,["bdk_wallet::wallet::ChangeSet"]],["impl Freeze for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Freeze for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Freeze for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl !Freeze for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Freeze for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl Freeze for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]]], -"example_bitcoind_rpc_polling":[["impl Freeze for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Freeze for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]],["impl Freeze for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]]], -"example_cli":[["impl<CS, S> Freeze for Args<CS, S>where
        CS: Freeze,
        S: Freeze,
    ",1,["example_cli::Args"]],["impl<CS, S> Freeze for Commands<CS, S>where
        CS: Freeze,
        S: Freeze,
    ",1,["example_cli::Commands"]],["impl Freeze for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Freeze for AddressCmd",1,["example_cli::AddressCmd"]],["impl Freeze for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Freeze for Keychain",1,["example_cli::Keychain"]],["impl Freeze for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S, C> !Freeze for Init<CS, S, C>",1,["example_cli::Init"]]], -"example_electrum":[["impl Freeze for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Freeze for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Freeze for ScanOptions",1,["example_electrum::ScanOptions"]]], -"example_esplora":[["impl Freeze for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl Freeze for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl Freeze for ScanOptions",1,["example_esplora::ScanOptions"]]], -"wallet_rpc":[["impl Freeze for Args",1,["wallet_rpc::Args"]],["impl Freeze for Emission",1,["wallet_rpc::Emission"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Send.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Send.js deleted file mode 100644 index fa5911c1fc..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Send.js +++ /dev/null @@ -1,17 +0,0 @@ -(function() {var implementors = { -"bdk_bitcoind_rpc":[["impl<'c, C> Send for Emitter<'c, C>where
        C: Sync,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Send for BlockEvent<B>where
        B: Send,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> Send for SpkTxOutIndex<I>where
        I: Send,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Send for ChainPosition<A>where
        A: Send,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Send for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Send for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Send for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Send for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Send for FullTxOut<A>where
        A: Send,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Send for IndexedTxGraph<A, I>where
        A: Send,
        I: Send,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Send for ChangeSet<A, IA>where
        A: Send,
        IA: Send,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Send for ChangeSet<K>where
        K: Send,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Send for KeychainTxOutIndex<K>where
        K: Send,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl Send for Balance",1,["bdk_chain::keychain::Balance"]],["impl Send for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Send for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Send for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Send for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Send for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Send for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Send for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Send for TxGraph<A>where
        A: Send,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Send for TxNode<'a, T, A>where
        A: Sync,
        T: Send,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Send for CanonicalTx<'a, T, A>where
        A: Sync,
        T: Send,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Send for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Send for ChangeSet<A>where
        A: Send,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Send for TxAncestors<'g, A, F>where
        A: Sync,
        F: Send,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Send for TxDescendants<'g, A, F>where
        A: Sync,
        F: Send,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl Send for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> Send for SpkIterator<D>where
        D: Send,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Send for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Send for SyncResult<A>where
        A: Send,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Send for FullScanRequest<K>where
        K: Send,
    ",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Send for FullScanResult<K, A>where
        A: Send,
        K: Send,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], -"bdk_coin_select":[["impl Send for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl Send for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> Send for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl Send for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Send for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Send for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Send for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Send for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Send for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> Send for Bnb<'c, S>where
        S: Send,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> !Send for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl Send for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], -"bdk_electrum":[["impl<K> Send for ElectrumFullScanResult<K>where
        K: Send,
    ",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]],["impl Send for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]]], -"bdk_file_store":[["impl<'t, T> Send for EntryIter<'t, T>where
        T: Send,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl Send for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> Send for Store<C>",1,["bdk_file_store::store::Store"]],["impl<C> Send for AggregateChangesetsError<C>where
        C: Send,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl Send for FileError",1,["bdk_file_store::FileError"]]], -"bdk_hwi":[["impl Send for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_persist":[["impl<C> Send for Persist<C>where
        C: Send,
    ",1,["bdk_persist::persist::Persist"]]], -"bdk_testenv":[["impl Send for TestEnv",1,["bdk_testenv::TestEnv"]]], -"bdk_tmp_plan":[["impl<Ak> Send for Requirements<Ak>where
        Ak: Send,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<Ak> Send for RequiredSignatures<Ak>where
        Ak: Send,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl Send for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl<Ak> Send for PlanKey<Ak>where
        Ak: Send,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<AK> Send for Plan<AK>where
        AK: Send,
    ",1,["bdk_tmp_plan::Plan"]],["impl Send for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<Ak> Send for PlanState<Ak>where
        Ak: Send,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<K> Send for Assets<K>where
        K: Send,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl Send for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Send for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Send for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Send for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Send for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Send for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Send for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl<'a> Send for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<K> Send for P2Pkh<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Send for P2Wpkh_P2Sh<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Send for P2Wpkh<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Send for P2TR<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Send for Bip44<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Send for Bip44Public<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Send for Bip49<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Send for Bip49Public<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Send for Bip84<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Send for Bip84Public<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Send for Bip86<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Send for Bip86Public<K>where
        K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<Ctx> Send for DescriptorKey<Ctx>where
        Ctx: Send,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl Send for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl<Ctx> Send for ExtendedKey<Ctx>where
        Ctx: Send,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K, Ctx> Send for GeneratedKey<K, Ctx>where
        Ctx: Send,
        K: Send,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl Send for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Send for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Send for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Send for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Send for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Send for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Send for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Send for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Send for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Send for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Send for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Send for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Send for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Send for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Send for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Send for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl<S> Send for SignerWrapper<S>where
        S: Send,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]],["impl Send for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Send for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Send for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Send for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Send for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl Send for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> !Send for TxBuilder<'a, Cs, Ctx>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl Send for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Send for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Send for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl Send for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Send for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Send for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Send for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Send for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Send for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Send for Update",1,["bdk_wallet::wallet::Update"]],["impl Send for ChangeSet",1,["bdk_wallet::wallet::ChangeSet"]],["impl Send for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Send for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Send for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Send for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Send for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl Send for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]]], -"example_bitcoind_rpc_polling":[["impl Send for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Send for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]],["impl Send for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]]], -"example_cli":[["impl<CS, S> Send for Args<CS, S>where
        CS: Send,
        S: Send,
    ",1,["example_cli::Args"]],["impl<CS, S> Send for Commands<CS, S>where
        CS: Send,
        S: Send,
    ",1,["example_cli::Commands"]],["impl Send for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Send for AddressCmd",1,["example_cli::AddressCmd"]],["impl Send for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Send for Keychain",1,["example_cli::Keychain"]],["impl Send for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S, C> Send for Init<CS, S, C>where
        C: Send,
        CS: Send,
        S: Send,
    ",1,["example_cli::Init"]]], -"example_electrum":[["impl Send for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Send for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Send for ScanOptions",1,["example_electrum::ScanOptions"]]], -"example_esplora":[["impl Send for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl Send for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl Send for ScanOptions",1,["example_esplora::ScanOptions"]]], -"wallet_rpc":[["impl Send for Args",1,["wallet_rpc::Args"]],["impl Send for Emission",1,["wallet_rpc::Emission"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralEq.js deleted file mode 100644 index defca81edd..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralEq.js +++ /dev/null @@ -1,6 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A> StructuralEq for ChainPosition<A>"],["impl StructuralEq for ConfirmationTime"],["impl StructuralEq for BlockId"],["impl StructuralEq for ConfirmationHeightAnchor"],["impl StructuralEq for ConfirmationTimeHeightAnchor"],["impl<A> StructuralEq for FullTxOut<A>"],["impl StructuralEq for Balance"],["impl<'a, T, A> StructuralEq for TxNode<'a, T, A>"],["impl<'a, T, A> StructuralEq for CanonicalTx<'a, T, A>"],["impl StructuralEq for CalculateFeeError"],["impl StructuralEq for DescriptorId"]], -"bdk_coin_select":[["impl StructuralEq for SelectionConstraint"],["impl StructuralEq for ExcessStrategyKind"]], -"bdk_wallet":[["impl StructuralEq for PkOrF"],["impl StructuralEq for SatisfiableItem"],["impl StructuralEq for Satisfaction"],["impl StructuralEq for Policy"],["impl StructuralEq for Condition"],["impl StructuralEq for PolicyError"],["impl StructuralEq for ScriptContextEnum"],["impl StructuralEq for KeychainKind"],["impl StructuralEq for LocalOutput"],["impl StructuralEq for WeightedUtxo"],["impl StructuralEq for Utxo"],["impl StructuralEq for SignerId"],["impl StructuralEq for SignerContext"],["impl StructuralEq for SignerOrdering"],["impl StructuralEq for TapLeavesOptions"],["impl StructuralEq for TxOrdering"],["impl StructuralEq for ChangeSpendPolicy"],["impl StructuralEq for AddressInfo"]], -"example_cli":[["impl StructuralEq for Keychain"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralPartialEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralPartialEq.js deleted file mode 100644 index f8cee7410e..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.StructuralPartialEq.js +++ /dev/null @@ -1,8 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<A> StructuralPartialEq for ChainPosition<A>"],["impl StructuralPartialEq for ConfirmationTime"],["impl StructuralPartialEq for BlockId"],["impl StructuralPartialEq for ConfirmationHeightAnchor"],["impl StructuralPartialEq for ConfirmationTimeHeightAnchor"],["impl<A> StructuralPartialEq for FullTxOut<A>"],["impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>"],["impl<K> StructuralPartialEq for ChangeSet<K>"],["impl StructuralPartialEq for Balance"],["impl StructuralPartialEq for LocalChain"],["impl StructuralPartialEq for MissingGenesisError"],["impl StructuralPartialEq for AlterCheckPointError"],["impl StructuralPartialEq for CannotConnectError"],["impl StructuralPartialEq for ApplyHeaderError"],["impl<A> StructuralPartialEq for TxGraph<A>"],["impl<'a, T, A> StructuralPartialEq for TxNode<'a, T, A>"],["impl<'a, T, A> StructuralPartialEq for CanonicalTx<'a, T, A>"],["impl StructuralPartialEq for CalculateFeeError"],["impl<A> StructuralPartialEq for ChangeSet<A>"],["impl StructuralPartialEq for DescriptorId"]], -"bdk_coin_select":[["impl StructuralPartialEq for SelectionConstraint"],["impl StructuralPartialEq for ExcessStrategyKind"]], -"bdk_wallet":[["impl StructuralPartialEq for PkOrF"],["impl StructuralPartialEq for SatisfiableItem"],["impl StructuralPartialEq for Satisfaction"],["impl StructuralPartialEq for Policy"],["impl StructuralPartialEq for Condition"],["impl StructuralPartialEq for PolicyError"],["impl StructuralPartialEq for ScriptContextEnum"],["impl StructuralPartialEq for KeychainKind"],["impl StructuralPartialEq for LocalOutput"],["impl StructuralPartialEq for WeightedUtxo"],["impl StructuralPartialEq for Utxo"],["impl StructuralPartialEq for SignerId"],["impl StructuralPartialEq for SignerContext"],["impl StructuralPartialEq for SignerOrdering"],["impl StructuralPartialEq for TapLeavesOptions"],["impl StructuralPartialEq for TxOrdering"],["impl StructuralPartialEq for ChangeSpendPolicy"],["impl StructuralPartialEq for ChangeSet"],["impl StructuralPartialEq for AddressInfo"]], -"example_cli":[["impl StructuralPartialEq for Keychain"]], -"example_electrum":[["impl StructuralPartialEq for ScanOptions"]], -"example_esplora":[["impl StructuralPartialEq for ScanOptions"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Sync.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Sync.js deleted file mode 100644 index b119c3bf40..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Sync.js +++ /dev/null @@ -1,17 +0,0 @@ -(function() {var implementors = { -"bdk_bitcoind_rpc":[["impl<'c, C> Sync for Emitter<'c, C>where
        C: Sync,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Sync for BlockEvent<B>where
        B: Sync,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> Sync for SpkTxOutIndex<I>where
        I: Sync,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Sync for ChainPosition<A>where
        A: Sync,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Sync for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Sync for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Sync for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Sync for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Sync for FullTxOut<A>where
        A: Sync,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Sync for IndexedTxGraph<A, I>where
        A: Sync,
        I: Sync,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Sync for ChangeSet<A, IA>where
        A: Sync,
        IA: Sync,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Sync for ChangeSet<K>where
        K: Sync,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Sync for KeychainTxOutIndex<K>where
        K: Sync,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl Sync for Balance",1,["bdk_chain::keychain::Balance"]],["impl Sync for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Sync for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Sync for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Sync for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Sync for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Sync for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Sync for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Sync for TxGraph<A>where
        A: Sync,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Sync for TxNode<'a, T, A>where
        A: Sync,
        T: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Sync for CanonicalTx<'a, T, A>where
        A: Sync,
        T: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Sync for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Sync for ChangeSet<A>where
        A: Sync,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Sync for TxAncestors<'g, A, F>where
        A: Sync,
        F: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Sync for TxDescendants<'g, A, F>where
        A: Sync,
        F: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl Sync for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> Sync for SpkIterator<D>where
        D: Sync,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !Sync for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Sync for SyncResult<A>where
        A: Sync,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !Sync for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Sync for FullScanResult<K, A>where
        A: Sync,
        K: Sync,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], -"bdk_coin_select":[["impl Sync for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl Sync for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> Sync for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl Sync for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Sync for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Sync for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Sync for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Sync for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Sync for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> Sync for Bnb<'c, S>where
        S: Sync,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> !Sync for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl Sync for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], -"bdk_electrum":[["impl<K> Sync for ElectrumFullScanResult<K>where
        K: Sync,
    ",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]],["impl Sync for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]]], -"bdk_file_store":[["impl<'t, T> Sync for EntryIter<'t, T>where
        T: Sync,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl Sync for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> Sync for Store<C>",1,["bdk_file_store::store::Store"]],["impl<C> Sync for AggregateChangesetsError<C>where
        C: Sync,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl Sync for FileError",1,["bdk_file_store::FileError"]]], -"bdk_hwi":[["impl Sync for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_persist":[["impl<C> Sync for Persist<C>where
        C: Sync,
    ",1,["bdk_persist::persist::Persist"]]], -"bdk_testenv":[["impl Sync for TestEnv",1,["bdk_testenv::TestEnv"]]], -"bdk_tmp_plan":[["impl<Ak> Sync for Requirements<Ak>where
        Ak: Sync,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<Ak> Sync for RequiredSignatures<Ak>where
        Ak: Sync,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl Sync for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl<Ak> Sync for PlanKey<Ak>where
        Ak: Sync,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<AK> Sync for Plan<AK>where
        AK: Sync,
    ",1,["bdk_tmp_plan::Plan"]],["impl Sync for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<Ak> Sync for PlanState<Ak>where
        Ak: Sync,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<K> Sync for Assets<K>where
        K: Sync,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl Sync for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Sync for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Sync for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Sync for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Sync for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Sync for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Sync for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl<'a> Sync for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<K> Sync for P2Pkh<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Sync for P2Wpkh_P2Sh<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Sync for P2Wpkh<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Sync for P2TR<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Sync for Bip44<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Sync for Bip44Public<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Sync for Bip49<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Sync for Bip49Public<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Sync for Bip84<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Sync for Bip84Public<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Sync for Bip86<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Sync for Bip86Public<K>where
        K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<Ctx> Sync for DescriptorKey<Ctx>where
        Ctx: Sync,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl Sync for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl<Ctx> Sync for ExtendedKey<Ctx>where
        Ctx: Sync,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K, Ctx> Sync for GeneratedKey<K, Ctx>where
        Ctx: Sync,
        K: Sync,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl Sync for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Sync for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Sync for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Sync for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Sync for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Sync for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Sync for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Sync for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Sync for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Sync for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Sync for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Sync for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Sync for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Sync for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Sync for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Sync for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl<S> Sync for SignerWrapper<S>where
        S: Sync,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]],["impl Sync for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Sync for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Sync for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Sync for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Sync for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl Sync for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> !Sync for TxBuilder<'a, Cs, Ctx>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl Sync for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Sync for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Sync for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl Sync for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Sync for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Sync for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Sync for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Sync for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Sync for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Sync for Update",1,["bdk_wallet::wallet::Update"]],["impl Sync for ChangeSet",1,["bdk_wallet::wallet::ChangeSet"]],["impl Sync for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Sync for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Sync for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Sync for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Sync for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl Sync for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]]], -"example_bitcoind_rpc_polling":[["impl Sync for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Sync for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]],["impl Sync for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]]], -"example_cli":[["impl<CS, S> Sync for Args<CS, S>where
        CS: Sync,
        S: Sync,
    ",1,["example_cli::Args"]],["impl<CS, S> Sync for Commands<CS, S>where
        CS: Sync,
        S: Sync,
    ",1,["example_cli::Commands"]],["impl Sync for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Sync for AddressCmd",1,["example_cli::AddressCmd"]],["impl Sync for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Sync for Keychain",1,["example_cli::Keychain"]],["impl Sync for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S, C> Sync for Init<CS, S, C>where
        C: Send + Sync,
        CS: Sync,
        S: Sync,
    ",1,["example_cli::Init"]]], -"example_electrum":[["impl Sync for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Sync for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Sync for ScanOptions",1,["example_electrum::ScanOptions"]]], -"example_esplora":[["impl Sync for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl Sync for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl Sync for ScanOptions",1,["example_esplora::ScanOptions"]]], -"wallet_rpc":[["impl Sync for Args",1,["wallet_rpc::Args"]],["impl Sync for Emission",1,["wallet_rpc::Emission"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Unpin.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Unpin.js deleted file mode 100644 index 437679cda3..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/marker/trait.Unpin.js +++ /dev/null @@ -1,17 +0,0 @@ -(function() {var implementors = { -"bdk_bitcoind_rpc":[["impl<'c, C> Unpin for Emitter<'c, C>",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Unpin for BlockEvent<B>where
        B: Unpin,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> Unpin for SpkTxOutIndex<I>where
        I: Unpin,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> Unpin for ChainPosition<A>where
        A: Unpin,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl Unpin for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Unpin for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Unpin for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Unpin for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> Unpin for FullTxOut<A>where
        A: Unpin,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> Unpin for IndexedTxGraph<A, I>where
        I: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Unpin for ChangeSet<A, IA>where
        IA: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> Unpin for ChangeSet<K>",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Unpin for KeychainTxOutIndex<K>",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl Unpin for Balance",1,["bdk_chain::keychain::Balance"]],["impl Unpin for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Unpin for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Unpin for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Unpin for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Unpin for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Unpin for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Unpin for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> Unpin for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> Unpin for TxNode<'a, T, A>where
        T: Unpin,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> Unpin for CanonicalTx<'a, T, A>where
        T: Unpin,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl Unpin for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> Unpin for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> Unpin for TxAncestors<'g, A, F>where
        F: Unpin,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Unpin for TxDescendants<'g, A, F>where
        F: Unpin,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl Unpin for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> Unpin for SpkIterator<D>where
        D: Unpin,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl Unpin for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> Unpin for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> Unpin for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Unpin for FullScanResult<K, A>",1,["bdk_chain::spk_client::FullScanResult"]]], -"bdk_coin_select":[["impl Unpin for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl Unpin for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> Unpin for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl Unpin for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Unpin for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Unpin for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Unpin for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Unpin for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Unpin for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> Unpin for Bnb<'c, S>where
        S: Unpin,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> Unpin for BnbIter<'c, 'f, S>where
        S: Unpin,
        'c: 'f,
    ",1,["bdk_coin_select::bnb::BnbIter"]],["impl Unpin for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], -"bdk_electrum":[["impl<K> Unpin for ElectrumFullScanResult<K>",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]],["impl Unpin for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]]], -"bdk_file_store":[["impl<'t, T> Unpin for EntryIter<'t, T>where
        T: Unpin,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl Unpin for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> Unpin for Store<C>where
        C: Unpin,
    ",1,["bdk_file_store::store::Store"]],["impl<C> Unpin for AggregateChangesetsError<C>where
        C: Unpin,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl Unpin for FileError",1,["bdk_file_store::FileError"]]], -"bdk_hwi":[["impl Unpin for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_persist":[["impl<C> Unpin for Persist<C>where
        C: Unpin,
    ",1,["bdk_persist::persist::Persist"]]], -"bdk_testenv":[["impl Unpin for TestEnv",1,["bdk_testenv::TestEnv"]]], -"bdk_tmp_plan":[["impl<Ak> Unpin for Requirements<Ak>where
        Ak: Unpin,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<Ak> Unpin for RequiredSignatures<Ak>where
        Ak: Unpin,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl Unpin for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl<Ak> Unpin for PlanKey<Ak>where
        Ak: Unpin,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<AK> Unpin for Plan<AK>where
        AK: Unpin,
    ",1,["bdk_tmp_plan::Plan"]],["impl Unpin for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<Ak> Unpin for PlanState<Ak>where
        Ak: Unpin,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<K> Unpin for Assets<K>where
        K: Unpin,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl Unpin for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Unpin for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Unpin for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Unpin for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Unpin for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Unpin for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Unpin for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl<'a> Unpin for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<K> Unpin for P2Pkh<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Unpin for P2Wpkh_P2Sh<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> Unpin for P2Wpkh<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Unpin for P2TR<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Unpin for Bip44<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Unpin for Bip44Public<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Unpin for Bip49<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Unpin for Bip49Public<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Unpin for Bip84<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Unpin for Bip84Public<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Unpin for Bip86<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Unpin for Bip86Public<K>where
        K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<Ctx> Unpin for DescriptorKey<Ctx>where
        Ctx: Unpin,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl Unpin for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl<Ctx> Unpin for ExtendedKey<Ctx>where
        Ctx: Unpin,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K, Ctx> Unpin for GeneratedKey<K, Ctx>where
        Ctx: Unpin,
        K: Unpin,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl Unpin for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Unpin for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Unpin for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Unpin for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Unpin for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Unpin for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Unpin for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Unpin for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Unpin for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Unpin for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Unpin for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Unpin for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Unpin for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Unpin for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Unpin for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Unpin for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl<S> Unpin for SignerWrapper<S>where
        S: Unpin,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]],["impl Unpin for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Unpin for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Unpin for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Unpin for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Unpin for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl Unpin for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> Unpin for TxBuilder<'a, Cs, Ctx>where
        Cs: Unpin,
        Ctx: Unpin,
    ",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl Unpin for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Unpin for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Unpin for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl Unpin for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Unpin for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Unpin for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Unpin for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Unpin for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Unpin for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Unpin for Update",1,["bdk_wallet::wallet::Update"]],["impl Unpin for ChangeSet",1,["bdk_wallet::wallet::ChangeSet"]],["impl Unpin for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Unpin for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Unpin for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Unpin for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Unpin for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl Unpin for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]]], -"example_bitcoind_rpc_polling":[["impl Unpin for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Unpin for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]],["impl Unpin for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]]], -"example_cli":[["impl<CS, S> Unpin for Args<CS, S>where
        CS: Unpin,
        S: Unpin,
    ",1,["example_cli::Args"]],["impl<CS, S> Unpin for Commands<CS, S>where
        CS: Unpin,
        S: Unpin,
    ",1,["example_cli::Commands"]],["impl Unpin for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Unpin for AddressCmd",1,["example_cli::AddressCmd"]],["impl Unpin for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Unpin for Keychain",1,["example_cli::Keychain"]],["impl Unpin for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S, C> Unpin for Init<CS, S, C>where
        C: Unpin,
        CS: Unpin,
        S: Unpin,
    ",1,["example_cli::Init"]]], -"example_electrum":[["impl Unpin for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Unpin for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Unpin for ScanOptions",1,["example_electrum::ScanOptions"]]], -"example_esplora":[["impl Unpin for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl Unpin for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl Unpin for ScanOptions",1,["example_esplora::ScanOptions"]]], -"wallet_rpc":[["impl Unpin for Args",1,["wallet_rpc::Args"]],["impl Unpin for Emission",1,["wallet_rpc::Emission"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/arith/trait.Add.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/arith/trait.Add.js deleted file mode 100644 index 2efa69ee34..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/arith/trait.Add.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl Add<Balance> for Balance"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/deref/trait.Deref.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/deref/trait.Deref.js deleted file mode 100644 index ee08477745..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/deref/trait.Deref.js +++ /dev/null @@ -1,4 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<'a, T, A> Deref for TxNode<'a, T, A>"]], -"bdk_wallet":[["impl<K, Ctx: ScriptContext> Deref for GeneratedKey<K, Ctx>"],["impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>"],["impl Deref for AddressInfo"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/drop/trait.Drop.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/drop/trait.Drop.js deleted file mode 100644 index 44ffe3b0f2..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/drop/trait.Drop.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_file_store":[["impl<'t, T> Drop for EntryIter<'t, T>"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/index/trait.Index.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/index/trait.Index.js deleted file mode 100644 index 14b0d708e6..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/ops/index/trait.Index.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<I: SliceIndex<[u8]>> Index<I> for DescriptorId"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js deleted file mode 100644 index 7df4e40b20..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ /dev/null @@ -1,17 +0,0 @@ -(function() {var implementors = { -"bdk_bitcoind_rpc":[["impl<'c, C> RefUnwindSafe for Emitter<'c, C>where
        C: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> RefUnwindSafe for BlockEvent<B>where
        B: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> RefUnwindSafe for SpkTxOutIndex<I>where
        I: RefUnwindSafe,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> RefUnwindSafe for ChainPosition<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl RefUnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl RefUnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl RefUnwindSafe for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl RefUnwindSafe for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> RefUnwindSafe for FullTxOut<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> RefUnwindSafe for IndexedTxGraph<A, I>where
        A: RefUnwindSafe,
        I: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> RefUnwindSafe for ChangeSet<A, IA>where
        A: RefUnwindSafe,
        IA: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> RefUnwindSafe for ChangeSet<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> RefUnwindSafe for KeychainTxOutIndex<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl RefUnwindSafe for Balance",1,["bdk_chain::keychain::Balance"]],["impl RefUnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl RefUnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl RefUnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl RefUnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl RefUnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl RefUnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl RefUnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> RefUnwindSafe for TxGraph<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> RefUnwindSafe for TxNode<'a, T, A>where
        A: RefUnwindSafe,
        T: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> RefUnwindSafe for CanonicalTx<'a, T, A>where
        A: RefUnwindSafe,
        T: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl RefUnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> RefUnwindSafe for ChangeSet<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> RefUnwindSafe for TxAncestors<'g, A, F>where
        A: RefUnwindSafe,
        F: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> RefUnwindSafe for TxDescendants<'g, A, F>where
        A: RefUnwindSafe,
        F: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl RefUnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> RefUnwindSafe for SpkIterator<D>where
        D: RefUnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !RefUnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> RefUnwindSafe for SyncResult<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !RefUnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> RefUnwindSafe for FullScanResult<K, A>where
        A: RefUnwindSafe,
        K: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], -"bdk_coin_select":[["impl RefUnwindSafe for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl RefUnwindSafe for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> RefUnwindSafe for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl RefUnwindSafe for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl RefUnwindSafe for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl RefUnwindSafe for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl RefUnwindSafe for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl RefUnwindSafe for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl RefUnwindSafe for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> RefUnwindSafe for Bnb<'c, S>where
        S: RefUnwindSafe,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> !RefUnwindSafe for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl RefUnwindSafe for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], -"bdk_electrum":[["impl<K> RefUnwindSafe for ElectrumFullScanResult<K>where
        K: RefUnwindSafe,
    ",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]],["impl RefUnwindSafe for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]]], -"bdk_file_store":[["impl<'t, T> RefUnwindSafe for EntryIter<'t, T>where
        T: RefUnwindSafe,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl !RefUnwindSafe for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> RefUnwindSafe for Store<C>where
        C: RefUnwindSafe,
    ",1,["bdk_file_store::store::Store"]],["impl<C> !RefUnwindSafe for AggregateChangesetsError<C>",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl !RefUnwindSafe for FileError",1,["bdk_file_store::FileError"]]], -"bdk_hwi":[["impl !RefUnwindSafe for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_persist":[["impl<C> !RefUnwindSafe for Persist<C>",1,["bdk_persist::persist::Persist"]]], -"bdk_testenv":[["impl !RefUnwindSafe for TestEnv",1,["bdk_testenv::TestEnv"]]], -"bdk_tmp_plan":[["impl<Ak> RefUnwindSafe for Requirements<Ak>where
        Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<Ak> RefUnwindSafe for RequiredSignatures<Ak>where
        Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl RefUnwindSafe for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl<Ak> RefUnwindSafe for PlanKey<Ak>where
        Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<AK> RefUnwindSafe for Plan<AK>where
        AK: RefUnwindSafe,
    ",1,["bdk_tmp_plan::Plan"]],["impl RefUnwindSafe for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<Ak> RefUnwindSafe for PlanState<Ak>where
        Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<K> RefUnwindSafe for Assets<K>where
        K: RefUnwindSafe,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl RefUnwindSafe for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl RefUnwindSafe for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl RefUnwindSafe for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl RefUnwindSafe for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl RefUnwindSafe for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl RefUnwindSafe for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl RefUnwindSafe for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl<'a> RefUnwindSafe for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<K> RefUnwindSafe for P2Pkh<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> RefUnwindSafe for P2Wpkh_P2Sh<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> RefUnwindSafe for P2Wpkh<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> RefUnwindSafe for P2TR<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> RefUnwindSafe for Bip44<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> RefUnwindSafe for Bip44Public<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> RefUnwindSafe for Bip49<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> RefUnwindSafe for Bip49Public<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> RefUnwindSafe for Bip84<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> RefUnwindSafe for Bip84Public<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> RefUnwindSafe for Bip86<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> RefUnwindSafe for Bip86Public<K>where
        K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<Ctx> RefUnwindSafe for DescriptorKey<Ctx>where
        Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl RefUnwindSafe for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl<Ctx> RefUnwindSafe for ExtendedKey<Ctx>where
        Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx>where
        Ctx: RefUnwindSafe,
        K: RefUnwindSafe,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl RefUnwindSafe for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl RefUnwindSafe for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl RefUnwindSafe for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl RefUnwindSafe for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl RefUnwindSafe for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl RefUnwindSafe for Utxo",1,["bdk_wallet::types::Utxo"]],["impl RefUnwindSafe for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl RefUnwindSafe for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl RefUnwindSafe for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl RefUnwindSafe for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl RefUnwindSafe for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl RefUnwindSafe for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl RefUnwindSafe for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl RefUnwindSafe for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl RefUnwindSafe for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl RefUnwindSafe for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl<S> RefUnwindSafe for SignerWrapper<S>where
        S: RefUnwindSafe,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]],["impl RefUnwindSafe for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl !RefUnwindSafe for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl RefUnwindSafe for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl RefUnwindSafe for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl RefUnwindSafe for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl RefUnwindSafe for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> !RefUnwindSafe for TxBuilder<'a, Cs, Ctx>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl RefUnwindSafe for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl RefUnwindSafe for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl RefUnwindSafe for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl RefUnwindSafe for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl RefUnwindSafe for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl RefUnwindSafe for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl !RefUnwindSafe for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl RefUnwindSafe for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl !RefUnwindSafe for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl RefUnwindSafe for Update",1,["bdk_wallet::wallet::Update"]],["impl RefUnwindSafe for ChangeSet",1,["bdk_wallet::wallet::ChangeSet"]],["impl RefUnwindSafe for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl !RefUnwindSafe for NewError",1,["bdk_wallet::wallet::NewError"]],["impl !RefUnwindSafe for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl !RefUnwindSafe for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl RefUnwindSafe for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl RefUnwindSafe for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]]], -"example_bitcoind_rpc_polling":[["impl RefUnwindSafe for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl RefUnwindSafe for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]],["impl RefUnwindSafe for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]]], -"example_cli":[["impl<CS, S> RefUnwindSafe for Args<CS, S>where
        CS: RefUnwindSafe,
        S: RefUnwindSafe,
    ",1,["example_cli::Args"]],["impl<CS, S> RefUnwindSafe for Commands<CS, S>where
        CS: RefUnwindSafe,
        S: RefUnwindSafe,
    ",1,["example_cli::Commands"]],["impl RefUnwindSafe for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl RefUnwindSafe for AddressCmd",1,["example_cli::AddressCmd"]],["impl RefUnwindSafe for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl RefUnwindSafe for Keychain",1,["example_cli::Keychain"]],["impl RefUnwindSafe for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S, C> RefUnwindSafe for Init<CS, S, C>where
        C: RefUnwindSafe,
        CS: RefUnwindSafe,
        S: RefUnwindSafe,
    ",1,["example_cli::Init"]]], -"example_electrum":[["impl RefUnwindSafe for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl RefUnwindSafe for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl RefUnwindSafe for ScanOptions",1,["example_electrum::ScanOptions"]]], -"example_esplora":[["impl RefUnwindSafe for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl RefUnwindSafe for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl RefUnwindSafe for ScanOptions",1,["example_esplora::ScanOptions"]]], -"wallet_rpc":[["impl RefUnwindSafe for Args",1,["wallet_rpc::Args"]],["impl RefUnwindSafe for Emission",1,["wallet_rpc::Emission"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.UnwindSafe.js deleted file mode 100644 index 8de9f84e7b..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/panic/unwind_safe/trait.UnwindSafe.js +++ /dev/null @@ -1,17 +0,0 @@ -(function() {var implementors = { -"bdk_bitcoind_rpc":[["impl<'c, C> UnwindSafe for Emitter<'c, C>where
        C: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> UnwindSafe for BlockEvent<B>where
        B: UnwindSafe,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], -"bdk_chain":[["impl<I> UnwindSafe for SpkTxOutIndex<I>where
        I: UnwindSafe + RefUnwindSafe,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<A> UnwindSafe for ChainPosition<A>where
        A: UnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl UnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl UnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl UnwindSafe for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl UnwindSafe for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl<A> UnwindSafe for FullTxOut<A>where
        A: UnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A, I> UnwindSafe for IndexedTxGraph<A, I>where
        A: RefUnwindSafe,
        I: UnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> UnwindSafe for ChangeSet<A, IA>where
        A: RefUnwindSafe,
        IA: UnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<K> UnwindSafe for ChangeSet<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> UnwindSafe for KeychainTxOutIndex<K>where
        K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl UnwindSafe for Balance",1,["bdk_chain::keychain::Balance"]],["impl UnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl UnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl UnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl UnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl UnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl UnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl UnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl<A> UnwindSafe for TxGraph<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<'a, T, A> UnwindSafe for TxNode<'a, T, A>where
        A: RefUnwindSafe,
        T: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'a, T, A> UnwindSafe for CanonicalTx<'a, T, A>where
        A: RefUnwindSafe,
        T: UnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl UnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl<A> UnwindSafe for ChangeSet<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<'g, A, F> UnwindSafe for TxAncestors<'g, A, F>where
        A: RefUnwindSafe,
        F: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> UnwindSafe for TxDescendants<'g, A, F>where
        A: RefUnwindSafe,
        F: UnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl UnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<D> UnwindSafe for SpkIterator<D>where
        D: UnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl !UnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl<A> UnwindSafe for SyncResult<A>where
        A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<K> !UnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> UnwindSafe for FullScanResult<K, A>where
        A: RefUnwindSafe,
        K: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], -"bdk_coin_select":[["impl UnwindSafe for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl UnwindSafe for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl<'a> UnwindSafe for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl UnwindSafe for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl UnwindSafe for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl UnwindSafe for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl UnwindSafe for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl UnwindSafe for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl UnwindSafe for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl<'c, S> UnwindSafe for Bnb<'c, S>where
        S: UnwindSafe,
    ",1,["bdk_coin_select::bnb::Bnb"]],["impl<'c, 'f, S> !UnwindSafe for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl UnwindSafe for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]]], -"bdk_electrum":[["impl<K> UnwindSafe for ElectrumFullScanResult<K>where
        K: RefUnwindSafe,
    ",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]],["impl UnwindSafe for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]]], -"bdk_file_store":[["impl<'t, T> !UnwindSafe for EntryIter<'t, T>",1,["bdk_file_store::entry_iter::EntryIter"]],["impl !UnwindSafe for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<C> UnwindSafe for Store<C>where
        C: UnwindSafe,
    ",1,["bdk_file_store::store::Store"]],["impl<C> !UnwindSafe for AggregateChangesetsError<C>",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl !UnwindSafe for FileError",1,["bdk_file_store::FileError"]]], -"bdk_hwi":[["impl UnwindSafe for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], -"bdk_persist":[["impl<C> !UnwindSafe for Persist<C>",1,["bdk_persist::persist::Persist"]]], -"bdk_testenv":[["impl !UnwindSafe for TestEnv",1,["bdk_testenv::TestEnv"]]], -"bdk_tmp_plan":[["impl<Ak> UnwindSafe for Requirements<Ak>where
        Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<Ak> UnwindSafe for RequiredSignatures<Ak>where
        Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl UnwindSafe for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl<Ak> UnwindSafe for PlanKey<Ak>where
        Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<AK> UnwindSafe for Plan<AK>where
        AK: UnwindSafe,
    ",1,["bdk_tmp_plan::Plan"]],["impl UnwindSafe for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<Ak> UnwindSafe for PlanState<Ak>where
        Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<K> UnwindSafe for Assets<K>where
        K: UnwindSafe,
    ",1,["bdk_tmp_plan::Assets"]]], -"bdk_wallet":[["impl UnwindSafe for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl UnwindSafe for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl UnwindSafe for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl UnwindSafe for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl UnwindSafe for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl UnwindSafe for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl UnwindSafe for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl<'a> UnwindSafe for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<K> UnwindSafe for P2Pkh<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> UnwindSafe for P2Wpkh_P2Sh<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K> UnwindSafe for P2Wpkh<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> UnwindSafe for P2TR<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> UnwindSafe for Bip44<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> UnwindSafe for Bip44Public<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> UnwindSafe for Bip49<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> UnwindSafe for Bip49Public<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> UnwindSafe for Bip84<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> UnwindSafe for Bip84Public<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> UnwindSafe for Bip86<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> UnwindSafe for Bip86Public<K>where
        K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<Ctx> UnwindSafe for DescriptorKey<Ctx>where
        Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl UnwindSafe for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl<Ctx> UnwindSafe for ExtendedKey<Ctx>where
        Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K, Ctx> UnwindSafe for GeneratedKey<K, Ctx>where
        Ctx: UnwindSafe,
        K: UnwindSafe,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl UnwindSafe for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl UnwindSafe for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl UnwindSafe for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl UnwindSafe for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl UnwindSafe for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl UnwindSafe for Utxo",1,["bdk_wallet::types::Utxo"]],["impl UnwindSafe for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl UnwindSafe for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl UnwindSafe for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl UnwindSafe for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl UnwindSafe for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl UnwindSafe for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl UnwindSafe for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl UnwindSafe for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl UnwindSafe for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl UnwindSafe for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl<S> UnwindSafe for SignerWrapper<S>where
        S: UnwindSafe,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]],["impl UnwindSafe for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl !UnwindSafe for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl UnwindSafe for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl UnwindSafe for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl UnwindSafe for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl UnwindSafe for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl<'a, Cs, Ctx> !UnwindSafe for TxBuilder<'a, Cs, Ctx>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl UnwindSafe for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl UnwindSafe for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl UnwindSafe for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl UnwindSafe for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl UnwindSafe for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl UnwindSafe for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl !UnwindSafe for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl UnwindSafe for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl !UnwindSafe for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl UnwindSafe for Update",1,["bdk_wallet::wallet::Update"]],["impl UnwindSafe for ChangeSet",1,["bdk_wallet::wallet::ChangeSet"]],["impl UnwindSafe for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl !UnwindSafe for NewError",1,["bdk_wallet::wallet::NewError"]],["impl !UnwindSafe for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl !UnwindSafe for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl UnwindSafe for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl UnwindSafe for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]]], -"example_bitcoind_rpc_polling":[["impl UnwindSafe for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl UnwindSafe for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]],["impl UnwindSafe for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]]], -"example_cli":[["impl<CS, S> UnwindSafe for Args<CS, S>where
        CS: UnwindSafe,
        S: UnwindSafe,
    ",1,["example_cli::Args"]],["impl<CS, S> UnwindSafe for Commands<CS, S>where
        CS: UnwindSafe,
        S: UnwindSafe,
    ",1,["example_cli::Commands"]],["impl UnwindSafe for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl UnwindSafe for AddressCmd",1,["example_cli::AddressCmd"]],["impl UnwindSafe for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl UnwindSafe for Keychain",1,["example_cli::Keychain"]],["impl UnwindSafe for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S, C> UnwindSafe for Init<CS, S, C>where
        C: UnwindSafe,
        CS: UnwindSafe,
        S: UnwindSafe,
    ",1,["example_cli::Init"]]], -"example_electrum":[["impl UnwindSafe for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl UnwindSafe for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl UnwindSafe for ScanOptions",1,["example_electrum::ScanOptions"]]], -"example_esplora":[["impl UnwindSafe for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl UnwindSafe for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl UnwindSafe for ScanOptions",1,["example_esplora::ScanOptions"]]], -"wallet_rpc":[["impl UnwindSafe for Args",1,["wallet_rpc::Args"]],["impl UnwindSafe for Emission",1,["wallet_rpc::Emission"]]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/str/traits/trait.FromStr.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/str/traits/trait.FromStr.js deleted file mode 100644 index a5a57a000b..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/core/str/traits/trait.FromStr.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl FromStr for DescriptorId"]], -"bdk_wallet":[["impl FromStr for FullyNodedExport"]], -"example_cli":[["impl FromStr for CoinSelectionAlgo"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/miniscript/miniscript/context/trait.ScriptContext.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/miniscript/miniscript/context/trait.ScriptContext.js deleted file mode 100644 index e69e7865df..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/miniscript/miniscript/context/trait.ScriptContext.js +++ /dev/null @@ -1,3 +0,0 @@ -(function() {var implementors = { -"bdk_wallet":[] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/de/trait.Deserialize.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/de/trait.Deserialize.js deleted file mode 100644 index b7dedabd79..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/de/trait.Deserialize.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl<'de> Deserialize<'de> for ConfirmationTime"],["impl<'de> Deserialize<'de> for BlockId"],["impl<'de> Deserialize<'de> for ConfirmationHeightAnchor"],["impl<'de> Deserialize<'de> for ConfirmationTimeHeightAnchor"],["impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>where
        A: Ord + Deserialize<'de>,
        IA: Deserialize<'de>,
    "],["impl<'de, K> Deserialize<'de> for ChangeSet<K>where
        K: Ord + Deserialize<'de>,
    "],["impl<'de> Deserialize<'de> for Balance"],["impl<'de, A> Deserialize<'de> for ChangeSet<A>where
        A: Ord + Deserialize<'de>,
    "],["impl<'de> Deserialize<'de> for DescriptorId"]], -"bdk_wallet":[["impl<'de> Deserialize<'de> for KeychainKind"],["impl<'de> Deserialize<'de> for LocalOutput"],["impl<'de> Deserialize<'de> for FullyNodedExport"],["impl<'de> Deserialize<'de> for ChangeSet"]], -"example_cli":[["impl<'de> Deserialize<'de> for Keychain"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/ser/trait.Serialize.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/ser/trait.Serialize.js deleted file mode 100644 index ae22d450d4..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/implementors/serde/ser/trait.Serialize.js +++ /dev/null @@ -1,5 +0,0 @@ -(function() {var implementors = { -"bdk_chain":[["impl Serialize for ConfirmationTime"],["impl Serialize for BlockId"],["impl Serialize for ConfirmationHeightAnchor"],["impl Serialize for ConfirmationTimeHeightAnchor"],["impl<A, IA> Serialize for ChangeSet<A, IA>where
        A: Ord + Serialize,
        IA: Serialize,
    "],["impl<K> Serialize for ChangeSet<K>where
        K: Ord + Serialize,
    "],["impl Serialize for Balance"],["impl<A> Serialize for ChangeSet<A>where
        A: Ord + Serialize,
    "],["impl Serialize for DescriptorId"]], -"bdk_wallet":[["impl Serialize for PkOrF"],["impl Serialize for SatisfiableItem"],["impl Serialize for Satisfaction"],["impl Serialize for Policy"],["impl Serialize for Condition"],["impl Serialize for KeychainKind"],["impl Serialize for LocalOutput"],["impl Serialize for FullyNodedExport"],["impl Serialize for ChangeSet"]], -"example_cli":[["impl Serialize for Keychain"]] -};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js index 02b2805bfa..42657543ba 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search-index.js @@ -1,23 +1,24 @@ -var searchIndex = JSON.parse('{\ -"bdk_bitcoind_rpc":{"doc":"This crate is used for emitting blockchain data from the …","t":[8,3,3,2,12,11,11,11,11,11,11,12,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11],"n":["BitcoindRpcErrorExt","BlockEvent","Emitter","bitcoincore_rpc","block","block_hash","block_height","borrow","borrow","borrow_mut","borrow_mut","checkpoint","connected_to","fmt","from","from","into","into","is_not_found_error","mempool","new","next_block","next_header","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":["bdk_bitcoind_rpc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Extends bitcoincore_rpc::Error.","A newly emitted block from Emitter.","The Emitter is used to emit data sourced from …","","Either a full Block or Header of the new block.","The block hash of this new block.","The block height of this new block.","","","","","The checkpoint of the new block.","The BlockId of a previous block that this block connects …","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Returns whether the error is a “not found” error.","Emit mempool transactions, alongside their first-seen unix …","Construct a new Emitter.","Emit the next block height and block (if any).","Emit the next block height and header (if any).","","","","","","","",""],"i":[0,0,0,0,1,1,1,10,1,10,1,1,1,1,10,1,10,1,19,10,10,10,10,10,1,10,1,10,1,10,1],"f":[0,0,0,0,0,[1,2],[1,3],[[]],[[]],[[]],[[]],0,[1,4],[[[1,[5]],6],7],[[]],[[]],[[]],[[]],[[],8],[[[10,[9]]],[[13,[11,12]]]],[[14,3],[[10,[9]]]],[[[10,[9]]],[[13,[[16,[[1,[15]]]],12]]]],[[[10,[9]]],[[13,[[16,[[1,[17]]]],12]]]],[[],13],[[],13],[[],13],[[],13],[[],18],[[],18],[[]],[[]]],"p":[[3,"BlockEvent"],[3,"BlockHash"],[15,"u32"],[3,"BlockId"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[15,"bool"],[8,"RpcApi"],[3,"Emitter"],[3,"Vec"],[4,"Error"],[4,"Result"],[3,"CheckPoint"],[3,"Block"],[4,"Option"],[3,"Header"],[3,"TypeId"],[8,"BitcoindRpcErrorExt"]]},\ -"bdk_chain":{"doc":"This crate is a collection of core structures for Bitcoin …","t":[8,8,8,17,3,17,8,4,3,4,3,13,13,8,3,16,3,2,3,3,2,13,13,11,11,10,11,11,11,12,12,10,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,11,11,11,11,11,10,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,12,12,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,10,11,12,11,11,11,0,0,11,2,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,3,16,3,8,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,10,10,12,10,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,3,4,13,3,6,3,3,13,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,3,3,3,3,6,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,12,12,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,4,3,3,13,13,3,3,3,3,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["Anchor","AnchorFromBlockPosition","Append","BIP32_MAX_INDEX","BlockId","COINBASE_MATURITY","ChainOracle","ChainPosition","ConfirmationHeightAnchor","ConfirmationTime","ConfirmationTimeHeightAnchor","Confirmed","Confirmed","DescriptorExt","DescriptorId","Error","FullTxOut","IndexedTxGraph","SpkIterator","SpkTxOutIndex","TxGraph","Unconfirmed","Unconfirmed","all_spks","all_zeros","anchor_block","anchor_block","anchor_block","anchor_block","anchor_block","anchor_block","append","apply_changeset","as_byte_array","as_raw_hash","as_ref","as_ref","bitcoin","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain_position","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cmp","cmp","cmp","cmp","cmp","cmp","cmp","confirmation_height","confirmation_height","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_time","default","default","default","default","descriptor","descriptor_id","deserialize","deserialize","deserialize","deserialize","deserialize","dust_value","engine","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from_block_position","from_block_position","from_block_position","from_block_position","from_byte_array","from_engine","from_raw_hash","from_slice","from_slice_delegated","from_str","get_chain_tip","hash","hash","hash","hash","hash","hash","hash","height","index","index_of_spk","index_tx","index_txout","indexed_tx_graph","initial_changeset","insert_spk","into","into","into","into","into","into","into","into","into","into_iter","is_block_in_chain","is_confirmed","is_confirmed","is_confirmed_and_spendable","is_empty","is_mature","is_on_coinbase","is_relevant","is_tx_relevant","is_used","keychain","local_chain","mark_used","miniscript","net_value","new","new_with_range","next","nth","outpoint","outpoints","outputs_in_range","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","scan","scan_txout","sent_and_received","serialize","serialize","serialize","serialize","serialize","spent_by","spk_at_index","spk_client","to_byte_array","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_raw_hash","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_graph","txout","txout","txouts","txouts_in_tx","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unconfirmed","unmark_used","unused_spks","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","height","last_seen","time","ChangeSet","ChangeSet","IndexedTxGraph","Indexer","append","apply_block","apply_block_relevant","apply_changeset","apply_changeset","apply_update","batch_insert_relevant","batch_insert_relevant_unconfirmed","batch_insert_unconfirmed","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","default","deserialize","eq","fmt","fmt","from","from","from","from","graph","graph","index","index_tx","index_txout","indexer","initial_changeset","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","is_empty","is_tx_relevant","new","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Balance","ChangeSet","KeychainTxOutIndex","add","all_unbounded_spk_iters","append","apply_changeset","apply_changeset","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","confirmed","default","default","default","deserialize","deserialize","eq","eq","fmt","fmt","fmt","fmt","from","from","from","get_descriptor","immature","index_of_spk","index_tx","index_txout","initial_changeset","inner","insert_descriptor","into","into","into","is_empty","is_tx_relevant","is_used","keychain_outpoints","keychain_outpoints_in_range","keychains","keychains_added","last_revealed","last_revealed_index","last_revealed_indices","last_used_index","last_used_indices","lookahead","lookahead_to_target","mark_used","net_value","new","next_index","next_unused_spk","outpoints","reveal_next_spk","reveal_to_target","reveal_to_target_multi","revealed_keychain_spks","revealed_spks","sent_and_received","serialize","serialize","spk_at_index","to_owned","to_owned","to_owned","to_string","total","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_into","try_into","try_into","txout","txouts","txouts_in_tx","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","unused_keychain_spks","unused_spks","vzip","vzip","vzip","AlterCheckPointError","ApplyHeaderError","CannotConnect","CannotConnectError","ChangeSet","CheckPoint","CheckPointIter","InconsistentBlocks","LocalChain","MissingGenesisError","apply_changeset","apply_header","apply_header_connected_to","apply_update","block_id","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","disconnect_from","eq","eq","eq","eq","eq","eq","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_block_ids","from_blocks","from_changeset","from_genesis_hash","from_header","from_tip","genesis_hash","get","get","get_chain_tip","hash","height","height","initial_changeset","insert","insert_block","into","into","into","into","into","into","into","into_iter","into_iter","is_block_in_chain","iter","iter_checkpoints","new","next","original_hash","prev","provide","provide","provide","provide","push","range","range","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_include_height","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_hash","vzip","vzip","vzip","vzip","vzip","vzip","vzip","FullScanRequest","FullScanResult","SyncRequest","SyncResult","TxCache","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cache_graph_txs","cache_graph_txs","cache_txs","cache_txs","chain_outpoints","chain_spks","chain_spks_for_keychain","chain_tip","chain_tip","chain_txids","chain_update","chain_update","from","from","from","from","from_chain_tip","from_chain_tip","from_keychain_txout_index","graph_update","graph_update","inspect_outpoints","inspect_spks","inspect_spks_for_all_keychains","inspect_spks_for_keychain","inspect_txids","into","into","into","into","last_active_indices","outpoints","populate_with_revealed_spks","set_outpoints","set_spks","set_spks_for_keychain","set_txids","spks","spks_by_keychain","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","tx_cache","tx_cache","txids","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","CalculateFeeError","CanonicalTx","ChangeSet","MissingTxOut","NegativeFee","TxAncestors","TxDescendants","TxGraph","TxNode","all_anchors","all_txouts","anchor_heights","anchors","anchors","append","apply_changeset","apply_update","as_ref","balance","batch_insert_unconfirmed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calculate_fee","chain_position","checked_sum","checked_sum","checked_sum","checked_sum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","deref","deserialize","direct_conflicts","eq","eq","eq","eq","eq","filter_chain_txouts","filter_chain_unspents","floating_txouts","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","full_txs","get_chain_position","get_chain_spend","get_tx","get_tx_node","get_txout","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_empty","last_seen","last_seen_unconfirmed","list_chain_txs","map_anchors","map_anchors","new","next","next","outspends","partial_cmp","partial_cmp","provide","serialize","to_owned","to_owned","to_owned","to_owned","to_string","try_balance","try_filter_chain_txouts","try_filter_chain_unspents","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_get_chain_position","try_get_chain_spend","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_list_chain_txs","tx","tx_node","tx_outputs","tx_spends","txid","txouts","txouts","txs","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_last_seen_unconfirmed","vzip","vzip","vzip","vzip","vzip","vzip","vzip","walk_ancestors","walk_conflicts","walk_descendants"],"q":["bdk_chain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::ConfirmationTime","","","bdk_chain::indexed_tx_graph","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::keychain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::local_chain","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::spk_client","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_chain::tx_graph","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Trait that “anchors” blockchain data to a specific …","An Anchor that can be constructed from a given block, …","Trait that makes an object appendable.","Maximum BIP32 derivation index.","A reference to a block in the canonical chain.","How many confirmations are needed f or a coinbase output …","Represents a service that tracks the blockchain.","Represents the observed position of some chain data.","An Anchor implementation that also records the exact …","Block height and timestamp at which a transaction is …","An Anchor implementation that also records the exact …","The chain data is seen as confirmed, and in anchored by A.","The transaction is confirmed","A trait to extend the functionality of a miniscript …","Represents the ID of a descriptor, defined as the sha256 …","Error type.","A TxOut with as much data as we can retrieve about it","","An iterator for derived script pubkeys.","An index storing TxOuts that have a script pubkey that …","","The chain data is not confirmed and last seen in the …","The transaction is unconfirmed","The script pubkeys that are being tracked by the index.","","Returns the BlockId that the associated blockchain data is …","","","","The anchor block.","The anchor block.","Append another object of the same type onto self.","","","Returns a reference to the inner hash (sha256, sh256d …","","","","","","","","","","","","","","","","","","","","","","","The position of the transaction in outpoint in the overall …","","","","","","","","","","","","","","","","","","","Maps a ChainPosition<&A> into a ChainPosition<A> by …","","","","","","","","The exact confirmation height of the transaction.","The confirmation height of the transaction being anchored.","Get the upper bound of the chain data’s confirmation …","Get the upper bound of the chain data’s confirmation …","Determines the upper bound of the confirmation height.","","","The confirmation time of the transaction being anchored.","","","","","Get a reference to the internal descriptor.","Returns the descriptor id, calculated as the sha256 of the …","","","","","","Returns the minimum value (in satoshis) at which an output …","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Construct the anchor from a given block, block height and …","","","","","","Creates this wrapper type from the inner hash type.","","","","Get the best chain’s chain tip.","","","","","","","The hash of the block.","The height of the block.","","Returns the index associated with the script pubkey.","","","Contains the IndexedTxGraph and associated types. Refer to …","","Adds a script pubkey to scan for. Returns false and does …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Determines whether block of BlockId exists as an ancestor …","Returns whether ChainPosition is confirmed or not.","Returns whether ConfirmationTime is the confirmed variant.","Whether the utxo is/was/will be spendable with chain tip.","Returns whether the structure is considered empty.","Whether the txout is considered mature.","Whether this output is on a coinbase transaction.","Whether any of the inputs of this transaction spend a …","","Returns whether the script pubkey at index has been used …","Module for keychain related structures.","The LocalChain is a local implementation of ChainOracle.","Marks the script pubkey at index as used even though it …","","Computes the net value transfer effect of tx on the script …","Create a new script pubkey iterator from descriptor.","Create a new script pubkey iterator from descriptor and a …","","","The location of the TxOut.","Get a reference to the set of indexed outpoints.","Iterates over all the outputs with script pubkeys in an …","","","","","","","","Scans a transaction’s outputs for matching script …","Scan a single TxOut for a matching script pubkey and …","Computes the total value transfer effect tx has on the …","","","","","","The txid and chain position of the transaction (if any) …","Returns the script that has been inserted at the index.","Helper types for spk-based blockchain clients.","","","","","","","","","","","Returns the inner hash (sha256, sh256d etc.).","","","","","","","","","","","","","","","","","","","","Module for structures that store and traverse transactions.","Returns the txout and script pubkey index of the TxOut at …","The TxOut.","Iterate over all known txouts that spend to tracked script …","Finds all txouts on a transaction that has previously been …","","","","","","","","","","Construct an unconfirmed variant using the given last_seen …","Undoes the effect of mark_used. Returns whether the index …","Iterates over all unused script pubkeys in an index range.","","","","","","","","","","Confirmation height.","The last-seen timestamp in unix seconds.","Confirmation time in unix seconds.","Represents changes to an IndexedTxGraph.","The resultant “changeset” when new transaction data is …","The IndexedTxGraph combines a TxGraph and an Indexer …","Utilities for indexing transaction data.","","Batch insert all transactions of the given block of height.","Batch insert all transactions of the given block of height…","Apply changeset to itself.","Applies the ChangeSet to the IndexedTxGraph.","Apply an update directly.","Batch insert transactions, filtering out those that are …","Batch insert unconfirmed transactions, filtering out those …","Batch insert unconfirmed transactions.","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Get a reference of the internal transaction graph.","TxGraph changeset.","Transaction index.","Scans a transaction for relevant outpoints, which are …","Scan and index the given outpoint and txout.","Indexer changeset.","Determines the ChangeSet between self and an empty Indexer.","Determines the ChangeSet between self and an empty …","Insert an anchor for a given transaction.","Insert a unix timestamp of when a transaction is seen in …","Insert and index a transaction into the graph.","Insert a floating txout of given outpoint.","Calls U::from(self).","Calls U::from(self).","","Determines whether the transaction should be included in …","Construct a new IndexedTxGraph with a given index.","","","","","","","","","","","Balance, differentiated into various categories.","Represents updates to the derivation index of a …","KeychainTxOutIndex controls how script pubkeys are …","","Get unbounded spk iterators for all keychains.","Append another ChangeSet into self.","Applies the derivation changeset to the KeychainTxOutIndex…","","","","","","","","","","","","","","Confirmed and immediately spendable balance","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Gets the descriptor associated with the keychain. Returns …","All coinbase outputs not yet matured","Returns the keychain and keychain index associated with …","","","","Return a reference to the internal SpkTxOutIndex.","Insert a descriptor with a keychain associated to it.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns whether the changeset are empty.","","Returns whether the spk under the keychain’s index has …","Iterate over all OutPoints that have TxOuts with script …","Iterate over OutPoints that have script pubkeys derived …","Return the map of the keychain to descriptors.","Contains the keychains that have been added and their …","Contains for each descriptor_id the last revealed index of …","Get the last derivation index revealed for keychain. …","Get the last derivation index that is revealed for each …","Returns the highest derivation index of the keychain where …","Returns the highest derivation index of each keychain that …","Get the lookahead setting.","Store lookahead scripts until target_index (inclusive).","Marks the script pubkey at index as used even though the …","Computes the net value that this transaction gives to the …","Construct a KeychainTxOutIndex with the given lookahead.","Get the next derivation index for keychain. The next index …","Gets the next unused script pubkey in the keychain. I.e., …","Get the set of indexed outpoints, corresponding to tracked …","Attempts to reveal the next script pubkey for keychain.","Reveals script pubkeys of the keychain’s descriptor up …","Convenience method to call Self::reveal_to_target on …","Iterate over revealed spks of the given keychain.","Iterate over revealed spks of keychains in range","Computes the total value transfer effect tx has on the …","","","Return the script that exists under the given keychain’s …","","","","","Get the whole balance visible to the wallet.","Unconfirmed UTXOs generated by a wallet tx","Get sum of trusted_pending and confirmed coins.","","","","","","","Return the TxOut of outpoint if it has been indexed, and …","Iterate over known txouts that spend to tracked script …","Finds all txouts on a transaction that has previously been …","","","","Get an unbounded spk iterator over a given keychain. …","Undoes the effect of mark_used. Returns whether the index …","Unconfirmed UTXOs received from an external wallet","Iterate over revealed, but unused, spks of the given …","Iterate over revealed, but unused, spks of all keychains.","","","","Represents a failure when trying to insert/remove a …","The error type for LocalChain::apply_header_connected_to.","Occurs when the update cannot connect with the original …","Occurs when an update does not have a common checkpoint …","The ChangeSet represents changes to LocalChain.","A LocalChain checkpoint is used to find the agreement …","Iterates over checkpoints backwards.","Occurs when connected_to block conflicts with either the …","This is a local implementation of ChainOracle.","An error which occurs when a LocalChain is constructed …","Apply the given changeset.","Update the chain with a given Header connecting it with …","Update the chain with a given Header at height which you …","Applies the given update to the chain.","Get the BlockId of the checkpoint.","","","","","","","","","","","","","","","","","","","","","","","","","","","Removes blocks from (and inclusive of) the given block_id.","","","","","","","Extends the checkpoint linked list by a iterator of block …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct a checkpoint from a list of BlockIds in …","Constructs a LocalChain from a BTreeMap of height to …","Construct a LocalChain from an initial changeset.","Construct LocalChain from genesis hash.","Construct a checkpoint from the given header and block …","Construct a LocalChain from a given checkpoint tip.","Get the genesis hash.","Get checkpoint at height.","Get checkpoint at given height (if it exists).","","Get the block hash of the checkpoint.","Get the height of the checkpoint.","The checkpoint’s height.","Derives an initial ChangeSet, meaning that it can be …","Inserts block_id at its height within the chain.","Insert a BlockId.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Iterate from this checkpoint in descending height.","Iterate over checkpoints in descending height order.","Construct a new base block at the front of a linked list.","","The original checkpoint’s block hash which cannot be …","Get the previous checkpoint in the chain","","","","","Puts another checkpoint onto the linked list representing …","Iterate checkpoints over a height range.","Iterate checkpoints over a height range.","Get the highest checkpoint.","","","","","","","","","","","","","","","","","","The suggested checkpoint to include to connect the two …","","","","","","","","","","","","","","","The attempted update to the original_block hash.","","","","","","","","Data required to perform a spk-based blockchain client …","Data returned from a spk-based blockchain client full scan.","Data required to perform a spk-based blockchain client …","Data returned from a spk-based blockchain client sync.","A cache of Arc-wrapped full transactions, identified by …","","","","","","","","","Add all transactions from TxGraph into the TxCache.","Add all transactions from TxGraph into the TxCache.","Add to the TxCache held by the request.","Add to the TxCache held by the request.","Chain on additional OutPoints that will be synced against.","Chain on additional Scripts that will be synced against.","Chain on additional Scripts that will be synced against.","A checkpoint for the current chain LocalChain::tip. The …","A checkpoint for the current LocalChain::tip. The full …","Chain on additional Txids that will be synced against.","The update to apply to the receiving LocalChain.","The update to apply to the receiving TxGraph.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Construct a new SyncRequest from a given cp tip.","Construct a new FullScanRequest from a given chain_tip.","Construct a new FullScanRequest from a given chain_tip and …","The update to apply to the receiving TxGraph.","The update to apply to the receiving LocalChain.","Add a closure that will be called for OutPoints previously …","Add a closure that will be called for Scripts previously …","Add a closure that will be called for every Script …","Add a closure that will be called for every Script …","Add a closure that will be called for Txids previously …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Last active indices for the corresponding keychains (K).","Transactions with these outpoints or spent from these …","Populate the request with revealed script pubkeys from …","Set the OutPoints that will be synced against.","Set the Scripts that will be synced against.","Set the Scripts for a given keychain.","Set the Txids that will be synced against.","Transactions that spend from or to these indexed script …","Iterators of script pubkeys indexed by the keychain index.","","","","","","","","","Cache of full transactions, so the chain-source can avoid …","Cache of full transactions, so the chain-source can avoid …","Transactions with these txids.","","","","","","","","","Errors returned by TxGraph::calculate_fee.","A transaction that is included in the chain, or is still …","The ChangeSet represents changes to a TxGraph.","Missing TxOut for one or more of the inputs of the tx","When the transaction is invalid according to the graph it …","An iterator that traverses ancestors of a given root …","An iterator that traverses transaction descendants.","A graph of transactions and spends.","A transaction node in the TxGraph.","Get all transaction anchors known by TxGraph.","Iterate over all tx outputs known by TxGraph.","Iterates over the heights of that the new transaction …","The blocks that the transaction is “anchored” in.","Added anchors.","","Applies ChangeSet to TxGraph.","Extends this graph with another so that self becomes the …","","Get the total balance of outpoints that are in chain of …","Batch insert unconfirmed transactions.","","","","","","","","","","","","","","","Calculates the fee of a given transaction. Returns 0 if tx …","How the transaction is observed as (confirmed or …","","","","","","","","","","","","","","","","","","","Given a transaction, return an iterator of txids that …","","","","","","Get a filtered list of outputs from the given outpoints …","Get a filtered list of unspent outputs (UTXOs) from the …","Iterate over floating txouts known by TxGraph.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Iterate over all full transactions in the graph.","Get the position of the transaction in chain with tip …","Get the txid of the spending transaction and where the …","Get a transaction by txid. This only returns Some for full …","Get a transaction node by txid. This only returns Some for …","Obtains a single tx output (if any) at the specified …","Determines the ChangeSet between self and an empty TxGraph.","Inserts the given anchor into TxGraph.","Inserts the given seen_at for txid into TxGraph.","Inserts the given transaction into TxGraph.","Inserts the given TxOut at OutPoint.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Whether the graph has any transactions or outputs in it.","","Added last-seen unix timestamps of transactions.","The last-seen unix timestamp of the transaction as …","List graph transactions that are in chain with chain_tip.","Transform the TxGraph to have Anchors of another type.","Transform the ChangeSet to have Anchors of another type.","Construct a new TxGraph from a list of transactions.","","","The transactions spending from this output.","","","","","","","","","","Get the total balance of outpoints that are in chain of …","Get a filtered list of outputs from the given outpoints …","Get a filtered list of unspent outputs (UTXOs) from the …","","","","","","","","Get the position of the transaction in chain with tip …","Get the txid of the spending transaction and where the …","","","","","","","","List graph transactions that are in chain with chain_tip.","A partial or full representation of the transaction.","The transaction node (as part of the graph).","Returns known outputs of a given txid.","Iterates over the transactions spending from txid.","Txid of the transaction.","Iterates over all outpoints contained within ChangeSet.","Added txouts.","Added transactions.","","","","","","","","Update the last seen time for all unconfirmed transactions.","","","","","","","","Creates an iterator that filters and maps ancestor …","Creates an iterator that both filters and maps conflicting …","Creates an iterator that filters and maps descendants from …"],"i":[0,0,0,0,0,0,0,0,0,0,0,10,11,0,0,86,0,0,0,0,0,10,11,3,5,16,6,7,8,7,8,47,3,5,5,5,5,0,3,10,11,6,7,8,12,5,5,13,3,10,11,6,7,8,12,5,13,12,3,10,11,6,7,8,12,5,13,3,10,11,6,7,8,12,5,13,10,10,11,6,7,8,12,5,7,8,16,16,10,7,8,8,3,6,7,8,13,87,11,6,7,8,5,87,5,10,11,6,7,8,12,5,3,10,11,6,7,8,12,5,5,5,5,3,10,11,11,6,6,6,7,8,12,5,5,13,88,6,7,8,5,5,5,5,5,5,86,10,11,6,7,8,5,6,6,5,3,3,3,0,3,3,3,10,11,6,7,8,12,5,13,13,86,10,11,12,47,12,12,3,3,3,0,0,3,0,3,13,13,13,13,12,3,3,10,11,6,7,8,12,5,3,3,3,11,6,7,8,5,12,3,0,5,3,10,11,6,7,8,12,5,13,5,5,3,10,11,6,7,8,12,5,13,3,10,11,6,7,8,12,5,13,0,3,12,3,3,3,10,11,6,7,8,12,5,13,11,3,3,3,10,11,6,7,8,12,5,13,89,90,89,0,49,0,0,48,50,50,49,50,50,50,50,50,50,48,50,48,48,48,50,48,48,48,50,48,50,48,48,48,50,48,50,49,49,48,49,50,50,50,50,50,50,48,48,49,50,48,48,50,48,50,48,50,48,50,48,0,0,0,56,57,54,57,57,54,57,56,54,57,56,54,57,56,54,57,56,56,54,57,56,54,56,54,56,54,57,56,56,54,57,56,57,56,57,57,57,57,57,57,54,57,56,54,57,57,57,57,57,54,54,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,57,54,56,57,54,57,56,56,56,56,56,54,57,56,54,57,56,57,57,57,54,57,56,57,57,56,57,57,54,57,56,0,0,66,0,0,0,0,66,0,0,61,61,61,61,67,70,67,61,63,68,65,66,70,67,61,63,68,65,66,67,61,63,68,65,66,67,61,63,68,65,66,61,67,61,63,68,65,66,67,67,61,63,63,68,68,65,65,66,66,70,67,61,63,68,65,66,67,61,61,61,67,61,61,67,61,61,67,67,68,61,67,61,70,67,61,63,68,65,66,70,67,61,67,61,67,70,68,67,63,68,65,66,67,67,61,61,67,61,63,68,65,66,63,68,65,66,70,67,61,63,68,65,66,65,70,67,61,63,68,65,66,70,67,61,63,68,65,66,68,70,67,61,63,68,65,66,0,0,0,0,0,73,91,74,92,73,91,74,92,73,74,73,74,73,73,74,73,74,73,91,92,73,91,74,92,73,74,74,91,92,73,73,74,74,73,73,91,74,92,92,73,73,73,73,74,73,73,74,73,91,74,92,73,91,74,92,73,74,73,73,91,74,92,73,91,74,92,0,0,0,78,78,0,0,0,0,51,51,55,79,55,55,51,51,51,51,51,83,84,51,79,80,78,55,83,84,51,79,80,78,55,51,80,83,83,84,84,51,79,80,55,51,79,80,55,79,80,51,55,79,55,51,51,79,80,78,55,51,51,51,51,79,80,78,78,55,83,84,51,79,80,78,55,51,51,51,51,51,51,51,51,51,51,51,83,84,51,79,80,78,55,83,84,51,55,55,79,51,51,55,51,83,84,51,79,80,78,55,51,79,80,55,78,51,51,51,83,84,51,79,80,78,55,51,51,83,84,51,79,80,78,55,51,79,80,51,51,79,55,55,55,83,84,51,79,80,78,55,51,83,84,51,79,80,78,55,51,51,51],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[3,[[0,[1,2]]]]],4],[[],5],[[],6],[6,6],[7,6],[8,6],0,0,[[]],[[[3,[[0,[1,2]]]]]],[5],[5,9],[5],[5],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[[3,[1]]],[[3,[1]]]],[[[10,[1]]],[[10,[1]]]],[11,11],[6,6],[7,7],[8,8],[[[12,[1]]],[[12,[1]]]],[5,5],[[[13,[1]]],[[13,[1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[10,[[10,[1]]]],[[[10,[2]],10],14],[[11,11],14],[[6,6],14],[[7,7],14],[[8,8],14],[[[12,[2]],12],14],[[5,5],14],0,0,[[],15],[[],15],[[[10,[16]]],[[17,[15]]]],[7,15],[8,15],0,[[],3],[[],6],[[],7],[[],8],[13],[[],5],[[],[[18,[11]]]],[[],[[18,[6]]]],[[],[[18,[7]]]],[[],[[18,[8]]]],[19,[[18,[5]]]],[[],20],[[]],[[[10,[21]],10],22],[[11,11],22],[[6,6],22],[[7,7],22],[[8,8],22],[[[12,[21]],12],22],[[5,5],22],[[[3,[23]],24],25],[[[10,[23]],24],25],[[11,24],25],[[6,24],25],[[7,24],25],[[8,24],25],[[[12,[23]],24],25],[[5,24],25],[[5,24],25],[[5,24],25],[[5,24],25],[[]],[[]],[[[10,[8]]],11],[[]],[[]],[[],6],[[],6],[[]],[[]],[[]],[9,5],[[]],[[]],[[26,6,27]],[[26,6,27],6],[[26,6,27],7],[[26,6,27],8],[[],5],[[],5],[9,5],[[],[[18,[5,28]]]],[[],[[18,[5,28]]]],[29,[[18,[5]]]],[[],[[18,[6]]]],[[[10,[30]]]],[11],[6],[7],[8],[5],0,0,[[5,31]],[[[3,[[0,[1,2]]]],32],17],[[[3,[[0,[1,2]]]],33]],[[[3,[[0,[1,2]]]],34,35]],0,[[[3,[[0,[1,2]]]]]],[[[3,[[0,[1,2]]]],[0,[1,2]],36],22],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[6,6],[[18,[[17,[22]]]]]],[10,22],[11,22],[[[12,[16]],15],22],[[],22],[[[12,[16]],15],22],0,[[[3,[[0,[1,2]]]],33],22],[[[3,[[0,[1,2]]]],33],22],[[[3,[[0,[1,2]]]]],22],0,0,[[[3,[[0,[1,2]]]]],22],0,[[[3,[[0,[1,2]]]],33,[37,[[0,[1,2]]]]],38],[[],13],[[],13],[13,17],[[13,27],17],0,[[[3,[[0,[1,2]]]]],39],[[[3,[[0,[1,2]]]],[37,[[0,[1,2]]]]],40],[[[10,[41]],10],[[17,[14]]]],[[11,11],[[17,[14]]]],[[6,6],[[17,[14]]]],[[7,7],[[17,[14]]]],[[8,8],[[17,[14]]]],[[[12,[41]],12],[[17,[14]]]],[[5,5],[[17,[14]]]],[[[3,[[0,[1,2]]]],33],[[39,[[0,[1,2]]]]]],[[[3,[[0,[1,2]]]],34,35],17],[[[3,[[0,[1,2]]]],33,[37,[[0,[1,2]]]]]],[11,18],[6,18],[7,18],[8,18],[[5,42],18],0,[[[3,[[0,[1,2]]]]],[[17,[32]]]],0,[5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[5,9],[[],43],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],0,[[[3,[[0,[1,2]]]],34],17],0,[[[3,[[0,[1,2]]]]],[[0,[40,44]]]],[[[3,[[0,[1,2]]]],45],40],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[20,11],[[[3,[[0,[1,2]]]]],22],[[[3,[[0,[1,2]]]]],[[0,[40,1]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,[[[48,[16,47]],[48,[16,47]]]],[[[50,[49]],26,15],48],[[[50,[49]],26,15],48],[[]],[[[50,[16,49]],[48,[16]]]],[[[50,[16,49]],[51,[16]]],[[48,[16]]]],[[[50,[16,49]],52],[[48,[16]]]],[[[50,[16,49]],52],[[48,[16]]]],[[[50,[16,49]],52],[[48,[16]]]],[[]],[[]],[[]],[[]],[[[48,[1,1]]],[[48,[1,1]]]],[[]],[[],[[50,[53]]]],[[],[[48,[53]]]],[[],[[18,[48]]]],[[[48,[21,21]],48],22],[[[50,[23,23]],24],25],[[[48,[23,23]],24],25],[[]],[[]],[54,[[48,[54]]]],[55,[[48,[53]]]],[50,51],0,0,[33],[[34,35]],0,[[]],[[[50,[16,49]]],[[48,[16]]]],[[[50,[16,49]],45,16],[[48,[16]]]],[[[50,[16,49]],45,20],[[48,[16]]]],[[[50,[16,49]],33],[[48,[16]]]],[[[50,[16,49]],34,35],[[48,[16]]]],[[]],[[]],[[[48,[16,47]]],22],[33,22],[[],50],[48,18],[[]],[[],18],[[],18],[[],18],[[],18],[[],46],[[],46],[[]],[[]],0,0,0,[[56,56],56],[[[57,[[0,[1,2,23]]]]],[[4,[[0,[1,2,23]],[13,[[59,[58]]]]]]]],[[[54,[2]],[54,[2]]]],[[[57,[[0,[1,2,23]]]],[54,[[0,[1,2,23]]]]]],[[[57,[[0,[1,2,23]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[[54,[1]]],[[54,[1]]]],[[[57,[1]]],[[57,[1]]]],[56,56],[[]],[[]],[[]],0,[[],54],[[],57],[[],56],[[],[[18,[54]]]],[[],[[18,[56]]]],[[[54,[21]],54],22],[[56,56],22],[[[54,[23]],24],25],[[[57,[23]],24],25],[[56,24],25],[[56,24],25],[[]],[[]],[[]],[[[57,[[0,[1,2,23]]]]],[[17,[59]]]],0,[[[57,[[0,[1,2,23]]]],32],17],[[[57,[[0,[1,2,23]]]],33]],[[[57,[[0,[1,2,23]]]],34,35]],[[[57,[[0,[1,2,23]]]]]],[[[57,[[0,[1,2,23]]]]],3],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],[59,[58]]],[[54,[[0,[1,2,23]]]]]],[[]],[[]],[[]],[[[54,[2]]],22],[[[57,[[0,[1,2,23]]]],33],22],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],15],22],[[[57,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]],[37,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]]],[[0,[40,44]]]],0,0,[[[57,[[0,[1,2,23]]]]],[[17,[15]]]],[[[57,[[0,[1,2,23]]]]],[[4,[[0,[1,2,23]],15]]]],[[[57,[[0,[1,2,23]]]]],[[17,[15]]]],[[[57,[[0,[1,2,23]]]]],[[4,[[0,[1,2,23]],15]]]],[[[57,[[0,[1,2,23]]]]],15],[[[57,[[0,[1,2,23]]]],15]],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],15],22],[[[57,[[0,[1,2,23]]]],33,[37,[[0,[1,2,23]]]]],38],[15,57],[[[57,[[0,[1,2,23]]]]],17],[[[57,[[0,[1,2,23]]]]],17],[[[57,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]]],17],[[[57,[[0,[1,2,23]]]],15],17],[[[57,[[0,[1,2,23]]]],4]],[[[57,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]],[37,[[0,[1,2,23]]]]],[[0,[40,1]]]],[[[57,[[0,[1,2,23]]]],33,[37,[[0,[1,2,23]]]]]],[54,18],[56,18],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],15],[[17,[32]]]],[[]],[[]],[[]],[[],43],[56,60],0,[56,60],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[[57,[[0,[1,2,23]]]],34],17],[[[57,[[0,[1,2,23]]]]],40],[[[57,[[0,[1,2,23]]]],45],40],[[],46],[[],46],[[],46],[[[57,[[0,[1,2,23]]]]],[[17,[[13,[[59,[58]]]]]]]],[[[57,[[0,[1,2,23]]]],[0,[1,2,23]],15],22],0,[[[57,[[0,[1,2,23]]]]],[[0,[40,1]]]],[[[57,[[0,[1,2,23]]]]],[[0,[40,1]]]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,[[61,62],[[18,[63]]]],[[61,64,15],[[18,[62,65]]]],[[61,64,15,6],[[18,[62,66]]]],[[61,67],[[18,[62,65]]]],[67,6],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[67,67],[61,61],[63,63],[68,68],[65,65],[66,66],[[]],[[]],[[]],[[]],[[]],[[]],[[61,6],[[18,[62,63]]]],[[67,67],22],[[61,61],22],[[63,63],22],[[68,68],22],[[65,65],22],[[66,66],22],[[67,52],[[18,[67,67]]]],[[67,24],25],[[61,24],25],[[63,24],25],[[63,24],25],[[68,24],25],[[68,24],25],[[65,24],25],[[65,24],25],[[66,24],25],[[66,24],25],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[52,[[18,[67,[17,[67]]]]]],[[[4,[15,69]]],[[18,[61,63]]]],[62,[[18,[61,63]]]],[69],[[64,15],67],[67,[[18,[61,63]]]],[61,69],[[67,15],[[17,[67]]]],[[61,15],[[17,[67]]]],[61,[[18,[6]]]],[67,69],[67,15],0,[61,62],[[67,6],67],[[61,6],[[18,[62,68]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[67],[[61,6,6],[[18,[[17,[22]]]]]],[67,70],[61,70],[6,67],[70,17],0,[67,[[17,[67]]]],[71],[71],[71],[71],[[67,6],[[18,[67,67]]]],[67,72],[61,72],[61,67],[[]],[[]],[[]],[[]],[[]],[[]],[[],43],[[],43],[[],43],[[],43],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],0,[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[73,51],73],[[[74,[[0,[2,1]]]],51],[[74,[[0,[2,1]]]]]],[[73,52],73],[[[74,[[0,[2,1]]]],52],[[74,[[0,[2,1]]]]]],[[73,52],73],[[73,52],73],[[[74,[[0,[2,1]]]],[0,[2,1]],52],[[74,[[0,[2,1]]]]]],0,0,[[73,52],73],0,0,[[]],[[]],[[]],[[]],[67,73],[67,[[74,[[0,[2,1]]]]]],[[67,57],[[74,[[0,[2,1]]]]]],0,0,[[73,[0,[75,76,77]]],73],[[73,[0,[75,76,77]]],73],[[[74,[[0,[2,1]]]],[0,[75,76,77,1]]],[[74,[[0,[2,1]]]]]],[[[74,[[0,[2,1]]]],[0,[2,1]],[0,[75,76,77]]],[[74,[[0,[2,1]]]]]],[[73,[0,[75,76,77]]],73],[[]],[[]],[[]],[[]],0,0,[[73,57,[37,[[0,[1,2,23,76,77]]]]],73],[[73,52],73],[[73,52],73],[[[74,[[0,[2,1]]]],[0,[2,1]],52],[[74,[[0,[2,1]]]]]],[[73,52],73],0,0,[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],0,0,0,[[],46],[[],46],[[],46],[[],46],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,[51,39],[51,72],[55,72],0,0,[[[55,[2]],[55,[2]]]],[[[51,[[0,[1,2]]]],[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],[51,[[0,[1,2]]]]],[[55,[[0,[1,2]]]]]],[51,51],[[[51,[16]],6,52,75],56],[[[51,[[0,[1,2]]]],52],[[55,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[51,33],[[18,[20,78]]]],0,[[],[[17,[38]]]],[[],[[17,[60]]]],[[],[[17,[60]]]],[[],[[17,[38]]]],[[[51,[1]]],[[51,[1]]]],[[[79,[1,1]]],[[79,[1,1]]]],[[[80,[1,1]]],[[80,[1,1]]]],[[[55,[1]]],[[55,[1]]]],[[]],[[]],[[]],[[]],[[[79,[2,2]],79],14],[[[80,[2,2]],80],14],[[],51],[[],55],[79],[[],[[18,[55]]]],[[51,33],72],[[[51,[21]],51],22],[[[79,[21,21]],79],22],[[[80,[21,21]],80],22],[[78,78],22],[[[55,[21]],55],22],[[[51,[16]],6,52],72],[[[51,[16]],6,52],72],[51,72],[[[51,[23]],24],25],[[[79,[23,23]],24],25],[[[80,[23,23]],24],25],[[78,24],25],[[78,24],25],[[[55,[23]],24],25],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[51,72],[[[51,[16]],6,45],[[17,[10]]]],[[[51,[16]],6,34],17],[[51,45],[[17,[[81,[33]]]]]],[[51,45],[[17,[[79,[[81,[33]]]]]]]],[[51,34],[[17,[35]]]],[[[51,[[0,[1,2]]]]],[[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],45,[0,[1,2]]],[[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],45,20],[[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],[82,[[81,[33]]]]],[[55,[[0,[1,2]]]]]],[[[51,[[0,[1,2]]]],34,35],[[55,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[51,22],[[[55,[2]]],22],0,0,[[[51,[16]],6],72],[[[51,[[0,[1,2]]]]],[[51,[[0,[1,2]]]]]],[[[55,[2]]],[[55,[2]]]],[52,[[51,[[0,[1,2]]]]]],[83,17],[84,17],[[51,34],85],[[[79,[41,41]],79],[[17,[14]]]],[[[80,[41,41]],80],[[17,[14]]]],[71],[55,18],[[]],[[]],[[]],[[]],[[],43],[[[51,[16]],6,52,75],[[18,[56]]]],[[[51,[16]],6,52],72],[[[51,[16]],6,52],72],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[[51,[16]],6,45],[[18,[[17,[10]]]]]],[[[51,[16]],6,34],[[18,[17]]]],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[],18],[[[51,[16]],6],72],0,0,[[51,45],[[17,[[4,[15,35]]]]]],[[51,45],40],0,[55,72],0,0,[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[],46],[[[51,[[0,[1,2]]]],20],[[55,[[0,[1,2]]]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[51,[[0,[1,2]]]]],[[83,[[0,[1,2]]]]]],[[51,33],84],[[[51,[[0,[1,2]]]],45],[[84,[[0,[1,2]]]]]]],"p":[[8,"Clone"],[8,"Ord"],[3,"SpkTxOutIndex"],[3,"BTreeMap"],[3,"DescriptorId"],[3,"BlockId"],[3,"ConfirmationHeightAnchor"],[3,"ConfirmationTimeHeightAnchor"],[3,"Hash"],[4,"ChainPosition"],[4,"ConfirmationTime"],[3,"FullTxOut"],[3,"SpkIterator"],[4,"Ordering"],[15,"u32"],[8,"Anchor"],[4,"Option"],[4,"Result"],[8,"Deserializer"],[15,"u64"],[8,"PartialEq"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[3,"Block"],[15,"usize"],[3,"FromSliceError"],[15,"str"],[8,"Hash"],[8,"SliceIndex"],[3,"Script"],[3,"Transaction"],[3,"OutPoint"],[3,"TxOut"],[3,"ScriptBuf"],[8,"RangeBounds"],[3,"SignedAmount"],[3,"BTreeSet"],[8,"DoubleEndedIterator"],[8,"PartialOrd"],[8,"Serializer"],[3,"String"],[8,"ExactSizeIterator"],[3,"Txid"],[3,"TypeId"],[8,"Append"],[3,"ChangeSet"],[8,"Indexer"],[3,"IndexedTxGraph"],[3,"TxGraph"],[8,"IntoIterator"],[8,"Default"],[3,"ChangeSet"],[3,"ChangeSet"],[3,"Balance"],[3,"KeychainTxOutIndex"],[4,"DescriptorPublicKey"],[4,"Descriptor"],[3,"Amount"],[3,"LocalChain"],[6,"ChangeSet"],[3,"MissingGenesisError"],[3,"Header"],[3,"CannotConnectError"],[4,"ApplyHeaderError"],[3,"CheckPoint"],[3,"AlterCheckPointError"],[3,"BlockHash"],[3,"CheckPointIter"],[3,"Demand"],[8,"Iterator"],[3,"SyncRequest"],[3,"FullScanRequest"],[8,"FnMut"],[8,"Send"],[8,"Sync"],[4,"CalculateFeeError"],[3,"TxNode"],[3,"CanonicalTx"],[3,"Arc"],[8,"Into"],[3,"TxAncestors"],[3,"TxDescendants"],[3,"HashSet"],[8,"ChainOracle"],[8,"DescriptorExt"],[8,"AnchorFromBlockPosition"],[13,"Confirmed"],[13,"Unconfirmed"],[3,"SyncResult"],[3,"FullScanResult"]]},\ -"bdk_coin_select":{"doc":"","t":[3,3,4,4,3,3,13,6,13,3,4,13,13,13,3,4,3,13,13,17,13,13,13,13,13,3,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,12,11,12,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,12,12,12,12,11,11,11,11,12,11,12,12,11,12,12,12,11,11,11,11,12,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11],"n":["Bnb","BnbIter","BnbLimit","BranchStrategy","CoinSelector","CoinSelectorOpt","Continue","DecideStrategy","Duration","ExcessStrategy","ExcessStrategyKind","MinAbsoluteFee","MinDrainValue","Rounds","Selection","SelectionConstraint","SelectionError","SkipBoth","SkipInclusion","TXIN_BASE_WEIGHT","TargetFee","TargetValue","ToDrain","ToFee","ToRecipient","WeightedValue","advertise_new_score","all_selected","apply_selection","backtrack","base_weight","best_score","best_strategy","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","candidate","candidates","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","coin_select_bnb","current_excess","current_weight","deselect","drain_value","drain_waste","drain_weight","effective_target","effective_value","eq","eq","excess","excess_strategies","fee","feerate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward","from","from","from","from","from","from","from","from","from","from","from","from","from","from","fund_outputs","hash","input_count","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_segwit","is_selected","long_term_feerate","long_term_feerate","max_extra_target","min_absolute_fee","min_drain_value","new","new","new","next","opts","partial_cmp","pool","pool_pos","provide","recipient_value","rem_abs","rem_eff","select","select_all","select_until_finished","selected","selected","selected_absolute_value","selected_count","selected_effective_value","selected_indexes","selected_waste","selected_weight","selection","spend_drain_weight","target_feerate","target_value","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unselected","unselected_indexes","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","waste","weight","weight","will_continue"],"q":["bdk_coin_select","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Bnb represents the current state of the BnB algorithm.","","Determines how we should limit rounds of branch and bound.","Strategy in which we should branch.","CoinSelector selects and deselects from a set of …","","We continue exploring subtrees of this node, starting with …","Closure to decide the branching strategy, alongside a …","","","","Min absolute fee is not met","Min drain value is not met","","","","","We skip both the inclusion and omission branches of this …","We continue exploring ONLY the omission branch of this …","Txin “base” fields include outpoint (32+4) and …","The target fee (given the feerate) is not met","The target is not met","","","","A WeightedValue represents an input candidate for …","Compare the advertised score with the current best. The …","","","Attempt to backtrack to the previously selected node’s …","The weight of the template transaction, including fixed …","","Returns the ExcessStrategy that results in the least waste.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This is a variation of the Branch and Bound Coin Selection …","Current excess.","Current weight of template tx + selected inputs.","","","","Additional weight if we include the drain (change) output.","This is the effective target value.","Effective value of this input candidate: …","","","","","","Returns feerate in sats/wu.","","","","","","","","","","","","","Continue down this branch and skip the inclusion branch if …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","The total number of inputs; so we can calculate extra …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Turns our Bnb state into an iterator.","","","Whether this WeightedValue contains at least one segwit …","","","The feerate","Additional leeway for the target value.","The minimum absolute fee. I.e., needed for RBF.","Minimum value allowed for a drain (change) output.","Creates a new Bnb.","Create a new WeightedValue that represents a single input.","","","","","","","","","","","","","","","","Absolute value sum of all selected inputs.","","Effective value sum of all selected inputs.","","Waste sum of all selected inputs.","Weight sum of all selected inputs.","","Weight of spending the drain (change) output in the future.","The feerate we should try and achieve in sats per weight …","The value we need to select. If the value is None, then …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Total value of the UTXO(s) that this WeightedValue …","","","","","","","","","","","","","","Total weight of including this/these UTXO(s). txin fields: …","",""],"i":[0,0,0,0,0,0,34,0,22,0,0,11,11,22,0,0,0,34,34,0,11,11,12,12,12,0,2,4,5,2,9,2,5,34,2,26,22,8,9,4,10,11,5,12,13,34,2,26,22,8,9,4,10,11,5,12,13,4,4,8,9,4,10,11,5,12,13,8,9,4,10,11,5,12,13,12,0,4,4,4,13,9,9,4,8,11,12,5,5,13,13,4,8,9,4,10,10,11,11,5,12,12,13,2,34,2,26,22,22,22,8,9,4,10,11,5,12,13,9,12,8,34,2,26,22,8,9,4,10,11,5,12,13,2,26,4,8,4,9,9,9,9,9,2,8,4,26,4,12,2,2,10,13,2,2,4,4,4,4,5,4,4,4,4,4,4,2,9,9,9,8,9,4,10,11,5,12,13,10,11,12,34,2,26,22,8,9,4,10,11,5,12,13,34,2,26,22,8,9,4,10,11,5,12,13,34,2,26,22,8,9,4,10,11,5,12,13,4,4,8,34,2,26,22,8,9,4,10,11,5,12,13,13,8,13,34],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[2,[1]],1],3],[4,3],[5,6],[[[2,[1]]],3],0,0,[5],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[4,7],8],0,[8,8],[9,9],[4,4],[10,10],[11,11],[5,5],[12,12],[13,13],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[12,12],14],[4,[[15,[4]]]],[4,16],[4,17],[[4,7],3],0,[9,16],0,[4,16],[[8,18],16],[[11,11],3],[[12,12],3],0,0,0,[13,18],[4,[[19,[5,10]]]],[[8,20],21],[[9,20],21],[[4,20],21],[[10,20],21],[[10,20],21],[[11,20],21],[[11,20],21],[[5,20],21],[[12,20],21],[[12,20],21],[[13,20],21],[[[2,[1]],3]],[[]],[[]],[[]],[[]],[7,22],[23,22],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[24,17],9],[12],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[2,[1]],25],[[26,[1]]]],[[]],[4,3],0,[[4,7],3],[9,18],0,0,0,0,[[4,27,1],[[2,[1]]]],[[28,17,3],8],[[27,9],4],[[[26,[[0,[1,29,30]]]]],15],0,[[12,12],[[15,[14]]]],0,0,[31],0,0,0,[[4,7],3],[4],[4,[[19,[5,10]]]],[4,6],0,[4,28],[4,7],[4,16],[4,6],[4,16],[4,17],0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],32],[[],32],[[],32],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],19],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[[],33],[4,6],[4,6],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[34,3]],"p":[[8,"Ord"],[3,"Bnb"],[15,"bool"],[3,"CoinSelector"],[3,"Selection"],[8,"Iterator"],[15,"usize"],[3,"WeightedValue"],[3,"CoinSelectorOpt"],[3,"SelectionError"],[4,"SelectionConstraint"],[4,"ExcessStrategyKind"],[3,"ExcessStrategy"],[4,"Ordering"],[4,"Option"],[15,"i64"],[15,"u32"],[15,"f32"],[4,"Result"],[3,"Formatter"],[6,"Result"],[4,"BnbLimit"],[3,"Duration"],[3,"TxOut"],[6,"DecideStrategy"],[3,"BnbIter"],[3,"Vec"],[15,"u64"],[8,"Copy"],[8,"Display"],[3,"Demand"],[3,"String"],[3,"TypeId"],[4,"BranchStrategy"]]},\ -"bdk_electrum":{"doc":"This crate is used for updating structures of bdk_chain …","t":[8,3,3,2,11,11,11,11,2,11,11,10,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11],"n":["ElectrumExt","ElectrumFullScanResult","ElectrumSyncResult","bdk_chain","borrow","borrow","borrow_mut","borrow_mut","electrum_client","from","from","full_scan","into","into","sync","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","with_confirmation_height_anchor","with_confirmation_height_anchor","with_confirmation_time_height_anchor","with_confirmation_time_height_anchor"],"q":["bdk_electrum","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Trait to extend electrum_client::Client functionality.","The result of ElectrumExt::full_scan.","The result of ElectrumExt::sync.","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Full scan the keychain scripts specified with the …","Calls U::from(self).","Calls U::from(self).","Sync a set of scripts with the blockchain (via an Electrum …","","","","","","","","","Return FullScanResult with ConfirmationHeightAnchor.","Return SyncResult with ConfirmationHeightAnchor.","Return FullScanResult with ConfirmationTimeHeightAnchor.","Return SyncResult with ConfirmationTimeHeightAnchor."],"i":[0,0,0,0,6,10,6,10,0,6,10,16,6,10,16,6,10,6,10,6,10,6,10,6,10,6,10],"f":[0,0,0,0,[[]],[[]],[[]],[[]],0,[[]],[[]],[[[3,[[0,[1,2]]]],4,4,5],[[8,[[6,[[0,[1,2]]]],7]]]],[[]],[[]],[[9,4,5],[[8,[10,7]]]],[[],8],[[],8],[[],8],[[],8],[[],11],[[],11],[[]],[[]],[6,[[13,[12]]]],[10,[[14,[12]]]],[6,[[8,[[13,[15]],7]]]],[10,[[8,[[14,[15]],7]]]]],"p":[[8,"Ord"],[8,"Clone"],[3,"FullScanRequest"],[15,"usize"],[15,"bool"],[3,"ElectrumFullScanResult"],[4,"Error"],[4,"Result"],[3,"SyncRequest"],[3,"ElectrumSyncResult"],[3,"TypeId"],[3,"ConfirmationHeightAnchor"],[3,"FullScanResult"],[3,"SyncResult"],[3,"ConfirmationTimeHeightAnchor"],[8,"ElectrumExt"]]},\ -"bdk_esplora":{"doc":"BDK Esplora","t":[6,8,8,2,10,10,10,10],"n":["Error","EsploraAsyncExt","EsploraExt","esplora_client","full_scan","full_scan","sync","sync"],"q":["bdk_esplora","","","","","","",""],"d":["esplora_client::Error","Trait to extend the functionality of …","Trait to extend the functionality of …","","Scan keychain scripts for transactions against Esplora, …","Scan keychain scripts for transactions against Esplora, …","Sync a set of scripts with the blockchain (via an Esplora …","Sync a set of scripts with the blockchain (via an Esplora …"],"i":[0,0,0,0,13,14,13,14],"f":[0,0,0,0,[[[3,[[0,[1,2]]]],4,4],[[7,[[5,[[0,[1,2]]]],6]]]],[[3,4,4],[[10,[[9,[8]]]]]],[[11,4],[[7,[12,6]]]],[[11,4],[[10,[[9,[8]]]]]]],"p":[[8,"Ord"],[8,"Clone"],[3,"FullScanRequest"],[15,"usize"],[3,"FullScanResult"],[6,"Error"],[4,"Result"],[8,"Future"],[3,"Box"],[3,"Pin"],[3,"SyncRequest"],[3,"SyncResult"],[8,"EsploraExt"],[8,"EsploraAsyncExt"]]},\ -"bdk_file_store":{"doc":"BDK File Store","t":[3,13,3,4,13,13,13,4,3,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12],"n":["AggregateChangesetsError","Bincode","EntryIter","FileError","InvalidMagicBytes","Io","Io","IterError","Store","aggregate_changesets","append_changeset","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","changeset","create_new","drop","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into_iter","iter_changesets","iter_error","load_from_persistence","new","next","open","open_or_create_new","provide","provide","provide","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","write_changes","expected","got"],"q":["bdk_file_store","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_file_store::FileError",""],"d":["Error type for Store::aggregate_changesets.","Failure to decode data from the file.","Iterator over entries in a file store.","Error that occurs due to problems encountered with the …","Magic bytes do not match what is expected.","Failure to read from the file.","IO error, this may mean that the file is too short.","Error type for EntryIter.","Persists an append-only list of changesets (C) to a single …","Loads all the changesets that have been stored as one …","Append a new changeset to the file and truncate the file …","","","","","","","","","","","The partially-aggregated changeset.","Create a new Store file in write-only mode; error if the …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Iterates over the stored changeset from first to last, …","The error returned by EntryIter.","","","","Open an existing Store.","Attempt to open existing Store file; create it if the file …","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"i":[0,8,0,0,6,8,6,0,0,1,1,7,8,1,3,6,7,8,1,3,6,3,1,7,8,8,1,3,3,6,6,7,8,8,1,3,6,6,7,8,1,3,6,7,1,3,1,7,7,1,1,8,3,6,8,3,6,7,8,1,3,6,7,8,1,3,6,7,8,1,3,6,7,8,1,3,6,1,18,18],"f":[0,0,0,0,0,0,0,0,0,[1,[[4,[2,3]]]],[1,[[4,[5]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],[[4,[1,6]]]],[7],[[8,9],10],[[8,9],10],[[1,9],10],[[[3,[11]],9],10],[[3,9],10],[[6,9],10],[[6,9],10],[[]],[[]],[5,8],[[]],[[]],[[]],[5,6],[[]],[[]],[[]],[[]],[[]],[[]],[1,7],0,[1,[[12,[2]]]],[[13,14],7],[7,2],[[],[[4,[1,6]]]],[[],[[4,[1,6]]]],[15],[15],[15],[[],16],[[],16],[[],16],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],4],[[],17],[[],17],[[],17],[[],17],[[],17],[[]],[[]],[[]],[[]],[[]],[1,12],0,0],"p":[[3,"Store"],[4,"Option"],[3,"AggregateChangesetsError"],[4,"Result"],[3,"Error"],[4,"FileError"],[3,"EntryIter"],[4,"IterError"],[3,"Formatter"],[6,"Result"],[8,"Debug"],[6,"Result"],[15,"u64"],[3,"File"],[3,"Demand"],[3,"String"],[3,"TypeId"],[13,"InvalidMagicBytes"]]},\ -"bdk_hwi":{"doc":"HWI Signer","t":[3,11,11,11,11,11,11,11,11,11,11,11,11],"n":["HWISigner","borrow","borrow_mut","fmt","from","from_device","id","into","sign_transaction","try_from","try_into","type_id","vzip"],"q":["bdk_hwi","","","","","","","","","","","",""],"d":["Custom signer for Hardware Wallets","","","","Returns the argument unchanged.","Create a instance from the specified device and chain","","Calls U::from(self).","","","","",""],"i":[0,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,[[]],[[]],[[1,2],3],[[]],[[4,5],[[7,[1,6]]]],[[1,8],9],[[]],[[1,10,11,8],[[7,[12]]]],[[],7],[[],7],[[],13],[[]]],"p":[[3,"HWISigner"],[3,"Formatter"],[6,"Result"],[3,"HWIDevice"],[3,"HWIChain"],[4,"Error"],[4,"Result"],[3,"Secp256k1"],[4,"SignerId"],[3,"Psbt"],[3,"SignOptions"],[4,"SignerError"],[3,"TypeId"]]},\ -"bdk_persist":{"doc":"BDK Persist","t":[3,8,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,10],"n":["Persist","PersistBackend","borrow","borrow_mut","commit","fmt","from","into","load_from_persistence","new","stage","stage_and_commit","staged","try_from","try_into","type_id","vzip","write_changes"],"q":["bdk_persist","","","","","","","","","","","","","","","","",""],"d":["Persist wraps a PersistBackend to create a convenient …","A persistence backend for Persist.","","","Commit the staged changes to the underlying persistence …","","Returns the argument unchanged.","Calls U::from(self).","Return the aggregate changeset C from persistence.","Create a new Persist from PersistBackend.","Stage a changeset to be committed later with commit.","Stages a new changeset and commits it (along with any …","Get the changes that have not been committed yet.","","","","","Writes a changeset to the persistence backend."],"i":[0,0,1,1,1,1,1,1,8,1,1,1,1,1,1,1,1,8],"f":[0,0,[[]],[[]],[1,[[3,[2]]]],[[[1,[4]],5],[[7,[6]]]],[[]],[[]],[[],[[3,[2]]]],[[[0,[8,9,10]]],1],[1],[1,[[3,[2]]]],[1],[[],7],[[],7],[[],11],[[]],[[],3]],"p":[[3,"Persist"],[4,"Option"],[6,"Result"],[8,"Debug"],[3,"Formatter"],[3,"Error"],[4,"Result"],[8,"PersistBackend"],[8,"Send"],[8,"Sync"],[3,"TypeId"]]},\ -"bdk_testenv":{"doc":"","t":[3,2,2,2,12,11,11,2,12,2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11],"n":["TestEnv","anyhow","bitcoincore_rpc","bitcoind","bitcoind","borrow","borrow_mut","electrsd","electrsd","electrum_client","electrum_client","from","genesis_hash","into","invalidate_blocks","make_checkpoint_tip","mine_blocks","mine_empty_block","new","reorg","reorg_empty_blocks","reset_electrsd","rpc_client","send","try_from","try_into","type_id","vzip","wait_until_electrum_sees_block"],"q":["bdk_testenv","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Struct for running a regtest environment with a single …","","","","","","","","","","Exposes the ElectrumApi calls from the Electrum client.","Returns the argument unchanged.","Get the genesis hash of the blockchain.","Calls U::from(self).","Invalidate a number of blocks of a given size count.","Create a checkpoint linked list of all the blocks in the …","Mine a number of blocks of a given size count, which may …","Mine a block that is guaranteed to be empty even with …","Construct a new TestEnv instance with default …","Reorg a number of blocks of a given size count. Refer to …","Reorg with a number of empty blocks of a given size count.","","Exposes the RpcApi calls from bitcoincore_rpc.","Send a tx of a given amount to a given address.","","","","","This method waits for the Electrum notification indicating …"],"i":[0,0,0,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"f":[0,0,0,0,0,[[]],[[]],0,0,0,[1],[[]],[1,[[3,[2]]]],[[]],[[1,4],3],[1,5],[[1,4,[7,[6]]],[[3,[[8,[2]]]]]],[1,3],[[],[[3,[1]]]],[[1,4],[[3,[[8,[2]]]]]],[[1,4],[[3,[8]]]],[1,[[3,[1]]]],[1],[[1,6,9],[[3,[10]]]],[[],11],[[],11],[[],12],[[]],[1,3]],"p":[[3,"TestEnv"],[3,"BlockHash"],[6,"Result"],[15,"usize"],[3,"CheckPoint"],[3,"Address"],[4,"Option"],[3,"Vec"],[3,"Amount"],[3,"Txid"],[4,"Result"],[3,"TypeId"]]},\ -"bdk_tmp_plan":{"doc":"A spending plan or plan for short is a representation of a …","t":[3,8,13,13,13,13,3,3,4,4,3,3,13,13,4,13,13,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,11,11,11,11,11,11,11,11,12,12,11,5,11,11,11,11,11,12,12,12,12,12,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12],"n":["Assets","CanDerive","Complete","DerivationError","Incomplete","Legacy","Plan","PlanKey","PlanState","RequiredSignatures","Requirements","SatisfactionMaterial","Segwitv0","SigHashError","SigningError","TapKey","TapScript","asset_key","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","can_derive","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","default","default","derivation_hint","descriptor_key","ecdsa_sigs","expected_weight","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","hash160","hash160_images","hash160_preimages","hash256","hash256_images","hash256_preimages","into","into","into","into","into","into","into","into","keys","max_locktime","min_version","plan_satisfaction","provide","required_locktime","required_sequence","requirements","requires_hash_preimages","ripemd160","ripemd160_images","ripemd160_preimages","schnorr_sigs","sha256","sha256_images","sha256_preimages","sign_with_keymap","signatures","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_complete","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","txo_age","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_version","final_script_sig","final_script_witness","keys","keys","leaf_hash","merkle_root","plan_key","plan_keys"],"q":["bdk_tmp_plan","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_tmp_plan::PlanState","","bdk_tmp_plan::RequiredSignatures","","","","",""],"d":["","","The plan is complete","","","Legacy ECDSA signatures are required","A plan represents a particular spending path for a …","A plan key contains the asset key originally provided …","The returned value from Plan::try_complete.","The signatures required to complete the plan","Signatures and hash pre-images that must be provided to …","Signatures and hash pre-images that can be used to …","Segwitv0 ECDSA signatures are required","","","A Taproot key spend signature is required","Taproot script path signatures are required","The key the planner will sign with","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A hint from how to get from the asset key to the concrete …","The key that was in the descriptor that we are satisfying …","ECDSA signatures under their keys","The expected satisfaction weight for the plan if it is …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","required hash160 pre-images","hash160 pre-images under their images","","required hash256 pre-images","hash256 pre-images under their images","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","The minimum required transaction version required on the …","","","The minimum required locktime height or time on the …","The minimum required sequence (height or time) on the …","","Whether any hash pre-images are required in the plan","","required ripemd160 pre-images","ripemd160 pre-images under their images","Schnorr signautres under their keys","","required sha256 pre-images","SHA256 pre-images under their images","","required signatures","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Witness version for the plan","The script sig that should be set on the input","The witness that should be set on the input","","","The leaf hash of the script being used","The merkle root of the taproot output","the internal key","The keys in the script that require signatures"],"i":[0,0,33,7,33,6,0,0,0,0,0,0,6,7,0,6,6,8,33,5,6,7,8,9,10,11,33,5,6,7,8,9,10,11,36,5,6,7,8,9,10,11,5,6,7,8,9,10,11,5,6,10,11,8,8,10,9,5,6,7,7,8,9,10,11,33,5,6,7,7,7,8,9,10,11,11,5,10,11,5,10,33,5,6,7,8,9,10,11,11,11,9,0,7,9,9,9,5,11,5,10,10,11,5,10,6,5,5,6,7,8,9,10,11,7,9,33,5,6,7,8,9,10,11,33,5,6,7,8,9,10,11,11,33,5,6,7,8,9,10,11,33,5,6,7,8,9,10,11,9,37,37,38,39,40,41,41,40],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,[[3,[2]]]],[[[5,[4]]],[[5,[4]]]],[[[6,[4]]],[[6,[4]]]],[7,7],[[[8,[4]]],[[8,[4]]]],[[[9,[4]]],[[9,[4]]]],[10,10],[[[11,[4]]],[[11,[4]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],5],[[],6],[[],10],[[],11],0,0,0,[9,12],[[[5,[13]],14],15],[[[6,[13]],14],15],[[7,14],15],[[7,14],15],[[[8,[13]],14],15],[[[9,[13]],14],15],[[10,14],15],[[[11,[13]],14],15],[[]],[[]],[[]],[16,7],[[]],[17,7],[[]],[[]],[[]],[[]],0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[9,[[3,[18]]]],[[19,11],[[3,[9]]]],[20],[9,[[3,[21]]]],[9,[[3,[22]]]],[9,5],[5,23],0,0,0,0,0,0,0,[[[6,[24]],12,25,26,[3,[27]],[3,[28]],29,10,30],[[31,[23,7]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],32],[[9,10],33],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],[[],31],0,[[],34],[[],34],[[],34],[[],34],[[],34],[[],34],[[],34],[[],34],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[9,[[3,[35]]]],0,0,0,0,0,0,0,0],"p":[[3,"DefiniteDescriptorKey"],[3,"DerivationPath"],[4,"Option"],[8,"Clone"],[3,"Requirements"],[4,"RequiredSignatures"],[4,"SigningError"],[3,"PlanKey"],[3,"Plan"],[3,"SatisfactionMaterial"],[3,"Assets"],[15,"usize"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[4,"Error"],[4,"Error"],[15,"u32"],[4,"Descriptor"],[3,"Demand"],[4,"LockTime"],[3,"Sequence"],[15,"bool"],[4,"DescriptorPublicKey"],[6,"KeyMap"],[4,"Prevouts"],[4,"TapSighashType"],[4,"EcdsaSighashType"],[3,"SighashCache"],[3,"Secp256k1"],[4,"Result"],[3,"String"],[4,"PlanState"],[3,"TypeId"],[4,"WitnessVersion"],[8,"CanDerive"],[13,"Complete"],[13,"Legacy"],[13,"Segwitv0"],[13,"TapScript"],[13,"TapKey"]]},\ -"bdk_wallet":{"doc":"BDK Wallet","t":[13,13,2,13,4,13,3,2,2,4,2,3,11,11,11,11,11,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,12,12,0,14,11,11,11,11,11,11,11,11,11,11,14,11,11,11,11,11,11,11,11,11,11,12,12,0,11,12,11,0,12,11,11,11,2,2,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,12,5,11,11,11,11,0,12,12,12,13,6,4,2,4,6,8,6,8,16,4,3,13,13,2,8,4,13,13,6,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,10,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,12,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,10,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,5,13,13,4,13,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,13,13,4,13,3,6,13,13,6,13,13,13,13,13,13,13,13,13,13,13,4,3,4,13,13,13,13,13,4,4,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,12,11,11,11,12,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,3,3,3,3,3,3,3,3,8,6,3,3,3,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,13,8,4,4,4,16,16,8,4,13,8,8,3,8,13,13,13,16,4,6,13,13,13,13,13,16,13,3,13,8,4,13,13,13,3,3,4,3,13,6,13,13,13,5,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,11,5,11,10,11,11,5,10,11,11,12,12,11,11,11,11,11,11,10,12,11,11,11,11,11,10,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,8,10,10,10,3,4,3,13,3,13,13,13,13,4,8,4,13,13,13,13,13,13,4,4,13,13,13,13,13,13,13,3,3,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,0,11,12,11,11,11,11,11,11,11,11,11,11,11,11,0,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,12,11,12,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,0,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,5,12,12,12,12,12,12,12,12,12,12,13,13,3,13,8,3,6,4,4,13,3,13,3,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,5,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,4,13,13,13,4,13,13,13,13,13,13,13,13,4,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,3,6,12,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,13,13,13,13,13,13,13,8,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,3,8,4,4,4,3,3,3,13,4,8,13,11,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,10,11,11,11,10,11,12,11,12,11,11,11,11,11,11,11,11,12,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,4,4,4,13,3,13,13,4,3,13,13,13,13,13,13,3,8,4,13,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12],"n":["External","Foreign","HdKeyPaths","Internal","KeychainKind","Local","LocalOutput","SignOptions","TxBuilder","Utxo","Wallet","WeightedUtxo","as_byte","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","confirmation_time","derivation_index","descriptor","descriptor","deserialize","deserialize","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fragment","from","from","from","from","hash","hash","into","into","into","into","is_spent","keychain","keys","outpoint","outpoint","partial_cmp","psbt","satisfaction_weight","sequence","serialize","serialize","signer","template","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txout","txout","type_id","type_id","type_id","type_id","utxo","version","vzip","vzip","vzip","vzip","wallet","outpoint","psbt_input","sequence","Bare","DerivedDescriptor","Descriptor","DescriptorError","DescriptorPublicKey","ExtendedDescriptor","ExtractPolicy","HdKeyPaths","IntoWalletDescriptor","Key","Legacy","Miniscript","MultiXPub","Pkh","Policy","ScriptContext","Segwitv0","Sh","Single","TapKeyOrigins","Tr","Wpkh","Wsh","XPub","address","as_enum","as_enum","as_inner","as_node","at_derivation_index","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","build_template","build_template_mall","calc_checksum","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_pk","check_pk","check_pk","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","contains_raw_pkh","derive","derived_descriptor","derived_descriptor","desc_type","descriptor_id","deserialize","deserialize","dust_value","encode","eq","eq","eq","eq","error","explicit_script","ext","ext_check","extract_policy","extract_policy","extract_policy","find_derivation_index_for_spk","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from_ast","from_components_unchecked","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","into","into","into","into","into_inner","into_single_descriptors","into_wallet_descriptor","into_wallet_descriptor","is_deriveable","is_multipath","is_non_malleable","iter","iter_pk","lift","lift","lift_check","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","max_weight_to_satisfy","name_str","name_str","name_str","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","plan","plan_mall","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","substitute_raw_pkh","template","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","within_resource_limits","calc_checksum","calc_checksum_bytes","Base58","Bip32","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","MultiPath","Pk","Policy","borrow","borrow_mut","fmt","fmt","from","from","from","from","from","from","from","from","into","provide","to_string","try_from","try_into","type_id","vzip","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","Fingerprint","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","Pubkey","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","XOnlyPubkey","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contribution","csv","default","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","hash","hash","id","id","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","partial_cmp","provide","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","current_height","input_max_height","psbt","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","Bip86","Bip86Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2TR","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","build","build","build","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","MultiXPrv","MultiXPub","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_template","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_pk","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","derive","deserialize","encode","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","full_derivation_paths","generate","generate_default","generate_with_entropy","generate_with_entropy_default","has_secret","has_wildcard","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into_assets","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_single_keys","into_single_keys","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_multipath","is_multipath","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","new","num_der_paths","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","provide","sanity_check","satisfy","script_size","serialize","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressInfo","ApplyBlockError","Balance","CannotConnect","ChangeSet","ConfirmationHeightCannotBeGreaterThanTip","Descriptor","Descriptor","Descriptor","InsertTxError","IsDust","LoadError","LoadedDescriptorDoesNotMatch","LoadedGenesisDoesNotMatch","LoadedNetworkDoesNotMatch","MissingDescriptor","MissingGenesis","MissingNetwork","NewError","NewOrLoadError","NonEmptyDatabase","NotInitialized","NotInitialized","Persist","Persist","Persist","UnexpectedConnectedToHash","Update","Wallet","add","add_signer","address","all_unbounded_spk_iters","append","apply_block","apply_block_connected_to","apply_unconfirmed_txs","apply_update","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","calculate_fee","calculate_fee_rate","cancel_tx","chain","chain","checkpoints","clone","clone","clone","clone_into","clone_into","clone_into","coin_selection","commit","confirmed","default","default","default","deref","derivation_index","derivation_of_spk","descriptor_checksum","deserialize","deserialize","eq","eq","eq","error","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","get_balance","get_descriptor_for_keychain","get_psbt_input","get_signers","get_tx","get_utxo","graph","immature","index","indexed_tx_graph","insert_checkpoint","insert_tx","insert_txout","into","into","into","into","into","into","into","into","into","into","is_dust","is_empty","is_mine","keychain","keychains","last_active_indices","latest_checkpoint","list_output","list_unspent","list_unused_addresses","load","local_chain","mark_used","network","network","new","new_no_persist","new_no_persist_with_genesis_hash","new_or_load","new_or_load_with_genesis_hash","new_with_genesis_hash","next_derivation_index","next_unused_address","peek_address","policies","provide","provide","provide","provide","provide","public_descriptor","reveal_addresses_to","reveal_next_address","secp_ctx","sent_and_received","serialize","serialize","sign","signer","spk_index","staged","start_full_scan","start_sync_with_revealed_spks","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","total","transactions","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_builder","tx_graph","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","connected_to_hash","expected_hash","tip_height","tx_height","expected","expected","got","got","got","keychain","BnBNoExactMatch","BnBTotalTriesExceeded","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Error","Excess","InsufficientFunds","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","local_selected_amount","new","provide","selected","selected_amount","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","available","needed","amount","change_fee","dust_threshold","fee","remaining_amount","BuildFeeBumpError","ChangePolicyDescriptor","CoinSelection","Conversion","CreateTxError","Descriptor","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","InsufficientFunds","IrreplaceableTransaction","LockTime","MiniscriptPsbt","MiniscriptPsbtError","MissingKeyOrigin","MissingNonWitnessUtxo","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","OutputUpdate","Persist","Policy","Psbt","RbfSequence","RbfSequenceCsv","SpendingPolicyRequired","TransactionConfirmed","TransactionNotFound","UnknownUtxo","UnknownUtxo","UtxoUpdate","Version0","Version1Csv","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","provide","provide","provide","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","available","csv","needed","rbf","requested","required","required","required","FullyNodedExport","WalletExport","blockheight","borrow","borrow_mut","change_descriptor","descriptor","deserialize","export_wallet","fmt","fmt","from","from_str","into","label","serialize","to_string","try_from","try_into","type_id","vzip","All","Dummy","Exclude","External","Fingerprint","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","MiniscriptPsbt","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","None","PkHash","Segwitv0","SighashError","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","hash","id","id","id","id","ids","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","provide","remove","remove_partial_sigs","remove_taproot_extras","sign_input","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","AddForeignUtxoError","AddUtxoError","AllowShrinkingError","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","InvalidOutpoint","InvalidTxid","MissingScriptPubKey","MissingUtxo","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","UnknownUtxo","Untouched","add_data","add_foreign_utxo","add_foreign_utxo_with_sequence","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","coin_selection","current_height","default","default","default","default","do_not_spend_change","drain_to","drain_wallet","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","hash","hash","include_output_redeem_witness_script","into","into","into","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","provide","provide","provide","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","foreign_utxo","input_txid"],"q":["bdk_wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::Utxo","","","bdk_wallet::descriptor","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::descriptor::checksum","","bdk_wallet::descriptor::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::descriptor::policy","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::descriptor::policy::BuildSatisfaction","","","bdk_wallet::descriptor::policy::Satisfaction","","","","","","","","","","","bdk_wallet::descriptor::policy::SatisfiableItem","","","","","","","","","","bdk_wallet::descriptor::template","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::keys","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::psbt","","","","bdk_wallet::wallet","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::wallet::ApplyBlockError","","bdk_wallet::wallet::InsertTxError","","bdk_wallet::wallet::NewOrLoadError","","","","","","bdk_wallet::wallet::coin_selection","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::wallet::coin_selection::Error","","bdk_wallet::wallet::coin_selection::Excess","","","","","bdk_wallet::wallet::error","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::wallet::error::CreateTxError","","","","","","","","bdk_wallet::wallet::export","","","","","","","","","","","","","","","","","","","","","bdk_wallet::wallet::signer","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::wallet::signer::SignerContext","bdk_wallet::wallet::tx_builder","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","bdk_wallet::wallet::tx_builder::AddForeignUtxoError",""],"d":["External keychain, used for deriving recipient addresses.","A UTXO owned by another wallet.","","Internal keychain, used for deriving change addresses.","Types of keychains","A UTXO owned by the local wallet.","An unspent output owned by a Wallet.","","","An unspent transaction output (UTXO).","","A Utxo with its satisfaction_weight.","Return KeychainKind as a byte","","","","","","","","","","","","","","","","","","","","The confirmation time for transaction containing this utxo","The derivation index for the script pubkey in the wallet","Descriptors","Macro to write full descriptors with code","","","","","","","","","","","Macro to write descriptor fragments with code","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Whether this UTXO is spent or not","Type of keychain","Key formats","Get the location of the UTXO","Reference to a transaction output","","Additional functions on the rust-bitcoin Psbt structure.","The weight of the witness data and scriptSig expressed in …","Get the sequence number if an explicit sequence number has …","","","","","","","","","","","","","","","","","Get the TxOut of the UTXO","Transaction output","","","","","The UTXO","Get the version of BDK at runtime","","","","","Wallet","The location of the output.","The information about the input we require to add it to a …","The nSequence value to set for this input.","A raw scriptpubkey (including pay-to-pubkey) under Legacy …","Alias for a Descriptor that contains extended derived keys","Script descriptor","","The descriptor pubkey, either a single pubkey or an xpub.","Alias for a Descriptor that can contain extended keys …","Trait implemented on Descriptors to add a method to …","Alias for the type of maps that represent derivation paths …","Trait for types which can be converted into an …","The consensus key associated with the type. Must be a …","Legacy ScriptContext To be used as P2SH scripts For …","The top-level miniscript abstract syntax tree (AST).","Multiple extended public keys.","Pay-to-PubKey-Hash","","The ScriptContext for Miniscript. Additional type …","Segwitv0 ScriptContext","Pay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)","Single public key.","Alias for the type of maps that represent taproot key …","Pay-to-Taproot","Pay-to-Witness-PubKey-Hash","Pay-to-Witness-ScriptHash with Segwitv0 context","Extended public key (xpub).","Computes the Bitcoin address of the descriptor, if one …","","","Get a reference to the inner AstElem representing the root …","","Replaces all wildcards (i.e. /*) in the descriptor with a …","","","","","","","","","Enumerates all child nodes of the current AST node (self) …","Attempt to produce a non-malleable witness template given …","Attempt to produce a malleable witness template given the …","","Depending on script Context, some of the Terminals might …","","","Depending on script Context, some of the script resource …","","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","","","Policy rules at the Miniscript satisfaction time. It is …","","","Check the consensus + policy(if not disabled) rules …","Each context has slightly different rules on what Pks are …","","","Depending on ScriptContext, fragments can be malleable. …","","","Check whether the given satisfaction is valid under the …","","","Descriptor checksum","","","","","","","","","","","","","Whether the given miniscript contains a raw pkh fragment","Deprecated name for Self::at_derivation_index.","Convert all the public keys in the descriptor to …","Convert all the public keys in the descriptor to …","Get the DescriptorType of Descriptor","","","","","Encode as a Bitcoin script","","","","","Descriptor errors","Computes the the underlying script before any hashing is …","Additional information helpful for extra analysis.","Check whether the miniscript follows the given Extra …","Extract the spending policy","","","Utility method for deriving the descriptor at each index …","","","","","","","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Add type information(Type and Extdata) to Miniscript based …","Create a new Miniscript from a Terminal node and a Type …","","Parse a Miniscript from string and perform sanity checks …","Attempt to parse an Miniscripts that don’t follow the …","Attempt to parse an insane(scripts don’t clear sanity …","Parse an expression tree into a descriptor.","Parse an expression tree into a Miniscript. As a general …","Returns child node with given index, if any","Returns Option::Some with cloned n’th public key from …","Returns satisfying non-malleable witness and scriptSig to …","Returns a possilbly mallable satisfying non-malleable …","Whether the miniscript contains a combination of timelocks","Whether the miniscript has repeated Pk or Pkh","Whether or not the descriptor has any wildcards i.e. /*.","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Extracts the AstElem representing the root of the …","Get as many descriptors as different paths in this …","Convert to wallet descriptor","","Whether or not the descriptor has any wildcards","Whether this descriptor contains a key that has multiple …","Whether the miniscript is malleable","Creates a new Iter iterator that will iterate over all …","Creates a new PkIter iterator that will iterate over all …","","","Lifting corresponds to conversion of a miniscript into a …","Depending on script context, the size of a satifaction …","","","Maximum size, in bytes, of a satisfying witness. For …","Computes an upper bound on the weight of a satisfying …","Maximum number of witness elements used to satisfy the …","Computes an upper bound on the difference between a …","Local helper function to display error messages with …","","","Create a new bare descriptor from witness script Errors …","Create a new pk descriptor","Create a new PkH descriptor","Create a new sh for a given redeem script Errors when …","Create a new sh sortedmulti descriptor with threshold k …","Create a new sh wrapper for the given wpkh descriptor","Create a new sh wrapper for the given wsh descriptor","Create a new sh wrapped wpkh from Pk. Errors when …","Create a new sh wrapped wsh descriptor with witness script …","Create a new sh wrapped wsh sortedmulti descriptor from …","Create new tr descriptor Errors when miniscript exceeds …","Create a new Wpkh descriptor Will return Err if …","Create a new wsh descriptor from witness script Errors …","Create a new wsh sorted multi descriptor Errors when …","A node in the AST.","Other top level checks that are context specific","Attempt to parse a Script into Miniscript representation.","Parse a descriptor that may contain secret keys","Attempt to parse an insane(scripts don’t clear sanity …","Attempt to parse an miniscript with extra features that …","","","","","Get the len of public key when serialized based on context …","","","Returns a plan if the provided assets are sufficient to …","Returns a plan if the provided assets are sufficient to …","Descriptor policy","Whether all spend paths of miniscript require a signature","Checks whether the descriptor is safe.","Check whether the underlying Miniscript is safe under the …","Attempts to produce a non-malleable satisfying witness and …","Attempt to produce non-malleable satisfying witness for the","Attempt to produce a malleable satisfying witness for the …","Computes the scriptCode of a transaction output.","Computes the scriptpubkey of the descriptor.","Size, in bytes of the script-pubkey. If this Miniscript is …","","","The type of signature required for satisfaction","","","Substitutes raw public keys hashes with the public keys as …","Descriptor templates","","","","","","","Serialize a descriptor to string with its secret keys","Check top level consensus rules.","Check whether the top-level is type B","Converts a descriptor using abstract keys to one using …","Translates a struct from one generic to another where the …","","","","","","","","","The correctness and malleability type information for the …","","","","","Computes the scriptSig that will be in place for an …","","","","","Whether the miniscript can exceed the resource …","Compute the checksum of a descriptor, excludes any …","Compute the checksum bytes of a descriptor, excludes any …","Error during base58 decoding","BIP32 error","Errors related to the parsing and usage of descriptors","The descriptor contains hardened derivation steps on …","Hex decoding error","Invalid byte found in the descriptor checksum","The provided descriptor doesn’t match its checksum","Invalid HD Key path, such as having a wildcard but a …","Error thrown while working with keys","Miniscript error","The descriptor contains multipath keys","Key-related error","Error while extracting and manipulating policies","","","","","","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","","","","","","Absolute timeclock timestamp","Can not add to an item that is Satisfaction::None or …","Can not add to an item that is …","Options to build the satisfaction field in the policy","Can satisfy the policy item","An extra condition that must be satisfied but that is out …","Type for a map of sets of Condition items keyed by each set…","ECDSA Signature for a raw public key","An extended key fingerprint","Type for a map of folded sets of Condition items keyed by …","SHA256 then RIPEMD160 preimage hash","Double SHA256 preimage hash","Incompatible conditions (not currently used)","Index out of range for an item to satisfy a …","Can not merge CSV or timelock values unless both are less …","Multi-signature public keys with threshold count","Cannot satisfy or contribute to the policy item","Don’t generate satisfaction field","Not enough items are selected to satisfy a …","Only a partial satisfaction of some kind of threshold …","Can reach the threshold of some kind of threshold policy","A unique identifier for a key","Descriptor spending policy","Errors that can happen while extracting and manipulating …","Analyze the given PSBT to check for existing signatures","Like Psbt variant and also check for expired timelocks","A legacy public key","Relative timelock locktime","RIPEMD160 preimage hash","Represent if and how much a policy item is satisfied by …","An item that needs to be satisfied","Schnorr Signature for a raw public key","SHA256 preimage hash","Threshold items with threshold count","A x-only public key","","","","","","","","","","","","","","","","","","","","","","","","","","","How the wallet’s descriptor can satisfy this policy node","Optional CheckSequenceVerify condition","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the conditions that are set by the spending policy …","","","Returns a unique id for the SatisfiableItem","Identifier for this policy node","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns whether the SatisfiableItem is a leaf item","Returns whether the Satisfaction is a leaf item","Returns true if there are no extra conditions to verify","Type of this policy node","","","Return whether or not a specific path in the policy tree …","How much a given PSBT already satisfies this policy node …","","","","","","Optional timelock condition","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Current blockchain height","The highest confirmation height between the inputs CSV …","Given PSBT","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","Extra conditions that also need to be satisfied","The items that can be satisfied by the descriptor or are …","The items that can be satisfied by the descriptor","Threshold","Threshold","Total number of items","Total number of items","Whether the items are sorted in lexicographic order (used …","Whether the items are sorted in lexicographic order (used …","The digest value","The digest value","The digest value","The digest value","The policy items","The raw public key or extended key fingerprint","The required threshold count","The required threshold count","The timelock value","The timelock value","BIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)","BIP44 public template. Expands to pkh(key/{0,1}/*)","BIP49 template. Expands to …","BIP49 public template. Expands to sh(wpkh(key/{0,1}/*))","BIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)","BIP84 public template. Expands to wpkh(key/{0,1}/*)","BIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)","BIP86 public template. Expands to tr(key/{0,1}/*)","Trait for descriptor templates that can be built into a …","Type alias for the return type of DescriptorTemplate, …","P2PKH template. Expands to a descriptor pkh(key)","P2TR template. Expands to a descriptor tr(key)","P2WPKH template. Expands to a descriptor wpkh(key)","P2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))","","","","","","","","","","","","","","","","","","","","","","","","","Build the complete descriptor","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BIP32 error","Trait for keys that can be derived.","Container for public or secret keys","The descriptor pubkey, either a single pubkey or an xpub.","The descriptor secret key, either a single private key or …","Type specifying the amount of entropy required e.g. [u8;32]","Returned error in case of failure","Trait that adds extra useful methods to ScriptContexts","Enum for extended keys that can be either xprv or xpub","A bitcoin public key (compressed or uncompressed).","Trait that allows generating a key with the default options","Trait for keys that can be generated","Output of a GeneratableKey key generation","Trait for objects that can be turned into a public or …","The key has an invalid checksum","The key is not valid for the given network","The key cannot exist in the given script context","The consensus key associated with the type. Must be a …","Errors thrown while working with keys","Alias type for a map of public key to secret key","Legacy scripts","Custom error message","Miniscript error","Multiple extended private keys.","Multiple extended public keys.","Extra options required by the generate_with_entropy","A private extended key, aka an xprv","Options for generating a PrivateKey","A public extended key, aka an xpub","The ScriptContext for Miniscript. Additional type …","Enum representation of the known valid ScriptContexts","Segwitv0 scripts","Single public key.","Single private key.","A descriptor bitcoin::PrivateKey with optional origin …","A descriptor SinglePubKey with optional origin information.","Single public key without any origin or range information.","Contents of a “sortedmulti” descriptor","Taproot scripts","Set of valid networks for a key","An xonly public key.","Extended private key (xpriv).","Extended public key (xpub).","Create a set containing mainnet, testnet, signet, and …","Returns the ScriptContext as a ScriptContextEnum","Replaces any wildcard (i.e. /*) in the key with a …","","","","","","","","","","","","","","","","","","","","","","","","","Attempt to produce a witness template given the assets …","Depending on script Context, some of the Terminals might …","Depending on script Context, some of the script resource …","Check the consensus + policy(if not disabled) rules that …","Consensus rules at the Miniscript satisfaction time. It is …","Policy rules at the Miniscript satisfaction time. It is …","Check the consensus + policy(if not disabled) rules …","Each context has slightly different rules on what Pks are …","Depending on ScriptContext, fragments can be malleable. …","Check whether the given satisfaction is valid under the …","","","","","","","","","","","","","","","","","","","","","","","Whether the generated key should be “compressed” or not","","","Deprecated name for Self::at_derivation_index.","","Encode as a Bitcoin script","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Create an instance given a public key and a set of valid …","Create an instance given a secret key and a set of valid …","","","Parse an expression tree into a SortedMultiVec","Full path, from the master key","Returns a vector containing the full derivation paths from …","Generate a key given the options with a random entropy","Generate a key with the default options and a random …","Generate a key given the extra options and the entropy","Generate a key with the default options and a given entropy","Return whether or not the key contains the private data","Whether or not the key has a wildcard","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Turn the key into a DescriptorKey within the requested …","Consume self and turn it into a DescriptorKey by adding …","","","","","","Consume self and turn it into an ExtendedKey","","","Consumes self and returns the key","Get as many keys as derivation paths in this key.","Get as many keys as derivation paths in this key.","Transform the ExtendedKey into an Xpriv for the given …","Transform the ExtendedKey into an Xpub for the given …","Whether or not the key has a wildcard","Returns whether the script context is Legacy","Returns whether the script context is …","Whether or not this key has multiple derivation paths.","Whether or not this key has multiple derivation paths.","Returns whether the script context is Segwitv0","Returns whether the script context is …","Returns whether the script context is Tap, aka Taproot or …","Returns whether the script context is …","","","signatures required","The public key.","The private key.","","Create a set only containing mainnet","The fingerprint of the master key associated with this …","Depending on script context, the size of a satifaction …","Maximum size, in bytes, of a satisfying witness. In …","Maximum number of witness elements used to satisfy the …","Compute the intersection of two sets","Local helper function to display error messages with …","Create a new instance of SortedMultiVec given a list of …","","Origin information (fingerprint and derivation path).","Origin information (fingerprint and derivation path).","Other top level checks that are context specific","Override the computed set of valid networks","","","","","Get the len of public key when serialized based on context …","public keys inside sorted Multi","","utility function to sanity a sorted multi vec","Attempt to produce a satisfying witness for the witness …","Size, in bytes of the script-pubkey. If this Miniscript is …","","The type of signature required for satisfaction","Create Terminal::Multi containing sorted pubkeys","Create a set containing testnet and regtest","","","","","","","","","","Returns the public version of this key.","","","","","Check top level consensus rules.","Check whether the top-level is type B","This will panic if fpk returns an uncompressed key when …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Trait to add functions to extract utxos and calculate fees.","The total transaction fee amount, sum of input amounts …","The transaction’s fee rate. This value will only be …","Get the TxOut for the specified input index, if it doesn’…","A derived address and the index it was found at. For …","An error that may occur when applying a block to Wallet.","Balance, differentiated into various categories.","Occurs when the update chain cannot connect with original …","The changes made to a wallet by applying an Update.","The error variant that occurs when the caller attempts to …","There was problem with the passed-in descriptor(s).","There was a problem with the passed-in descriptor(s).","There is a problem with the passed-in descriptor.","An error that may occur when inserting a transaction into …","Trait to check if a value is below the dust limit. We are …","The error type when loading a Wallet from persistence.","The loaded desccriptor does not match what was provided.","The loaded genesis hash does not match what was provided.","The loaded network type does not match what was provided.","Data loaded from persistence is missing descriptor.","Data loaded from persistence is missing genesis hash.","Data loaded from persistence is missing network type.","The error type when constructing a fresh Wallet.","Error type for when we try load a Wallet from persistence …","Database already has data.","Wallet not initialized, persistence backend is empty.","Wallet is not initialized, persistence backend is empty.","We were unable to write the wallet’s data to the …","Loading data from the persistence backend failed.","Either writing to or loading from the persistence backend …","Occurs when the connected_to hash does not match the hash …","An update to Wallet.","A Bitcoin wallet","","Add an external signer","Address","Get unbounded script pubkey iterators for both Internal …","","Introduces a block of height to the wallet, and tries to …","Applies relevant transactions from block of height to the …","Apply relevant unconfirmed transactions to the wallet.","Applies an update to the wallet and stages the changes …","","","","","","","","","","","","","","","","","","","","","","Bump the fee of a transaction previously created with this …","Start building a transaction.","Calculates the fee of a given transaction. Returns 0 if tx …","Calculate the FeeRate for a given transaction.","Informs the wallet that you no longer intend to broadcast …","Update for the wallet’s internal LocalChain.","Changes to the LocalChain.","Get all the checkpoints the wallet is currently storing …","","","","","","","Coin selection","Commits all currently staged changed to the persistence …","Confirmed and immediately spendable balance","","","","","The derivation index of this wallet. It will return None …","Finds how the wallet derived the script pubkey spk.","Return the checksum of the public descriptor associated to …","","","","","","Errors that can be thrown by the Wallet","Wallet export","Finalize a PSBT, i.e., for each input determine if …","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the balance, separated into available, …","Returns the descriptor used to create addresses for a …","get the corresponding PSBT Input for a LocalUtxo","Get the signers","Get a single transaction from the wallet as a CanonicalTx …","Returns the utxo owned by this wallet corresponding to …","Update for the wallet’s internal TxGraph.","All coinbase outputs not yet matured","Child index of this address","Changes to IndexedTxGraph.","Add a new checkpoint to the wallet’s internal view of …","Add a transaction to the wallet’s internal view of the …","Inserts a TxOut at OutPoint into the wallet’s …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Check whether or not a value is below dust limit","","Return whether or not a script is part of this wallet …","Type of keychain","Iterator over all keychains in this wallet","Contains the last active derivation indices per keychain (K…","Returns the latest checkpoint.","List all relevant outputs (includes both spent and …","Return the list of unspent outputs of this wallet","List addresses that are revealed but unused.","Load Wallet from the given persistence backend.","Get a reference to the inner LocalChain.","Marks an address used of the given keychain at index.","Get the Bitcoin network the wallet is using.","Stores the network type of the wallet.","Initialize an empty Wallet.","Creates a wallet that does not persist data.","Creates a wallet that does not persist data, with a custom …","Either loads Wallet from persistence, or initializes it if …","Either loads Wallet from persistence, or initializes it if …","Initialize an empty Wallet with a custom genesis hash.","The index of the next address that you would get if you …","Get the next unused address for the given keychain, i.e. …","Peek an address of the given keychain at index without …","Return the spending policies for the wallet’s descriptor","","","","","","Return the “public” version of the wallet’s …","Reveal addresses up to and including the target index and …","Attempt to reveal the next address of the given keychain.","Return the secp256k1 context used for all signing …","Compute the tx’s sent and received Amounts.","","","Sign a transaction with all the wallet’s signers, in the …","Generalized signers","Get a reference to the inner KeychainTxOutIndex.","Returns the changes that will be committed with the next …","Create a `FullScanRequest for this wallet.","Create a partial SyncRequest for this wallet for all …","","","","","","","","","","","Get the whole balance visible to the wallet.","Iterate over the transactions in the wallet.","Unconfirmed UTXOs generated by a wallet tx","Get sum of trusted_pending and confirmed coins.","","","","","","","","","","","","","","","","","","","","","Transaction builder","Get a reference to the inner TxGraph.","","","","","","","","","","","Get an unbounded script pubkey iterator for the given …","Undoes the effect of mark_used and returns whether the …","Unconfirmed UTXOs received from an external wallet","","","","","","","","","","","Deterministically generate a unique name given the …","Block hash of connected_to.","Expected block hash of connected_to, as derived from block.","The internal chain’s tip height.","The introduced transaction’s confirmation height.","The expected genesis block hash.","The expected network type.","The block hash loaded from persistence.","The network type loaded from persistence.","The descriptor loaded from persistence.","The keychain of the descriptor not matching","Branch and bound coin selection tries to avoid needing a …","Branch and bound coin selection possible attempts with …","Branch and bound coin selection","It’s possible to create spendable output from excess …","Trait for generalized coin selection algorithms","Result of a successful coin selection","Default coin selection algorithm used by TxBuilder if not …","Errors that can be thrown by the coin_selection module","Remaining amount after performing coin selection","Wallet’s UTXO set is not enough to cover recipient’s …","Simple and dumb coin selection","It’s not possible to create spendable output from excess …","OldestFirstCoinSelection always picks the utxo with the …","","","","","","","","","","","","","","","","","","","Perform the coin selection","","","","Decide if change can be created","","","","Remaining amount after deducing fees and outgoing outputs","Total fee amount for the selected utxos in satoshis","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","The total value of the inputs selected from the local …","Create new instance with target size for change output","","List of outputs selected for use as inputs","The total value of the inputs selected.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Sats available for spending","Sats needed for some transaction","Effective amount available to create change after …","The calculated fee for the drain TxOut with the selected …","Threshold to consider amount as dust for this particular …","The deducted change output fee","Exceeding amount of current selection over outgoing value …","Error returned from Wallet::build_fee_bump","The change_policy was set but the wallet does not have a …","There was an error with coin selection","Descriptor key conversion error","Error returned from TxBuilder::finish","There was a problem with the descriptors passed in","When bumping a tx the fee rate requested is lower than …","Node doesn’t have data to estimate a fee rate","When bumping a tx the absolute fee requested is lower than …","Wallet’s UTXO set is not enough to cover recipient’s …","Trying to replace a tx that has a sequence >= 0xFFFFFFFE","Requested LockTime is less than is required to spend from …","Miniscript PSBT error","Errors returned by miniscript when updating inconsistent …","In order to use the TxBuilder::add_global_xpubs option …","Missing non_witness_utxo on foreign utxo for given OutPoint","Cannot build a tx without recipients","manually_selected_only option is selected but no utxo has …","Output created is under the dust limit, 546 satoshis","Return error type for …","We were unable to load wallet data from or write wallet …","There was a problem while extracting and manipulating …","Partially signed bitcoin transaction error","Cannot enable RBF with a Sequence >= 0xFFFFFFFE","Cannot enable RBF with Sequence given a required OP_CSV","Spending policy is not compatible with this KeychainKind","Happens when trying to bump a transaction that is already …","Thrown when a tx is not found in the internal database","Happens when trying to spend an UTXO that is not in the …","Happens when trying to spend an UTXO that is not in the …","Return error type for PsbtExt::update_input_with_descriptor","Requested invalid transaction version ‘0’","Requested transaction version 1, but at least 2 is needed …","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","Sats available for spending","Required OP_CSV Sequence","Sats needed for some transaction","Given RBF Sequence","Requested LockTime","Required LockTime","Required fee absolute value (satoshi)","Required fee rate","Structure that contains the export of a wallet","Alias for FullyNodedExport","Earliest block to rescan when looking for the wallet’s …","","","Return the internal descriptor, if present","Return the external descriptor","","Export a wallet","","","Returns the argument unchanged.","","Calls U::from(self).","Arbitrary label for the wallet","","","","","","","The signer will sign all the leaves it has a key for.","Dummy identifier","The signer won’t sign the specified leaves.","To be used only by external libraries implementing …","The fingerprint of a BIP32 extended key","The signer won’t sign leaves other than the ones …","Input index is out of range","PSBT Input signer","The private key in use has the right fingerprint but …","The non_witness_utxo specified is invalid","Invalid SIGHASH for the signing context in use","Legacy context","Miniscript PSBT error","The fingerprint and derivation path are missing from the …","The private key is missing for the required public key","The non_witness_utxo field of the transaction is required …","The witness_script field of the transaction is required to …","The witness_utxo field of the transaction is required to …","The psbt contains a non-SIGHASH_ALL sighash in one of its …","The signer won’t sign any leaf.","Bitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …","Segwit v0 context (BIP 143)","Error while computing the hash to sign","Options for a software signer","Common signer methods","Signing context","Signing error","Identifier of a signer in the SignersContainers. Used as a …","Defines the order in which signers are called","Wrapper to pair a signer with its context","Container for multiple signers","Taproot context (BIP 340)","Customize which taproot script-path leaves the signer …","PSBT signer","The user canceled the operation","Adds an external signer to the container for the specified …","Whether the signer should use the sighash_type set in the …","Whether we should grind ECDSA signature to ensure signing …","Create a map of public keys to secret keys","Whether the wallet should assume a specific height has …","","","","","","","","","","","","","","","","","Build a new signer container from a KeyMap","","","","","","","","","","","","","","","","","","","","","","Return the secret key for the signer","","","","","","","","Finds the signer with lowest ordering for a given id in …","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Return the SignerId for this signer","","","","Returns the list of identifiers of all the signers in the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Create a wrapped signer from a signer and a context","Default constructor","","","","Removes a signer from the container and returns it","Whether to remove partial signatures from the PSBT inputs …","Whether to remove taproot specific fields from the PSBT on …","Sign a single psbt input","","","","Sign all the inputs of the psbt","","Whether we should try to sign a taproot transaction with …","Returns the list of signers in the container, sorted by …","Specifies which Taproot script-spend leaves we should sign …","","","","","","","","","Whether the signer should trust the witness_utxo, if the …","Whether to try finalizing the PSBT after the inputs are …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether the signer can sign for the internal key or not","Error returned from TxBuilder::add_foreign_utxo.","Error returned from TxBuilder::add_utxo and …","Error returned from TxBuilder::allow_shrinking","BIP69 / Lexicographic","Marker type to indicate the TxBuilder is being used to …","Use both change and non-change outputs (default)","Only use non-change outputs (see …","Policy regarding the use of change outputs when creating a …","Marker type to indicate the TxBuilder is being used to …","Requested outpoint doesn’t exist in the tx (vout greater …","Foreign utxo outpoint txid does not match PSBT input txid","Script/PubKey was not in the original transaction","Foreign utxo missing witness_utxo or non_witness_utxo","Only use change outputs (see TxBuilder::only_spend_change)","Randomized (default)","A transaction builder","Context in which the TxBuilder is valid","Ordering of the transaction’s inputs and outputs","Happens when trying to spend an UTXO that is not in the …","Unchanged","Add data as an output, using OP_RETURN","Add a foreign UTXO i.e. a UTXO not owned by this wallet.","Same as add_foreign_utxo but allows to set the nSequence …","Fill-in the PSBT_GLOBAL_XPUB field with the extended keys …","Add a recipient to the internal list","Add a utxo to the internal list of unspendable utxos","Add a utxo to the internal list of utxos that must be spent","Add the list of outpoints to the internal list of UTXOs …","Set whether or not the dust limit is checked.","Explicitly tells the wallet that it is allowed to reduce …","","","","","","","","","","","","","","","","","Set a specific ChangeSpendPolicy. See …","","","","","","","","","","","","","Choose the coin selection algorithm","Set the current blockchain height.","","","","","Do not spend change outputs","Sets the address to drain excess coins to.","Spend all the available inputs. This respects filters like …","Enable signaling RBF","Enable signaling RBF with a specific nSequence value","","","Set an absolute fee The fee_absolute method refers to the …","Set a custom fee rate.","Finish building the transaction.","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","Fill-in the psbt::Output::redeem_script and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Only spend utxos added by add_utxo.","Use a specific nLockTime while creating the transaction","Only spend change outputs","Only Fill-in the psbt::Input::witness_utxo field when …","Choose the ordering for inputs and outputs of the …","","","Set the policy path to use while creating the transaction …","","","","Replace the recipients already added with a new list","Sign with a specific sig hash","Sort transaction inputs and outputs by TxOrdering variant","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Replace the internal list of unspendable utxos with a new …","Build a transaction with a specific version","","","","","","","","","Foreign UTXO outpoint","PSBT input txid"],"i":[1,5,0,1,0,5,0,0,0,0,0,0,1,1,1,3,4,5,1,3,4,5,0,1,3,4,5,1,3,4,5,1,3,3,0,0,1,3,1,3,4,5,1,3,4,5,0,1,3,4,5,1,3,1,3,4,5,3,3,0,5,3,1,0,4,5,1,3,0,0,1,3,4,5,1,3,4,5,1,3,4,5,5,3,1,3,4,5,4,0,1,3,4,5,0,209,209,209,17,0,0,0,0,0,0,0,0,49,0,0,26,17,0,0,0,17,26,0,17,17,17,26,17,35,36,23,23,17,17,35,36,23,17,35,36,23,23,23,23,0,49,35,36,49,36,49,49,35,36,49,35,36,49,49,35,36,49,35,36,49,35,36,0,17,35,36,23,17,35,36,23,17,35,36,23,23,17,17,17,17,17,17,23,17,23,17,35,36,23,0,17,23,23,210,17,23,17,17,17,35,36,23,23,17,23,17,17,17,17,17,17,17,35,36,23,23,23,17,23,23,23,17,23,23,23,17,17,23,23,17,17,35,36,23,17,35,36,23,23,17,175,63,17,17,23,23,23,17,23,23,49,35,36,23,17,23,17,49,35,36,17,17,17,17,17,17,17,17,17,17,17,17,17,17,23,49,23,17,23,23,17,35,36,23,49,35,36,17,17,0,23,17,23,17,23,23,17,17,23,17,23,49,35,36,23,0,17,35,36,23,17,23,17,49,49,17,23,17,35,36,23,17,35,36,23,23,17,35,36,23,17,17,35,36,23,23,0,0,48,48,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,84,77,77,0,85,0,0,84,83,0,84,84,77,77,77,84,85,46,77,85,85,0,0,0,46,46,83,84,84,0,0,84,84,84,83,83,84,85,47,86,77,46,83,84,85,47,86,77,46,83,84,85,47,86,46,83,84,85,47,86,46,47,86,86,83,84,85,47,86,77,83,84,85,47,86,77,77,46,83,84,85,85,47,47,86,77,46,47,83,86,84,47,83,84,85,47,86,77,46,84,85,86,47,86,77,47,47,83,84,85,47,86,86,83,84,85,47,86,46,77,83,84,85,47,86,77,46,83,84,85,47,86,77,46,83,84,85,47,86,77,46,83,84,85,47,86,77,46,211,211,211,212,213,214,213,214,213,214,213,214,213,214,215,216,217,218,219,220,220,219,221,222,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,223,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,87,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,89,90,91,93,95,96,97,98,99,100,101,102,81,0,0,0,0,224,224,0,0,111,0,0,0,0,81,81,81,49,0,0,22,81,81,108,26,224,115,0,115,0,0,22,26,108,0,0,0,0,22,0,111,108,26,0,225,26,115,106,113,22,107,81,104,26,108,109,110,111,115,106,113,22,107,81,104,26,108,109,110,111,104,49,49,49,49,49,49,49,49,49,106,22,107,104,26,108,109,110,111,106,22,107,104,26,108,109,110,111,104,26,109,111,107,107,106,26,26,104,22,104,26,108,109,110,111,113,22,107,81,81,104,104,26,26,108,108,109,110,111,104,115,115,115,106,113,22,107,81,81,81,104,26,26,108,109,110,111,113,113,26,108,104,26,26,224,226,224,226,115,26,104,26,109,111,115,106,113,22,107,81,104,26,108,109,110,111,26,88,94,106,106,113,26,108,94,115,106,106,26,108,115,115,26,225,22,26,108,225,22,225,22,26,26,104,109,110,104,0,26,49,104,104,0,49,104,26,109,110,49,113,104,26,109,111,49,104,81,104,104,104,26,49,104,0,106,22,107,104,26,108,109,110,111,108,81,104,26,108,49,49,104,115,106,113,22,107,81,104,26,108,109,110,111,115,106,113,22,107,81,104,26,108,109,110,111,115,106,113,22,107,81,104,26,108,109,110,111,115,106,113,22,107,81,104,26,108,109,110,111,0,227,227,227,0,0,0,156,0,155,152,153,154,0,0,0,154,154,154,153,153,153,0,0,152,153,154,152,153,154,156,0,0,123,124,148,124,129,124,124,124,124,124,123,124,135,129,148,152,153,154,155,156,123,124,135,129,148,152,153,154,155,156,124,124,124,124,124,135,129,124,123,135,129,123,135,129,0,124,123,123,135,129,148,124,124,124,123,129,123,129,148,0,0,124,123,123,124,135,129,148,148,152,152,153,153,154,154,155,155,156,156,123,124,135,135,135,129,129,129,148,152,153,154,155,156,124,124,124,124,124,124,135,123,148,129,124,124,124,123,124,135,129,148,152,153,154,155,156,228,129,124,148,124,135,124,124,124,124,124,124,124,124,129,124,124,124,124,124,124,124,124,124,124,152,153,154,155,156,124,124,124,124,124,123,129,124,0,124,124,124,124,123,135,129,123,148,152,153,154,155,156,123,124,123,123,123,124,135,129,148,152,153,154,155,156,123,124,135,129,148,152,153,154,155,156,0,124,123,124,135,129,148,152,153,154,155,156,124,124,123,123,124,135,129,148,152,153,154,155,156,0,229,229,230,230,231,232,231,232,233,233,185,185,0,186,0,0,0,0,0,185,0,186,0,185,186,184,181,182,183,185,186,184,181,182,183,181,182,183,181,182,183,201,181,182,183,0,181,182,183,184,184,185,185,186,184,181,182,183,185,186,184,181,182,183,185,186,184,181,182,183,184,183,185,184,184,181,182,183,185,185,186,184,181,182,183,185,186,184,181,182,183,185,186,184,181,182,183,185,186,184,181,182,183,234,234,235,236,236,235,236,0,165,165,187,0,165,165,142,165,165,142,165,165,0,165,165,165,165,165,187,165,165,165,165,165,165,142,142,165,142,187,165,165,187,165,142,187,165,142,187,187,187,187,165,165,142,142,187,165,165,165,165,165,165,142,187,165,142,187,165,142,187,187,165,142,187,165,142,187,165,142,187,165,142,187,165,142,237,238,237,238,239,239,240,241,0,0,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,189,195,190,195,151,190,195,151,0,151,151,151,192,151,151,151,151,151,151,151,195,190,192,151,0,0,0,0,0,0,0,0,192,0,0,151,45,150,150,45,150,190,151,192,194,125,45,150,195,190,151,192,194,125,45,150,195,45,190,192,194,125,45,150,195,190,192,194,125,45,150,195,190,125,125,45,150,195,194,242,194,194,194,190,192,125,195,45,190,151,151,192,194,125,45,150,195,190,190,190,151,151,192,194,125,45,150,195,190,242,194,194,194,45,190,151,192,194,125,45,150,195,194,45,190,125,151,45,150,150,243,194,194,194,126,194,150,45,150,190,192,194,125,45,150,195,151,150,150,190,151,192,194,125,45,150,195,190,151,192,194,125,45,150,195,190,151,192,194,125,45,150,195,190,151,192,194,125,45,150,195,244,0,0,0,206,0,205,205,0,0,202,202,204,202,205,206,0,0,0,203,206,141,141,141,141,141,141,141,141,141,141,143,140,141,203,202,204,206,205,143,140,141,203,202,204,206,205,141,143,140,141,206,205,143,140,141,206,205,206,205,141,141,143,140,206,205,141,141,141,141,141,206,205,141,141,141,143,140,141,203,203,202,202,204,204,206,205,143,140,141,203,202,204,206,205,206,205,141,143,140,141,203,202,204,206,205,141,141,141,141,141,206,205,141,203,202,204,141,141,206,143,140,141,206,205,203,202,204,143,140,141,203,202,204,206,205,143,140,141,203,202,204,206,205,143,140,141,203,202,204,206,205,141,141,143,140,141,203,202,204,206,205,245,245],"f":[0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[1],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[1,1],[3,3],[4,4],[5,5],[[]],[[]],[[]],[[]],[[1,1],6],0,0,0,0,[[],[[7,[1]]]],[[],[[7,[3]]]],[[1,1],8],[[3,3],8],[[4,4],8],[[5,5],8],[[1,9],10],[[3,9],10],[[4,9],10],[[5,9],10],0,[[]],[[]],[[]],[[]],[1],[3],[[]],[[]],[[]],[[]],0,0,0,[5,11],0,[[1,1],[[12,[6]]]],0,0,[5,[[12,[13]]]],[1,7],[3,7],0,0,[[]],[[]],[[]],[[]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[5,14],0,[[],15],[[],15],[[],15],[[],15],0,[[],16],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[17,18],[[7,[[20,[19]],21]]]],[[],22],[[],22],[23,24],[23,[[25,[23]]]],[[[17,[26]],27],[[7,[[17,[28]],29]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[23,[[31,[23,30]]]],[23,[[33,[32]]]],[23,[[33,[32]]]],0,[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[24,[[7,[34]]]],[24,[[7,[34]]]],[24,[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],[[],[[7,[34]]]],0,[17,17],[35,35],[36,36],[23,23],[[]],[[]],[[]],[[]],[[17,17],6],[[35,35],6],[[36,36],6],[[23,23],6],[23,8],[[[17,[26]],27],[[7,[[17,[28]],29]]]],[[[17,[28]],37],[[7,[[17,[38]],29]]]],[[[17,[26]],37,27],[[7,[[17,[38]],29]]]],[17,39],[[[17,[26]]],40],[[],[[7,[17]]]],[[],[[7,[23]]]],[[[17,[26]]],41],[23,42],[[17,17],8],[[35,35],8],[[36,36],8],[[23,23],8],0,[17,[[7,[42,21]]]],0,[[23,43],[[7,[44]]]],[[45,46,37],[[7,[[12,[47]],48]]]],[[[17,[26]],45,46,37],[[7,[[12,[47]],48]]]],[[[23,[26,49]],45,46,37],[[7,[[12,[47]],48]]]],[[[17,[26]],37,50,[51,[27]]],[[7,[12,29]]]],[[17,9],[[7,[52]]]],[[17,9],[[7,[52]]]],[[35,9],[[7,[52]]]],[[36,9],[[7,[52]]]],[[23,9],[[7,[52]]]],[[23,9],[[7,[52]]]],[17,8],[23,8],[53,17],[54,17],[55,17],[[]],[56,17],[57,17],[58,17],[[]],[[]],[[]],[24,[[7,[23,21]]]],[[24,59,60],23],[16,[[7,[17,21]]]],[16,[[7,[23,21]]]],[[16,43],[[7,[23,21]]]],[16,[[7,[23,21]]]],[61,[[7,[17,21]]]],[61,[[7,[23,21]]]],[[23,62],[[12,[23]]]],[[23,62],12],[17,[[7,[21]]]],[17,[[7,[21]]]],[23,8],[23,8],[[[17,[26]]],8],[17],[35],[36],[23],[[]],[[]],[[]],[[]],[23,24],[[[17,[26]]],[[7,[[31,[[17,[26]],30]],21]]]],[[37,18],[[7,[48]]]],[[63,37,18],[[7,[48]]]],[[[17,[26]]],8],[[[17,[26]]],8],[23,8],[23,64],[23,65],[17,[[7,[66,21]]]],[23,[[7,[66,21]]]],[23,[[7,[67]]]],[23,[[12,[62]]]],[23,[[12,[62]]]],[23,[[12,[62]]]],[23,[[7,[62,21]]]],[17,[[7,[62,21]]]],[23,[[7,[62,21]]]],[17,[[7,[62,21]]]],[[],16],[[],16],[[],16],[[[23,[68]]],[[7,[17,21]]]],[[],17],[[],[[7,[17,21]]]],[[[23,[35]]],[[7,[17,21]]]],[[62,[31,[30]]],[[7,[17,21]]]],[58,17],[57,17],[[],[[7,[17,21]]]],[[[23,[36]]],[[7,[17,21]]]],[[62,[31,[30]]],[[7,[17,21]]]],[[[12,[69]]],[[7,[17,21]]]],[[],[[7,[17,21]]]],[[[23,[36]]],[[7,[17,21]]]],[[62,[31,[30]]],[[7,[17,21]]]],0,[23,[[7,[21]]]],[50,[[7,[23,21]]]],[[37,16],[[7,[21]]]],[50,[[7,[23,21]]]],[[50,43],[[7,[23,21]]]],[[17,17],[[12,[6]]]],[[35,35],[[12,[6]]]],[[36,36],[[12,[6]]]],[[23,23],[[12,[6]]]],[[],62],[[],62],[[],62],[[[17,[28]]],[[7,[70,[17,[28]]]]]],[[[17,[28]]],[[7,[70,[17,[28]]]]]],0,[23,8],[17,[[7,[21]]]],[23,[[7,[44]]]],[[17,71],[[7,[21]]]],[23,[[7,[[31,[[31,[2,30]],30]],21]]]],[23,[[7,[[31,[[31,[2,30]],30]],21]]]],[17,[[7,[42,21]]]],[17,42],[23,62],[17,7],[23,7],[[],72],[[],72],[[],72],[[23,73],23],0,[[]],[[]],[[]],[[]],[[],74],[[],74],[[[17,[26]],73],74],[23,[[7,[21]]]],[23,[[7,[21]]]],[17,[[7,[75]]]],[23,[[7,[75]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],0,[[],15],[[],15],[[],15],[[],15],[17,42],[[]],[[]],[[]],[[]],[23,8],[16,[[7,[74,48]]]],[16,[[7,[48]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[48,9],10],[[48,9],10],[76,48],[77,48],[78,48],[21,48],[79,48],[80,48],[81,48],[[]],[[]],[82],[[],74],[[],7],[[],7],[[],15],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[83,83],[84,84],[85,85],[47,47],[86,86],[46,46],[[]],[[]],[[]],[[]],[[]],[[]],0,0,[[],86],[[83,83],8],[[84,84],8],[[85,85],8],[[47,47],8],[[86,86],8],[[77,77],8],[[83,9],10],[[84,9],10],[[85,9],10],[[47,9],10],[[86,9],10],[[77,9],10],[[77,9],10],[[46,9],10],[[]],[[]],[[]],[8,85],[[]],[84,47],[[]],[[]],[[]],[[47,73],[[7,[86,77]]]],[83],[86],[84,74],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[84,8],[85,8],[86,8],0,[[86,86],[[12,[6]]]],[82],[47,8],0,[83,7],[84,7],[85,7],[47,7],[86,7],0,[[]],[[]],[[]],[[]],[[]],[[]],[[],74],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[18,[[7,[87,48]]]],[[[89,[[88,[35]]]],18],[[7,[87,48]]]],[[[90,[[88,[36]]]],18],[[7,[87,48]]]],[[[91,[[88,[36]]]],18],[[7,[87,48]]]],[[[93,[[88,[92]]]],18],[[7,[87,48]]]],[[[95,[[94,[35]]]],18],[[7,[87,48]]]],[[[96,[[94,[35]]]],18],[[7,[87,48]]]],[[[97,[[94,[36]]]],18],[[7,[87,48]]]],[[[98,[[94,[36]]]],18],[[7,[87,48]]]],[[[99,[[94,[36]]]],18],[[7,[87,48]]]],[[[100,[[94,[36]]]],18],[[7,[87,48]]]],[[[101,[[94,[92]]]],18],[[7,[87,48]]]],[[[102,[[94,[92]]]],18],[[7,[87,48]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[87,37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[37,18],[[7,[48]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],103],[[],22],[[26,27],[[7,[28,29]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[104,[[33,[32]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[23,[[7,[34]]]],[[],[[7,[34]]]],[24,[[7,[34]]]],[[],[[7,[34]]]],[[[106,[105,49]]],[[106,[105,49]]]],[22,22],[107,107],[104,104],[26,26],[108,108],[109,109],[110,110],[111,111],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[104,104],6],[[26,26],6],[[109,109],6],[[111,111],6],0,[[],107],[[[106,[49]]]],[[26,27],[[7,[28,29]]]],[[],[[7,[26]]]],[104,42],[[22,22],8],[[104,104],8],[[26,26],8],[[108,108],8],[[109,109],8],[[110,110],8],[[111,111],8],[[[113,[[0,[112,49]]]],9],10],[[22,9],10],[[107,9],10],[[81,9],10],[[81,9],10],[[104,9],[[7,[52]]]],[[104,9],[[7,[52]]]],[[26,9],[[7,[52]]]],[[26,9],[[7,[52]]]],[[108,9],[[7,[52]]]],[[108,9],[[7,[52]]]],[[109,9],[[7,[52]]]],[[110,9],[[7,[52]]]],[[111,9],[[7,[52]]]],[104,8],[[]],[114,[[115,[49]]]],[116,[[115,[49]]]],[[]],[[]],[[]],[[]],[21,81],[[]],[80,81],[[]],[[]],[28,26],[[]],[[]],[[]],[[]],[[26,103],[[113,[49]]]],[[108,103],[[113,[49]]]],[16,[[7,[26]]]],[16,[[7,[108]]]],[61,[[7,[104,21]]]],[26,[[12,[117]]]],[26,[[31,[117,30]]]],[[],[[7,[106]]]],[[],[[7,[106]]]],[[],[[7,[106]]]],[[],[[7,[106]]]],[[[115,[49]]],8],[26,8],[104],[26],[109],[111],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[26,118],[[],[[7,[113,81]]]],[[[12,[119]],117],[[7,[113,81]]]],[106,[[7,[113,81]]]],[[106,[12,[119]],117],[[7,[113,81]]]],[[[113,[49]]],[[7,[[113,[49]],81]]]],[26,[[7,[[113,[49]],81]]]],[108,[[7,[[113,[49]],81]]]],[[],[[7,[115,81]]]],[[[115,[49]]],[[7,[[115,[49]],81]]]],[106,[[7,[115,81]]]],[[[106,[49]]]],[26,[[31,[26,30]]]],[108,[[31,[108,30]]]],[[[115,[49]],18],[[12,[114]]]],[[[115,[49]],18,37],116],[26,8],[[],8],[22,8],[26,8],[108,8],[[],8],[22,8],[[],8],[22,8],[26,8],[26,8],0,0,0,[104,[[7,[66,21]]]],[[],103],[26,120],[23,[[12,[62]]]],[104,62],[104,62],[[103,103],103],[[],16],[[62,[31,[30]]],[[7,[104,21]]]],[26,62],0,0,[23,[[7,[21]]]],[[[113,[49]],103],[[113,[49]]]],[[104,104],[[12,[6]]]],[[26,26],[[12,[6]]]],[[109,109],[[12,[6]]]],[[111,111],[[12,[6]]]],[[],62],0,[82],[104,[[7,[21]]]],[104,[[7,[[31,[[31,[2,30]],30]],21]]]],[104,62],[26,7],[[],72],[104,24],[[],103],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[108,37],[[7,[26,121]]]],[[],74],[[],74],[[],74],[[],74],[23,[[7,[21]]]],[23,[[7,[21]]]],[104,[[7,[104,75]]]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,[[],[[12,[41]]]],[[],[[12,[122]]]],[62,[[12,[14]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[123,123],123],[[124,1,125,[127,[126]]]],0,[124,[[73,[1,[0,[128,105]]]]]],[[129,129]],[[124,130,27],[[7,[131]]]],[[124,130,27,132],[[7,[133]]]],[[124,134]],[[124,[136,[135]]],[[7,[131]]]],[124,137],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[124,138],[[7,[[141,[139,140]],142]]]],[124,[[141,[139,143]]]],[[124,144],[[7,[41,145]]]],[[124,144],[[7,[122,145]]]],[[124,144]],0,0,[124,146],[123,123],[135,135],[129,129],[[]],[[]],[[]],0,[124,[[147,[8]]]],0,[[],123],[[],135],[[],129],[148],[[124,1],[[12,[27]]]],[[124,50],12],[[124,1],74],[[],[[7,[123]]]],[[],[[7,[129]]]],[[123,123],8],[[129,129],8],[[148,148],8],0,0,[[124,149,150],[[7,[8,151]]]],[[123,9],[[7,[52]]]],[[123,9],[[7,[52]]]],[[124,9],10],[[135,9],10],[[129,9],10],[[148,9],10],[[148,9],10],[[152,9],10],[[152,9],10],[[153,9],10],[[153,9],10],[[154,9],10],[[154,9],10],[[155,9],10],[[155,9],10],[[156,9],10],[[156,9],10],[[]],[[]],[157,135],[[[158,[1]]],135],[[]],[[[161,[159,[160,[1]]]]],129],[162,129],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[124,123],[[124,1],63],[[124,3,[12,[163]],8],[[7,[164,165]]]],[[124,1],[[127,[45]]]],[[124,138],[[12,[[166,[[127,[144]],159]]]]]],[[124,11],[[12,[3]]]],0,0,0,0,[[124,132],[[7,[8,167]]]],[[124,144,168],[[7,[8,155]]]],[[124,11,14]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[50,8],[129,8],[[124,50],8],0,[124,128],0,[124,169],[124,128],[124,128],[[124,1],170],[[[0,[[171,[129]],172,173]]],[[7,[124,153]]]],[124,174],[[124,1,27],8],[124,18],0,[[175,[12,[175]],[0,[[171,[129]],172,173]],18],[[7,[124,152]]]],[[175,[12,[175]],18],[[7,[124,48]]]],[[175,[12,[175]],18,176],[[7,[124,48]]]],[[175,[12,[175]],[0,[[171,[129]],172,173]],18],[[7,[124,154]]]],[[175,[12,[175]],[0,[[171,[129]],172,173]],18,176],[[7,[124,154]]]],[[175,[12,[175]],[0,[[171,[129]],172,173]],18,176],[[7,[124,152]]]],[[124,1],27],[[124,1],[[147,[148]]]],[[124,1,27],148],[[124,1],[[7,[[12,[47]],48]]]],[82],[82],[82],[82],[82],[[124,1],[[12,[63]]]],[[124,1,27],[[147,[128]]]],[[124,1],[[147,[148]]]],[124,37],[[124,144]],[123,7],[129,7],[[124,149,150],[[7,[8,151]]]],0,[124,177],[124,129],[124,[[178,[1]]]],[124,179],[[]],[[]],[[]],[[],74],[[],74],[[],74],[[],74],[[],74],[[],74],[[],74],[123,180],[124,128],0,[123,180],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],0,[124,137],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[124,1],[[0,[128,105]]]],[[124,1,27],8],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[12,18,37],[[7,[74,48]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[181,181],[182,182],[183,183],[[]],[[]],[[]],[[[31,[4]],[31,[4]],122,41,50],[[7,[184,185]]]],[[181,[31,[4]],[31,[4]],122,41,50],[[7,[184,185]]]],[[182,[31,[4]],[31,[4]],122,41,50],[[7,[184,185]]]],[[183,[31,[4]],[31,[4]],122,41,50],[[7,[184,185]]]],[[41,122,50],186],[[],181],[[],182],[[],183],0,0,[[185,9],10],[[185,9],10],[[186,9],10],[[184,9],10],[[181,9],10],[[182,9],10],[[183,9],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[184,41],[41,183],[82],0,[184,41],[[]],[[]],[[]],[[],74],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[187,187],[[]],[[187,9],10],[[187,9],10],[[165,9],10],[[165,9],10],[[142,9],10],[[142,9],10],[[]],[185,165],[[]],[188,165],[48,165],[77,165],[187,165],[[]],[[]],[[]],[[]],[82],[82],[82],[[]],[[],74],[[],74],[[],74],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[189,[[12,[74]]]],[189,74],[[],[[7,[189]]]],[[124,16,8],[[7,[189,16]]]],[[189,9],10],[[189,9],10],[[]],[16,[[7,[189]]]],[[]],0,[189,7],[[],74],[[],7],[[],7],[[],15],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[45,190,125,[127,[126]]],[[12,[[127,[126]]]]]],0,0,[[45,37],191],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[191,17,37],45],[190,190],[192,192],[[[194,[[0,[105,193,112,105]]]]],[[194,[[0,[105,193,112,105]]]]]],[125,125],[45,45],[150,150],[195,195],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[190,190],6],[[125,125],6],[[],125],[[],45],[[],150],[[],195],[[[194,[[0,[193,112,105]]]]]],[[],[[12,[108]]]],[[[194,[[196,[114]]]]],[[12,[108]]]],[[[194,[197]]],[[12,[108]]]],[[[194,[[198,[114]]]]],[[12,[108]]]],[[190,190],8],[[192,192],8],[[125,125],8],[[195,195],8],[[45,190],[[12,[127]]]],[[190,9],10],[[151,9],10],[[151,9],10],[[192,9],10],[[[194,[[0,[112,193,112,105]]]],9],10],[[125,9],10],[[45,9],10],[[150,9],10],[[195,9],10],[199,190],[120,190],[[]],[[]],[200,151],[[]],[[]],[[]],[[]],[[]],[[]],[190],[37,190],[[[194,[197]],37],190],[[[194,[[198,[114]]]],37],190],[[[194,[[196,[114]]]],37],190],[45,[[31,[190]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[0,[193,112,105]],192],[[194,[[0,[193,112,105]]]]]],[[],45],[[190,190],[[12,[6]]]],[[125,125],[[12,[6]]]],[82],[[45,190,125],[[12,[[127,[126]]]]]],0,0,[[149,62,150,37],[[7,[151]]]],[[[194,[[198,[114]]]],149,62,150,37],[[7,[151]]]],[[[194,[197]],149,62,150,37],[[7,[151]]]],[[[194,[[196,[114]]]],149,62,150,37],[[7,[151]]]],[[149,150,37],[[7,[151]]]],[[149,150,37],[[7,[151]]]],0,[45,[[31,[127]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],74],0,0,[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[141,[201,143]]],[[141,[201,143]]]],[[141,11,164,62],[[7,[141,202]]]],[[141,11,164,62,13],[[7,[141,202]]]],[141,141],[[[141,[201,143]],42,180],[[141,[201,143]]]],[[141,11],141],[[141,11],[[7,[141,203]]]],[141,[[7,[141,203]]]],[[141,8],141],[[[141,[139,140]],42],[[7,[[141,[139,140]],204]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[141,205],141],[143,143],[140,140],[[[141,[105]]],[[141,[105]]]],[206,206],[205,205],[[]],[[]],[[]],[[]],[[]],[[206,206],6],[[205,205],6],[[141,201],[[141,[201]]]],[[141,27],141],[[],143],[[],140],[[],206],[[],205],[141,141],[[[141,[201,143]],42],[[141,[201,143]]]],[141,141],[141,141],[[141,13],141],[[206,206],8],[[205,205],8],[[141,41],141],[[141,122],141],[[[141,[201]]],[[7,[149,165]]]],[[143,9],10],[[140,9],10],[[[141,[112,112]],9],10],[[203,9],10],[[203,9],10],[[202,9],10],[[202,9],10],[[204,9],10],[[204,9],10],[[206,9],10],[[205,9],10],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[206],[205],[141,141],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[141,141],[[141,207],141],[141,141],[141,141],[[141,206],141],[[206,206],[[12,[6]]]],[[205,205],[[12,[6]]]],[[141,[73,[74,[31,[62]]]],1],141],[82],[82],[82],[[[141,[201,143]],31],[[141,[201,143]]]],[[141,163],141],[[206,144]],[[]],[[]],[[]],[[]],[[]],[[],74],[[],74],[[],74],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[],15],[[141,[31,[11]]],141],[[141,208],141],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0],"p":[[4,"KeychainKind"],[15,"u8"],[3,"LocalOutput"],[3,"WeightedUtxo"],[4,"Utxo"],[4,"Ordering"],[4,"Result"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"OutPoint"],[4,"Option"],[3,"Sequence"],[3,"TxOut"],[3,"TypeId"],[15,"str"],[4,"Descriptor"],[4,"Network"],[4,"NetworkChecked"],[3,"Address"],[4,"Error"],[4,"ScriptContextEnum"],[3,"Miniscript"],[4,"Terminal"],[4,"Tree"],[4,"DescriptorPublicKey"],[15,"u32"],[3,"DefiniteDescriptorKey"],[4,"ConversionError"],[3,"Global"],[3,"Vec"],[4,"Placeholder"],[3,"Satisfaction"],[4,"ScriptContextError"],[4,"Legacy"],[4,"Segwitv0"],[3,"Secp256k1"],[3,"PublicKey"],[4,"DescriptorType"],[3,"DescriptorId"],[15,"u64"],[3,"ScriptBuf"],[3,"ExtParams"],[4,"AnalysisError"],[3,"SignersContainer"],[4,"BuildSatisfaction"],[3,"Policy"],[4,"Error"],[8,"ScriptContext"],[3,"Script"],[3,"Range"],[3,"Error"],[3,"Bare"],[3,"Sh"],[3,"Tr"],[3,"Pkh"],[3,"Wsh"],[3,"Wpkh"],[3,"Type"],[3,"ExtData"],[3,"Tree"],[15,"usize"],[6,"ExtendedDescriptor"],[3,"Iter"],[3,"PkIter"],[4,"Policy"],[4,"LiftError"],[4,"BareCtx"],[4,"TapTree"],[3,"Plan"],[3,"TxIn"],[4,"SigType"],[3,"BTreeMap"],[3,"String"],[4,"TranslateErr"],[4,"Error"],[4,"PolicyError"],[4,"HexToBytesError"],[4,"Error"],[4,"Error"],[4,"KeyError"],[3,"Demand"],[4,"PkOrF"],[4,"SatisfiableItem"],[4,"Satisfaction"],[3,"Condition"],[6,"DescriptorTemplateOut"],[8,"IntoDescriptorKey"],[3,"P2Pkh"],[3,"P2Wpkh_P2Sh"],[3,"P2Wpkh"],[4,"Tap"],[3,"P2TR"],[8,"DerivableKey"],[3,"Bip44"],[3,"Bip44Public"],[3,"Bip49"],[3,"Bip49Public"],[3,"Bip84"],[3,"Bip84Public"],[3,"Bip86"],[3,"Bip86Public"],[6,"ValidNetworks"],[3,"SortedMultiVec"],[8,"Clone"],[3,"GeneratedKey"],[3,"PrivateKeyGenerateOptions"],[4,"DescriptorSecretKey"],[3,"SinglePub"],[3,"SinglePriv"],[4,"SinglePubKey"],[8,"Debug"],[4,"DescriptorKey"],[3,"Xpriv"],[4,"ExtendedKey"],[3,"Xpub"],[3,"DerivationPath"],[3,"Assets"],[6,"KeySource"],[3,"Fingerprint"],[3,"DescriptorKeyParseError"],[3,"FeeRate"],[3,"Balance"],[3,"Wallet"],[3,"SignerOrdering"],[8,"TransactionSigner"],[3,"Arc"],[8,"Iterator"],[3,"ChangeSet"],[3,"Block"],[3,"CannotConnectError"],[3,"BlockId"],[4,"ApplyHeaderError"],[8,"IntoIterator"],[3,"Update"],[8,"Into"],[3,"TxGraph"],[3,"Txid"],[6,"DefaultCoinSelectionAlgorithm"],[3,"BumpFee"],[3,"TxBuilder"],[4,"BuildFeeBumpError"],[3,"CreateTx"],[3,"Transaction"],[4,"CalculateFeeError"],[3,"CheckPointIter"],[6,"Result"],[3,"AddressInfo"],[3,"Psbt"],[3,"SignOptions"],[4,"SignerError"],[4,"NewError"],[4,"LoadError"],[4,"NewOrLoadError"],[4,"InsertTxError"],[4,"ApplyBlockError"],[3,"SyncResult"],[3,"FullScanResult"],[3,"ConfirmationTimeHeightAnchor"],[3,"ChangeSet"],[3,"ChangeSet"],[6,"ChangeSet"],[3,"PsbtSighashType"],[3,"Input"],[4,"CreateTxError"],[3,"CanonicalTx"],[3,"AlterCheckPointError"],[4,"ConfirmationTime"],[3,"CheckPoint"],[8,"DoubleEndedIterator"],[8,"PersistBackend"],[8,"Send"],[8,"Sync"],[3,"LocalChain"],[8,"IntoWalletDescriptor"],[3,"BlockHash"],[3,"KeychainTxOutIndex"],[3,"FullScanRequest"],[3,"SyncRequest"],[3,"Amount"],[3,"LargestFirstCoinSelection"],[3,"OldestFirstCoinSelection"],[3,"BranchAndBoundCoinSelection"],[3,"CoinSelectionResult"],[4,"Error"],[4,"Excess"],[4,"MiniscriptPsbtError"],[4,"Error"],[3,"FullyNodedExport"],[4,"SignerId"],[6,"KeyMap"],[4,"SignerContext"],[8,"Sized"],[3,"SignerWrapper"],[4,"TapLeavesOptions"],[3,"DescriptorMultiXKey"],[3,"PrivateKey"],[3,"DescriptorXKey"],[3,"Hash"],[4,"Error"],[8,"CoinSelectionAlgorithm"],[4,"AddForeignUtxoError"],[4,"AddUtxoError"],[4,"AllowShrinkingError"],[4,"ChangeSpendPolicy"],[4,"TxOrdering"],[4,"LockTime"],[15,"i32"],[13,"Foreign"],[8,"ExtractPolicy"],[13,"PsbtTimelocks"],[13,"Complete"],[13,"Partial"],[13,"PartialComplete"],[13,"Sha256Preimage"],[13,"Hash256Preimage"],[13,"Ripemd160Preimage"],[13,"Hash160Preimage"],[13,"Thresh"],[13,"Multisig"],[13,"AbsoluteTimelock"],[13,"RelativeTimelock"],[8,"DescriptorTemplate"],[8,"GeneratableKey"],[8,"ExtScriptContext"],[8,"GeneratableDefaultOptions"],[8,"PsbtUtils"],[8,"IsDust"],[13,"UnexpectedConnectedToHash"],[13,"ConfirmationHeightCannotBeGreaterThanTip"],[13,"LoadedGenesisDoesNotMatch"],[13,"LoadedNetworkDoesNotMatch"],[13,"LoadedDescriptorDoesNotMatch"],[13,"InsufficientFunds"],[13,"Change"],[13,"NoChange"],[13,"InsufficientFunds"],[13,"RbfSequenceCsv"],[13,"LockTime"],[13,"FeeTooLow"],[13,"FeeRateTooLow"],[8,"SignerCommon"],[8,"InputSigner"],[13,"Tap"],[13,"InvalidTxid"]]},\ -"example_bitcoind_rpc_polling":{"doc":"","t":[13,17,6,17,17,17,4,13,17,13,3,4,17,13,13,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,12,12,12,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,12,12],"n":["Block","CHANNEL_BOUND","ChangeSet","DB_COMMIT_DELAY","DB_MAGIC","DB_PATH","Emission","Live","MEMPOOL_EMIT_DELAY","Mempool","RpcArgs","RpcCommands","STDOUT_PRINT_DELAY","Sync","Tip","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","await_flag","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fallback_height","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","main","new_client","rpc_cookie","rpc_password","rpc_user","start_ctrlc_handler","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","url","vzip","vzip","vzip","rpc_args","rpc_args"],"q":["example_bitcoind_rpc_polling","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","example_bitcoind_rpc_polling::RpcCommands",""],"d":["","The mpsc channel bound for emissions from Emitter.","","Delay for committing to persistence.","","","","Sync by having the emitter logic in a separate thread","Delay between mempool emissions.","","","","Delay for printing status to stdout.","Syncs local state with remote state via RPC (starting from …","","","","","","","","","","","","","","","","","Starting block height to fallback to if no point of …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","RPC auth cookie file","RPC auth password","RPC auth username","","","","","","","","","","","","","","","","","RPC URL","","","","",""],"i":[7,0,0,0,0,0,0,6,0,7,0,0,0,6,7,5,5,6,6,0,7,5,6,7,5,6,5,6,5,6,5,7,5,6,7,5,6,5,6,5,6,6,7,5,6,0,5,5,5,5,0,5,6,7,5,6,7,5,6,7,5,6,5,6,5,6,5,7,5,6,18,19],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,1],[1,1],[1,1],[1,1],[[2,3],4],[[]],[[]],[[]],[[]],[[]],[[]],[5,5],[6,6],[[]],[[]],0,[[7,8],9],[[5,8],9],[[6,8],9],[[]],[[]],[[]],[10,[[12,[5,11]]]],[10,[[12,[6,11]]]],[10,[[12,[5,11]]]],[10,[[12,[6,11]]]],[13,4],[[]],[[]],[[]],[[],14],[5,[[14,[15]]]],0,0,0,[[],[[16,[2]]]],[[]],[[]],[[],12],[[],12],[[],12],[[],12],[[],12],[[],12],[[],17],[[],17],[[],17],[[5,10],[[12,[11]]]],[[6,10],[[12,[11]]]],[[5,10],[[12,[11]]]],[[6,10],[[12,[11]]]],0,[[]],[[]],[[]],0,0],"p":[[6,"Command"],[3,"AtomicBool"],[3,"Duration"],[15,"bool"],[3,"RpcArgs"],[4,"RpcCommands"],[4,"Emission"],[3,"Formatter"],[6,"Result"],[3,"ArgMatches"],[3,"Error"],[4,"Result"],[15,"str"],[6,"Result"],[3,"Client"],[3,"Arc"],[3,"TypeId"],[13,"Sync"],[13,"Live"]]},\ -"example_cli":{"doc":"","t":[13,4,3,13,13,13,4,4,3,13,13,3,13,4,6,6,13,13,13,13,13,13,13,6,13,13,13,4,2,12,11,11,11,11,11,11,11,11,2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,2,11,11,11,11,11,11,11,11,11,11,11,12,12,5,12,12,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,12,12,12,5,12,11,11,11,11,11,11,11,11,11,11,12,12,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12],"n":["Address","AddressCmd","Args","Balance","BranchAndBound","ChainSpecific","CoinSelectionAlgo","Commands","CreateTxChange","External","Index","Init","Internal","Keychain","KeychainChangeSet","KeychainTxGraph","LargestFirst","List","List","New","NewestFirst","Next","OldestFirst","PlannedUtxo","Send","SmallestFirst","TxOut","TxOutCmd","anyhow","args","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands","augment_subcommands","augment_subcommands_for_update","augment_subcommands_for_update","augment_subcommands_for_update","bdk_file_store","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_descriptor","change_keychain","clap","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","command","cp_limit","create_tx","db","db_path","default","descriptor","deserialize","eq","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_str","handle_commands","has_subcommand","has_subcommand","has_subcommand","index","index","index_changeset","init","init_changeset","into","into","into","into","into","into","into","into","into_app","into_app_for_update","keymap","network","partial_cmp","planned_utxos","serialize","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","change","addr_cmd","address","chain_specific","coin_select","txout_cmd","value","confirmed","spent","unconfirmed","unspent"],"q":["example_cli","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","example_cli::AddressCmd","example_cli::Commands","","","","","","example_cli::TxOutCmd","","",""],"d":["Address generation and inspection.","","","Get the wallet balance.","","","","","","","Get last revealed address index for each keychain.","The initial state returned by init.","","","","","","List all addresses","List transaction outputs.","Get a new address regardless of the existing unused …","","Get the next unused address.","","","Send coins to an address.","","TxOut related commands.","","","Arguments parsed by the cli.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Persistence backend.","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","","","","","Keychain-txout index.","","Parses command line arguments and initializes all …","Initial changeset.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Descriptor keymap.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","List change addresses","","Destination address","","","","Amount to send in satoshis","Return only confirmed outputs.","Return only spent outputs.","Return only unconfirmed outputs.","Return only unspent outputs."],"i":[5,0,0,5,6,5,0,0,0,9,7,0,9,0,0,0,6,7,8,7,6,7,6,0,5,6,5,0,0,28,22,22,5,7,8,5,7,8,0,37,28,22,5,6,7,8,9,37,28,22,5,6,7,8,9,22,37,0,5,6,7,8,9,5,6,7,8,9,9,22,22,0,28,22,6,22,9,9,9,5,6,6,7,8,9,9,37,28,22,5,6,7,8,9,22,5,7,8,22,5,7,8,6,0,5,7,8,37,28,37,0,28,37,28,22,5,6,7,8,9,22,22,28,22,9,0,9,5,6,7,8,9,6,9,37,28,22,5,6,7,8,9,37,28,22,5,6,7,8,9,37,28,22,5,6,7,8,9,22,5,7,8,22,5,7,8,37,28,22,5,6,7,8,9,38,39,40,40,40,41,40,42,42,42,42],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,[[[5,[[0,[2,3]],[0,[2,4]]]]],[[5,[[0,[2,3]],[0,[2,4]]]]]],[6,6],[7,7],[8,8],[9,9],[[]],[[]],[[]],[[]],[[]],[[9,9],10],0,0,[[11,12,6,13,14],15],0,0,[[],6],0,[[],[[16,[9]]]],[[9,9],17],[[],17],[[[5,[[0,[18,3]],[0,[18,4]]]],19],20],[[6,19],20],[[6,19],20],[[7,19],20],[[8,19],20],[[9,19],20],[[9,19],20],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[21,[[16,[[22,[3,4]],23]]]],[21,[[16,[[5,[3,4]],23]]]],[21,[[16,[7,23]]]],[21,[[16,[8,23]]]],[21,[[16,[[22,[3,4]],23]]]],[21,[[16,[[5,[3,4]],23]]]],[21,[[16,[7,23]]]],[21,[[16,[8,23]]]],[24,[[16,[6]]]],[[25,25,25,12,26,27,[5,[3,4]]],15],[24,17],[24,17],[24,17],0,0,0,[24,[[15,[[28,[3,4]]]]]],0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],1],[[],1],0,0,[[9,9],[[29,[10]]]],[[11,30],[[16,[[34,[[33,[[0,[2,31]],32]]]]]]]],[9,16],[[]],[[]],[[]],[[]],[[]],[[],35],[[],35],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],16],[[],36],[[],36],[[],36],[[],36],[[],36],[[],36],[[],36],[[],36],[[[22,[3,4]],21],[[16,[23]]]],[[[5,[3,4]],21],[[16,[23]]]],[[7,21],[[16,[23]]]],[[8,21],[[16,[23]]]],[[[22,[3,4]],21],[[16,[23]]]],[[[5,[3,4]],21],[[16,[23]]]],[[7,21],[[16,[23]]]],[[8,21],[[16,[23]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0],"p":[[6,"Command"],[8,"Clone"],[8,"Subcommand"],[8,"Args"],[4,"Commands"],[4,"CoinSelectionAlgo"],[4,"AddressCmd"],[4,"TxOutCmd"],[4,"Keychain"],[4,"Ordering"],[6,"KeychainTxGraph"],[3,"BTreeMap"],[3,"Address"],[15,"u64"],[6,"Result"],[4,"Result"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[3,"ArgMatches"],[3,"Args"],[3,"Error"],[15,"str"],[3,"Mutex"],[4,"Network"],[8,"FnOnce"],[3,"Init"],[4,"Option"],[3,"Assets"],[8,"CanDerive"],[8,"Anchor"],[6,"PlannedUtxo"],[3,"Vec"],[3,"String"],[3,"TypeId"],[3,"CreateTxChange"],[13,"List"],[13,"Address"],[13,"Send"],[13,"TxOut"],[13,"List"]]},\ -"example_electrum":{"doc":"","t":[6,17,17,3,4,13,3,13,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12],"n":["ChangeSet","DB_MAGIC","DB_PATH","ElectrumArgs","ElectrumCommands","Scan","ScanOptions","Sync","augment_args","augment_args","augment_args_for_update","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","batch_size","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client","clone","clone","clone","clone_into","clone_into","clone_into","electrum_args","electrum_url","eq","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","into_app","into_app_for_update","main","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","all_spks","electrum_args","electrum_args","scan_options","scan_options","stop_gap","unconfirmed","unused_spks","utxos"],"q":["example_electrum","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","example_electrum::ElectrumCommands","","","","","","","",""],"d":["","","","","","Scans the addresses in the wallet using the electrum API.","","Scans particular addresses using the electrum API.","","","","","","","Set batch size for each script_history call to electrum …","","","","","","","","","","","","","","","The electrum url to use to connect to. If not provided it …","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","Scan every address that you have derived.","","","","","When a gap this large has been found for a keychain, it …","Scan unconfirmed transactions for updates.","Scan all the unused addresses.","Scan unspent outpoints for spends or changes to …"],"i":[0,0,0,0,0,6,0,6,2,7,2,7,6,6,7,6,2,7,6,2,7,2,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,6,6,2,7,7,7,0,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,16,17,16,17,16,17,16,16,16],"f":[0,0,0,0,0,0,0,0,[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],0,[[]],[[]],[[]],[[]],[[]],[[]],[[2,3],[[5,[4]]]],[6,6],[2,2],[7,7],[[]],[[]],[[]],[6,2],0,[[7,7],8],[[6,9],10],[[2,9],10],[[7,9],10],[[]],[[]],[[]],[11,[[13,[6,12]]]],[11,[[13,[2,12]]]],[11,[[13,[7,12]]]],[11,[[13,[6,12]]]],[11,[[13,[2,12]]]],[11,[[13,[7,12]]]],[14,8],[[]],[[]],[[]],[[],1],[[],1],[[],5],[[]],[[]],[[]],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],15],[[],15],[[],15],[[6,11],[[13,[12]]]],[[2,11],[[13,[12]]]],[[7,11],[[13,[12]]]],[[6,11],[[13,[12]]]],[[2,11],[[13,[12]]]],[[7,11],[[13,[12]]]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0],"p":[[6,"Command"],[3,"ElectrumArgs"],[4,"Network"],[3,"Client"],[6,"Result"],[4,"ElectrumCommands"],[3,"ScanOptions"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"ArgMatches"],[3,"Error"],[4,"Result"],[15,"str"],[3,"TypeId"],[13,"Sync"],[13,"Scan"]]},\ -"example_esplora":{"doc":"","t":[6,17,17,3,4,13,3,13,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,5,12,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12],"n":["ChangeSet","DB_MAGIC","DB_PATH","EsploraArgs","EsploraCommands","Scan","ScanOptions","Sync","augment_args","augment_args","augment_args_for_update","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client","clone","clone","clone","clone_into","clone_into","clone_into","eq","esplora_args","esplora_url","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","into_app","into_app_for_update","main","parallel_requests","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","all_spks","esplora_args","esplora_args","scan_options","scan_options","stop_gap","unconfirmed","unused_spks","utxos"],"q":["example_esplora","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","example_esplora::EsploraCommands","","","","","","","",""],"d":["","","","","","Scans the addresses in the wallet using the esplora API.","","Scan for particular addresses and unconfirmed transactions …","","","","","","","","","","","","","","","","","","","","","","The esplora url endpoint to connect to e.g. …","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Max number of concurrent esplora server requests.","","","","","","","","","","","","","","","","","","","","","","Scan every address that you have derived.","","","","","When a gap this large has been found for a keychain, it …","Scan unconfirmed transactions for updates.","Scan all the unused addresses.","Scan unspent outpoints for spends or changes to …"],"i":[0,0,0,0,0,6,0,6,2,7,2,7,6,6,6,2,7,6,2,7,2,6,2,7,6,2,7,7,6,2,6,2,7,6,2,7,6,2,7,6,2,7,6,6,2,7,7,7,0,7,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,6,2,7,16,17,16,17,16,17,16,16,16],"f":[0,0,0,0,0,0,0,0,[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[[]],[[]],[[]],[[]],[[]],[[]],[[2,3],[[5,[4]]]],[6,6],[2,2],[7,7],[[]],[[]],[[]],[[7,7],8],[6,2],0,[[6,9],10],[[2,9],10],[[7,9],10],[[]],[[]],[[]],[11,[[13,[6,12]]]],[11,[[13,[2,12]]]],[11,[[13,[7,12]]]],[11,[[13,[6,12]]]],[11,[[13,[2,12]]]],[11,[[13,[7,12]]]],[14,8],[[]],[[]],[[]],[[],1],[[],1],[[],5],0,[[]],[[]],[[]],[[],13],[[],13],[[],13],[[],13],[[],13],[[],13],[[],15],[[],15],[[],15],[[6,11],[[13,[12]]]],[[2,11],[[13,[12]]]],[[7,11],[[13,[12]]]],[[6,11],[[13,[12]]]],[[2,11],[[13,[12]]]],[[7,11],[[13,[12]]]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0],"p":[[6,"Command"],[3,"EsploraArgs"],[4,"Network"],[3,"BlockingClient"],[6,"Result"],[4,"EsploraCommands"],[3,"ScanOptions"],[15,"bool"],[3,"Formatter"],[6,"Result"],[3,"ArgMatches"],[3,"Error"],[4,"Result"],[15,"str"],[3,"TypeId"],[13,"Sync"],[13,"Scan"]]},\ -"wallet_electrum_example":{"doc":"","t":[17,17,17,17,5],"n":["BATCH_SIZE","DB_MAGIC","SEND_AMOUNT","STOP_GAP","main"],"q":["wallet_electrum_example","","","",""],"d":["","","","",""],"i":[0,0,0,0,0],"f":[0,0,0,0,[[],[[2,[1]]]]],"p":[[3,"Error"],[4,"Result"]]},\ -"wallet_esplora_async":{"doc":"","t":[17,17,17,17,5],"n":["DB_MAGIC","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP","main"],"q":["wallet_esplora_async","","","",""],"d":["","","","",""],"i":[0,0,0,0,0],"f":[0,0,0,0,[[],[[2,[1]]]]],"p":[[3,"Error"],[4,"Result"]]},\ -"wallet_esplora_blocking":{"doc":"","t":[17,17,17,17,5],"n":["DB_MAGIC","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP","main"],"q":["wallet_esplora_blocking","","","",""],"d":["","","","",""],"i":[0,0,0,0,0],"f":[0,0,0,0,[[],[[2,[1]]]]],"p":[[3,"Error"],[4,"Result"]]},\ -"wallet_rpc":{"doc":"","t":[3,13,17,4,13,13,11,11,11,11,11,11,12,11,12,12,11,11,11,11,11,11,11,11,11,11,5,12,12,12,12,12,11,11,11,11,11,11,11,11,12,11,11],"n":["Args","Block","DB_MAGIC","Emission","Mempool","SigTerm","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","change_descriptor","client","db_path","descriptor","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","into","into","into_app","into_app_for_update","main","network","rpc_cookie","rpc_pass","rpc_user","start_height","try_from","try_from","try_into","try_into","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","url","vzip","vzip"],"q":["wallet_rpc","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""],"d":["Bitcoind RPC example using bdk_wallet::Wallet.","","","","","","","","","","","","Wallet change descriptor","","Where to store wallet data","Wallet descriptor","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","","","Bitcoin network to connect to","RPC auth cookie file","RPC auth password","RPC auth username","Earliest block height to start sync from","","","","","","","","","RPC URL","",""],"i":[0,7,0,0,7,7,2,2,2,7,2,7,2,2,2,2,2,7,2,7,2,2,2,7,2,2,0,2,2,2,2,2,2,7,2,7,2,7,2,2,2,2,7],"f":[0,0,0,0,0,0,[1,1],[1,1],[[]],[[]],[[]],[[]],0,[2,[[4,[3]]]],0,0,[[2,5],6],[[7,5],6],[[]],[[]],[8,[[10,[2,9]]]],[8,[[10,[2,9]]]],[[]],[[]],[[],1],[[],1],[[],4],0,0,0,0,0,[[],10],[[],10],[[],10],[[],10],[[],11],[[],11],[[2,8],[[10,[9]]]],[[2,8],[[10,[9]]]],0,[[]],[[]]],"p":[[6,"Command"],[3,"Args"],[3,"Client"],[6,"Result"],[3,"Formatter"],[6,"Result"],[4,"Emission"],[3,"ArgMatches"],[3,"Error"],[4,"Result"],[3,"TypeId"]]}\ -}'); -if (typeof window !== 'undefined' && window.initSearch) {window.initSearch(searchIndex)}; -if (typeof exports !== 'undefined') {exports.searchIndex = searchIndex}; +var searchIndex = new Map(JSON.parse('[\ +["bdk_bitcoind_rpc",{"t":"KFFEONNNNNNONNNNNNMNNNNNNNNNNNN","n":["BitcoindRpcErrorExt","BlockEvent","Emitter","bitcoincore_rpc","block","block_hash","block_height","borrow","borrow","borrow_mut","borrow_mut","checkpoint","connected_to","fmt","from","from","into","into","is_not_found_error","mempool","new","next_block","next_header","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":[[0,"bdk_bitcoind_rpc"],[31,"bitcoin::hash_types::newtypes"],[32,"bdk_chain::chain_data"],[33,"core::fmt"],[34,"bitcoin::blockdata::transaction"],[35,"alloc::vec"],[36,"bitcoincore_rpc::error"],[37,"core::result"],[38,"bitcoincore_rpc::client"],[39,"bdk_chain::local_chain"],[40,"bitcoin::blockdata::block"],[41,"core::option"],[42,"core::any"]],"i":[0,0,0,0,1,1,1,12,1,12,1,1,1,1,12,1,12,1,10,12,12,12,12,12,1,12,1,12,1,12,1],"f":"`````{{{d{{b{c}}}}}f{}}{{{d{{b{c}}}}}h{}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{jc}}}{{d{je}}}{}{}}0`{{{d{{b{c}}}}}l{}}{{{d{{b{c}}}}{d{jn}}}A`Ab}{cc{}}0{ce{}{}}0{{{d{Ad}}}Af}{{{d{j{Ah{c}}}}}{{Bd{{B`{{An{AjAl}}}}Bb}}}Bf}{{{d{c}}Bhh}{{Ah{c}}}Bf}{{{d{j{Ah{c}}}}}{{Bd{{Bl{{b{Bj}}}}Bb}}}Bf}{{{d{j{Ah{c}}}}}{{Bd{{Bl{{b{Bn}}}}Bb}}}Bf}{c{{Bd{e}}}{}{}}000{{{d{c}}}C`{}}077","D":"Bd","p":[[5,"BlockEvent",0],[1,"reference"],[5,"BlockHash",31],[1,"u32"],[0,"mut"],[5,"BlockId",32],[5,"Formatter",33],[8,"Result",33],[10,"Debug",33],[10,"BitcoindRpcErrorExt",0],[1,"bool"],[5,"Emitter",0],[5,"Transaction",34],[1,"u64"],[1,"tuple"],[5,"Vec",35],[6,"Error",36],[6,"Result",37],[10,"RpcApi",38],[5,"CheckPoint",39],[5,"Block",40],[6,"Option",41],[5,"Header",40],[5,"TypeId",42]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA0ABAAEAAAACAADAA4AAAAYAAcA"}],\ +["bdk_chain",{"t":"KKKSFSKGFGFPPKFRFEFFEPPNNMNNNOOMNNNNNENNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNONNNNNMNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNOONNNNCNNNNNNNNNNNNMNNNMNONNNCCNENNNNNONNNNNNNNNNNNDNNNNNONCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNONNNNNNNNNNNNNNNNNNNNNNNOOOFRFKNNNMNNNNNNNNNNNNNNNNNNNNNNOOMMOMNNNNNNNNMNNNNNNNNNNNFFFNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNONNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNONNNNNFGPFIFFPFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNONNNNNNNFFFFINNNNNNNNNNNNNNNOONOONNNNNNNOONNNNNNNNNOONNNNNOONNNNNNNNOOONNNNNNNNGFFPPFFFFNNNOONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNONOONNNNNNNNNNNNNNNNNN","n":["Anchor","AnchorFromBlockPosition","Append","BIP32_MAX_INDEX","BlockId","COINBASE_MATURITY","ChainOracle","ChainPosition","ConfirmationHeightAnchor","ConfirmationTime","ConfirmationTimeHeightAnchor","Confirmed","Confirmed","DescriptorExt","DescriptorId","Error","FullTxOut","IndexedTxGraph","SpkIterator","SpkTxOutIndex","TxGraph","Unconfirmed","Unconfirmed","all_spks","all_zeros","anchor_block","anchor_block","anchor_block","anchor_block","anchor_block","anchor_block","append","apply_changeset","as_byte_array","as_raw_hash","as_ref","as_ref","bitcoin","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain_position","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cloned","cmp","cmp","cmp","cmp","cmp","cmp","cmp","confirmation_height","confirmation_height","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_height_upper_bound","confirmation_time","default","default","default","default","descriptor","descriptor_id","deserialize","deserialize","deserialize","deserialize","deserialize","dust_value","engine","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from_block_position","from_block_position","from_block_position","from_block_position","from_byte_array","from_engine","from_raw_hash","from_slice","from_slice_delegated","from_str","get_chain_tip","hash","hash","hash","hash","hash","hash","hash","height","index","index_of_spk","index_tx","index_txout","indexed_tx_graph","initial_changeset","insert_spk","into","into","into","into","into","into","into","into","into","into_iter","is_block_in_chain","is_confirmed","is_confirmed","is_confirmed_and_spendable","is_empty","is_mature","is_on_coinbase","is_relevant","is_tx_relevant","is_used","keychain","local_chain","mark_used","miniscript","net_value","new","new_with_range","next","nth","outpoint","outpoints","outputs_in_range","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","partial_cmp","scan","scan_txout","sent_and_received","serde","serialize","serialize","serialize","serialize","serialize","spent_by","spk_at_index","spk_client","to_byte_array","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_raw_hash","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_graph","txout","txout","txouts","txouts_in_tx","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unconfirmed","unmark_used","unused_spks","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","height","last_seen","time","ChangeSet","ChangeSet","IndexedTxGraph","Indexer","append","apply_block","apply_block_relevant","apply_changeset","apply_changeset","apply_update","batch_insert_relevant","batch_insert_relevant_unconfirmed","batch_insert_unconfirmed","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","default","default","deserialize","eq","fmt","fmt","from","from","from","from","graph","graph","index","index_tx","index_txout","indexer","initial_changeset","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","is_empty","is_tx_relevant","new","serialize","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","Balance","ChangeSet","KeychainTxOutIndex","add","all_unbounded_spk_iters","append","apply_changeset","apply_changeset","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","confirmed","default","default","default","deserialize","deserialize","eq","eq","fmt","fmt","fmt","fmt","from","from","from","get_descriptor","immature","index_of_spk","index_tx","index_txout","initial_changeset","inner","insert_descriptor","into","into","into","is_empty","is_tx_relevant","is_used","keychain_outpoints","keychain_outpoints_in_range","keychains","keychains_added","last_revealed","last_revealed_index","last_revealed_indices","last_used_index","last_used_indices","lookahead","lookahead_to_target","mark_used","net_value","new","next_index","next_unused_spk","outpoints","reveal_next_spk","reveal_to_target","reveal_to_target_multi","revealed_keychain_spks","revealed_spks","sent_and_received","serialize","serialize","spk_at_index","to_owned","to_owned","to_owned","to_string","total","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_into","try_into","try_into","txout","txouts","txouts_in_tx","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","unused_keychain_spks","unused_spks","vzip","vzip","vzip","AlterCheckPointError","ApplyHeaderError","CannotConnect","CannotConnectError","ChangeSet","CheckPoint","CheckPointIter","InconsistentBlocks","LocalChain","MissingGenesisError","apply_changeset","apply_header","apply_header_connected_to","apply_update","block_id","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","disconnect_from","eq","eq","eq","eq","eq","eq","extend","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from_block_ids","from_blocks","from_changeset","from_genesis_hash","from_header","from_tip","genesis_hash","get","get","get_chain_tip","hash","height","height","initial_changeset","insert","insert_block","into","into","into","into","into","into","into","into_iter","into_iter","is_block_in_chain","iter","iter_checkpoints","new","next","original_hash","prev","push","range","range","tip","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_include_height","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_hash","vzip","vzip","vzip","vzip","vzip","vzip","vzip","FullScanRequest","FullScanResult","SyncRequest","SyncResult","TxCache","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cache_graph_txs","cache_graph_txs","cache_txs","cache_txs","chain_outpoints","chain_spks","chain_spks_for_keychain","chain_tip","chain_tip","chain_txids","chain_update","chain_update","from","from","from","from","from_chain_tip","from_chain_tip","from_keychain_txout_index","graph_update","graph_update","inspect_outpoints","inspect_spks","inspect_spks_for_all_keychains","inspect_spks_for_keychain","inspect_txids","into","into","into","into","last_active_indices","outpoints","populate_with_revealed_spks","set_outpoints","set_spks","set_spks_for_keychain","set_txids","spks","spks_by_keychain","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","tx_cache","tx_cache","txids","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","CalculateFeeError","CanonicalTx","ChangeSet","MissingTxOut","NegativeFee","TxAncestors","TxDescendants","TxGraph","TxNode","all_anchors","all_txouts","anchor_heights","anchors","anchors","append","apply_changeset","apply_update","as_ref","balance","batch_insert_unconfirmed","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","calculate_fee","chain_position","checked_sum","checked_sum","checked_sum","checked_sum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","deref","deserialize","direct_conflicts","eq","eq","eq","eq","eq","filter_chain_txouts","filter_chain_unspents","floating_txouts","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","full_txs","get_chain_position","get_chain_spend","get_tx","get_tx_node","get_txout","initial_changeset","insert_anchor","insert_seen_at","insert_tx","insert_txout","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_empty","last_seen","last_seen_unconfirmed","list_chain_txs","map_anchors","map_anchors","new","next","next","outspends","partial_cmp","partial_cmp","serialize","to_owned","to_owned","to_owned","to_owned","to_string","try_balance","try_filter_chain_txouts","try_filter_chain_unspents","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_get_chain_position","try_get_chain_spend","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_list_chain_txs","tx","tx_node","tx_outputs","tx_spends","txid","txouts","txouts","txs","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_last_seen_unconfirmed","vzip","vzip","vzip","vzip","vzip","vzip","vzip","walk_ancestors","walk_conflicts","walk_descendants"],"q":[[0,"bdk_chain"],[269,"bdk_chain::ConfirmationTime"],[272,"bdk_chain::indexed_tx_graph"],[328,"bdk_chain::keychain"],[430,"bdk_chain::local_chain"],[572,"bdk_chain::spk_client"],[643,"bdk_chain::tx_graph"],[804,"bdk_chain::spk_txout_index"],[805,"bitcoin::blockdata::script::owned"],[806,"alloc::collections::btree::map"],[807,"core::clone"],[808,"core::cmp"],[809,"bdk_chain::descriptor_ext"],[810,"bdk_chain::tx_data_traits"],[811,"bdk_chain::chain_data"],[812,"bitcoin_hashes::sha256"],[813,"bdk_chain::spk_iter"],[814,"core::option"],[815,"miniscript::descriptor::key"],[816,"miniscript::descriptor"],[817,"core::borrow"],[818,"core::result"],[819,"serde::de"],[820,"core::fmt"],[821,"bitcoin::hash_types::newtypes"],[822,"bitcoin::blockdata::block"],[823,"bitcoin_hashes"],[824,"bdk_chain::chain_oracle"],[825,"core::hash"],[826,"core::slice::index"],[827,"bitcoin::blockdata::script::borrowed"],[828,"bitcoin::blockdata::transaction"],[829,"bitcoin::amount"],[830,"core::ops::range"],[831,"alloc::collections::btree::set"],[832,"core::iter::traits::double_ended"],[833,"serde::ser"],[834,"alloc::string"],[835,"core::iter::traits::exact_size"],[836,"core::any"],[837,"core::iter::traits::collect"],[838,"core::default"],[839,"bdk_chain::keychain::txout_index"],[840,"core::iter::traits::iterator"],[841,"alloc::sync"],[842,"core::convert"],[843,"core::marker"],[844,"core::ops::function"],[845,"std::collections::hash::set"]],"i":[0,0,0,0,0,0,0,0,0,0,0,19,20,0,0,46,0,0,0,0,0,19,20,1,7,8,9,10,11,10,11,13,1,7,7,7,7,0,1,19,20,9,10,11,21,7,7,22,1,19,20,9,10,11,21,7,22,21,1,19,20,9,10,11,21,7,22,1,19,20,9,10,11,21,7,22,19,19,20,9,10,11,21,7,10,11,8,8,19,10,11,11,1,9,10,11,22,29,20,9,10,11,7,29,7,19,20,9,10,11,21,7,1,19,20,9,10,11,21,7,7,7,7,1,19,20,20,9,9,9,10,11,21,7,7,22,42,9,10,11,7,7,7,7,7,7,46,19,20,9,10,11,7,9,9,7,1,1,1,0,1,1,1,19,20,9,10,11,21,7,22,22,46,19,20,21,13,21,21,1,1,1,0,0,1,0,1,22,22,22,22,21,1,1,19,20,9,10,11,21,7,1,1,1,0,20,9,10,11,7,21,1,0,7,1,19,20,9,10,11,21,7,22,7,7,1,19,20,9,10,11,21,7,22,1,19,20,9,10,11,21,7,22,0,1,21,1,1,1,19,20,9,10,11,21,7,22,20,1,1,1,19,20,9,10,11,21,7,22,105,106,105,0,68,0,0,66,67,67,68,67,67,67,67,67,67,66,67,66,66,66,67,66,66,66,67,66,67,66,66,66,67,66,67,68,68,66,68,67,67,67,67,67,67,66,66,68,67,66,66,67,66,67,66,67,66,67,66,0,0,0,77,78,75,78,78,75,78,77,75,78,77,75,78,77,75,78,77,77,75,78,77,75,77,75,77,75,78,77,77,75,78,77,78,77,78,78,78,78,78,78,75,78,77,75,78,78,78,78,78,75,75,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,75,77,78,75,78,77,77,77,77,77,75,78,77,75,78,77,78,78,78,75,78,77,78,78,77,78,78,75,78,77,0,0,84,0,0,0,0,84,0,0,79,79,79,79,85,87,85,79,81,86,83,84,87,85,79,81,86,83,84,85,79,81,86,83,84,85,79,81,86,83,84,79,85,79,81,86,83,84,85,85,79,81,81,86,86,83,83,84,84,87,85,79,81,86,83,84,85,79,79,79,85,79,79,85,79,79,85,85,86,79,85,79,87,85,79,81,86,83,84,87,85,79,85,79,85,87,86,85,85,85,79,79,85,79,81,86,83,84,81,86,83,84,87,85,79,81,86,83,84,83,87,85,79,81,86,83,84,87,85,79,81,86,83,84,86,87,85,79,81,86,83,84,0,0,0,0,0,89,107,90,108,89,107,90,108,89,90,89,90,89,89,90,89,90,89,107,108,89,107,90,108,89,90,90,107,108,89,89,90,90,89,89,107,90,108,108,89,89,89,89,90,89,89,90,89,107,90,108,89,107,90,108,89,90,89,89,107,90,108,89,107,90,108,0,0,0,99,99,0,0,0,0,70,70,74,100,74,74,70,70,70,70,70,102,103,70,100,101,99,74,102,103,70,100,101,99,74,70,101,102,102,103,103,70,100,101,74,70,100,101,74,100,101,70,74,100,74,70,70,100,101,99,74,70,70,70,70,100,101,99,99,74,102,103,70,100,101,99,74,70,70,70,70,70,70,70,70,70,70,70,102,103,70,100,101,99,74,102,103,70,74,74,100,70,70,74,70,102,103,70,100,101,74,70,100,101,74,99,70,70,70,102,103,70,100,101,99,74,70,70,102,103,70,100,101,99,74,70,100,101,70,70,100,74,74,74,102,103,70,100,101,99,74,70,102,103,70,100,101,99,74,70,70,70],"f":"```````````````````````{{{d{{b{c}}}}}{{d{{h{cf}}}}}{jl}}{{}n}{{{d{A`}}}Ab}{{{d{Ab}}}Ab}{{{d{Ad}}}Ab}{{{d{Af}}}Ab}``{{{d{AhAj}}Aj}Al}{{{d{Ah{b{c}}}}e}Al{jl}{}}{{{d{n}}}{{d{c}}}{}}{{{d{n}}}{{d{An}}}}{{{d{n}}}{{d{{Bb{B`}}}}}}{{{d{n}}}{{d{{Bd{B`}}}}}}`{{{d{c}}}{{d{e}}}{}{}}000000100{{{d{Ahc}}}{{d{Ahe}}}{}{}}00000000`{{{d{{b{c}}}}}{{b{c}}}j}{{{d{{Bf{c}}}}}{{Bf{c}}}j}{{{d{Bh}}}Bh}={{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{{Bj{c}}}}}{{Bj{c}}}j}{{{d{n}}}n}{{{d{{Bl{c}}}}}{{Bl{c}}}j}{{{d{c}}{d{Ahe}}}Al{}{}}00000000{{{Bf{{d{c}}}}}{{Bf{c}}}j}{{{d{{Bf{c}}}}{d{{Bf{c}}}}}Bnl}{{{d{Bh}}{d{Bh}}}Bn}{{{d{Ab}}{d{Ab}}}Bn}{{{d{Ad}}{d{Ad}}}Bn}{{{d{Af}}{d{Af}}}Bn}{{{d{{Bj{c}}}}{d{{Bj{c}}}}}Bnl}{{{d{n}}{d{n}}}Bn}``{{{d{A`}}}C`}0{{{d{{Bf{c}}}}}{{Cb{C`}}}A`}{{{d{Ad}}}C`}{{{d{Af}}}C`}`{{}{{b{c}}}{}}{{}Ab}{{}Ad}{{}Af}{{{d{{Bl{c}}}}}{{d{c}}}{{Ch{{Cf{Cd}}}}}}{{{d{Cj}}}n}{c{{Cl{Bh}}}Cn}{c{{Cl{Ab}}}Cn}{c{{Cl{Ad}}}Cn}{c{{Cl{Af}}}Cn}{c{{Cl{n}}}Cn}{{{d{Cj}}}D`}{{}c{}}{{{d{{Bf{c}}}}{d{{Bf{c}}}}}DbDd}{{{d{Bh}}{d{Bh}}}Db}{{{d{Ab}}{d{Ab}}}Db}{{{d{Ad}}{d{Ad}}}Db}{{{d{Af}}{d{Af}}}Db}{{{d{{Bj{c}}}}{d{{Bj{c}}}}}DbDd}{{{d{n}}{d{n}}}Db}{{{d{{b{c}}}}{d{AhDf}}}DhDj}{{{d{{Bf{c}}}}{d{AhDf}}}DhDj}{{{d{Bh}}{d{AhDf}}}Dh}{{{d{Ab}}{d{AhDf}}}Dh}{{{d{Ad}}{d{AhDf}}}Dh}{{{d{Af}}{d{AhDf}}}Dh}{{{d{{Bj{c}}}}{d{AhDf}}}DhDj}{{{d{n}}{d{AhDf}}}Dh}000{cc{}}0{{{Bf{Af}}}Bh}1{{{Dn{{d{C`}}{d{Dl}}}}}Ab}2{{{Dn{C`Dl}}}Ab}333{Ann}44{{{d{E`}}AbEb}Ed}{{{d{E`}}AbEb}Ab}{{{d{E`}}AbEb}Ad}{{{d{E`}}AbEb}Af}{cn{}}05{{{d{{Bd{B`}}}}}{{Cl{nEf}}}}0{{{d{Eh}}}{{Cl{nc}}}{}}{{{d{{El{}{{Ej{c}}}}}}}{{Cl{Abc}}}Dj}{{{d{{Bf{c}}}}{d{Ahe}}}AlEnF`}{{{d{Bh}}{d{Ahc}}}AlF`}{{{d{Ab}}{d{Ahc}}}AlF`}{{{d{Ad}}{d{Ahc}}}AlF`}{{{d{Af}}{d{Ahc}}}AlF`}{{{d{n}}{d{Ahc}}}AlF`}``{{{d{n}}c}{{d{e}}}{{Fb{{Bd{B`}}}}}{}}{{{d{{b{c}}}}{d{Fd}}}{{Cb{{d{c}}}}}{jl}}{{{d{Ah{b{c}}}}{d{Ff}}}e{jl}{}}{{{d{Ah{b{c}}}}Fh{d{Fj}}}e{jl}{}}`{{{d{{b{c}}}}}e{jl}{}}{{{d{Ah{b{c}}}}cf}Db{jl}}{ce{}{}}000000000{{{d{{El{}{{Ej{c}}}}}}AbAb}{{Cl{{Cb{Db}}c}}}Dj}{{{d{{Bf{c}}}}}Db{}}{{{d{Bh}}}Db}{{{d{{Bj{c}}}}C`}DbA`}{{{d{Aj}}}Db}1`{{{d{{b{c}}}}{d{Ff}}}Db{jl}}0{{{d{{b{c}}}}{d{c}}}Db{jl}}``{{{d{Ah{b{c}}}}{d{c}}}Db{jl}}`{{{d{{b{c}}}}{d{Ff}}e}Fl{jl}{{Fn{c}}}}{c{{Bl{c}}}{{Ch{{Cf{Cd}}}}}}{{ce}{{Bl{c}}}{{Ch{{Cf{Cd}}}}}{{Fn{C`}}}}{{{d{Ah{Bl{c}}}}}{{Cb{e}}}{{Ch{{Cf{Cd}}}}}{}}{{{d{Ah{Bl{c}}}}Eb}{{Cb{e}}}{{Ch{{Cf{Cd}}}}}{}}`{{{d{{b{c}}}}}{{d{{G`{{Dn{cFh}}}}}}}{jl}}{{{d{{b{c}}}}e}{{`{{Gd{}{{Gb{{Dn{{d{c}}Fh}}}}}}}}}{jl}{{Fn{c}}}}{{{d{{Bf{c}}}}{d{{Bf{c}}}}}{{Cb{Bn}}}Gf}{{{d{Bh}}{d{Bh}}}{{Cb{Bn}}}}{{{d{Ab}}{d{Ab}}}{{Cb{Bn}}}}{{{d{Ad}}{d{Ad}}}{{Cb{Bn}}}}{{{d{Af}}{d{Af}}}{{Cb{Bn}}}}{{{d{{Bj{c}}}}{d{{Bj{c}}}}}{{Cb{Bn}}}Gf}{{{d{n}}{d{n}}}{{Cb{Bn}}}}{{{d{Ah{b{c}}}}{d{Ff}}}{{G`{c}}}{jl}}{{{d{Ah{b{c}}}}Fh{d{Fj}}}{{Cb{{d{c}}}}}{jl}}{{{d{{b{c}}}}{d{Ff}}e}{{Dn{GhGh}}}{jl}{{Fn{c}}}}`{{{d{Bh}}c}ClGj}{{{d{Ab}}c}ClGj}{{{d{Ad}}c}ClGj}{{{d{Af}}c}ClGj}{{{d{n}}c}ClGj}`{{{d{{b{c}}}}{d{c}}}{{Cb{{d{Fd}}}}}{jl}}`{nc{}}{{{d{c}}}e{}{}}00000000{nAn}{{{d{c}}}Gl{}}{c{{Cl{e}}}{}{}}00000000000000000`{{{d{{b{c}}}}Fh}{{Cb{{Dn{{d{c}}{d{Fj}}}}}}}{jl}}`{{{d{{b{c}}}}}{{`{{Gd{}{{Gb{{Dn{{d{c}}Fh{d{Fj}}}}}}}}Gn}}}{jl}}{{{d{{b{c}}}}H`}{{`{{Gd{}{{Gb{{Dn{{d{c}}Fh{d{Fj}}}}}}}}}}}{jl}}{{{d{c}}}Hb{}}00000000{D`Bh}{{{d{Ah{b{c}}}}{d{c}}}Db{jl}}{{{d{{b{c}}}}e}{{`{{Gd{}{{Gb{{Dn{{d{c}}{d{Fd}}}}}}}}j}}}{jl}{{Fn{c}}}}{ce{}{}}00000000```````{{{d{Ah{Hd{ce}}}}{Hd{ce}}}AlA`Aj}{{{d{Ah{Hf{ce}}}}E`C`}{{Hd{c}}}{EdA`}Hh}{{{d{Ah{Hf{ce}}}}{d{E`}}C`}{{Hd{c}}}{EdA`}Hh}{{{d{Ah{Hh{}{{Hj{c}}}}}}c}Al{}}{{{d{Ah{Hf{ce}}}}{Hd{c}}}AlA`Hh}{{{d{Ah{Hf{ce}}}}{Hl{c}}}{{Hd{c}}}A`Hh}{{{d{Ah{Hf{ce}}}}i}{{Hd{c}}}A`Hh{{Hn{}{{Gb{c}}}}}{{Hn{}{{Gb{{Dn{{d{Ff}}g}}}}}}}}{{{d{Ah{Hf{ce}}}}g}{{Hd{c}}}A`Hh{{Hn{}{{Gb{{Dn{{d{Ff}}D`}}}}}}}}{{{d{Ah{Hf{ce}}}}g}{{Hd{c}}}A`Hh{{Hn{}{{Gb{{Dn{FfD`}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}0{{{d{Ahc}}}{{d{Ahe}}}{}{}}0{{{d{{Hd{ce}}}}}{{Hd{ce}}}jj}{{{d{c}}{d{Ahe}}}Al{}{}}{{}{{Hf{ce}}}{}I`}{{}{{Hd{ce}}}{}I`}{c{{Cl{{Hd{eg}}}}}Cn{lIb}Ib}{{{d{{Hd{ce}}}}{d{{Hd{ce}}}}}DbDdDd}{{{d{{Hf{ce}}}}{d{AhDf}}}DhDjDj}{{{d{{Hd{ce}}}}{d{AhDf}}}DhDjDj}{cc{}}{{{Id{c}}}{{Hd{ce}}}{}I`}{{{If{c}}}{{Hd{e{If{c}}}}}{}{}}2{{{d{{Hf{ce}}}}}{{d{{Hl{c}}}}}{}{}}``{{{d{Ah{Hh{}{{Hj{c}}}}}}{d{Ff}}}c{}}{{{d{Ah{Hh{}{{Hj{c}}}}}}Fh{d{Fj}}}c{}}`{{{d{{Hh{}{{Hj{c}}}}}}}c{}}{{{d{{Hf{ce}}}}}{{Hd{c}}}A`Hh}{{{d{Ah{Hf{ce}}}}H`c}{{Hd{c}}}A`Hh}{{{d{Ah{Hf{ce}}}}H`D`}{{Hd{c}}}A`Hh}{{{d{Ah{Hf{ce}}}}Ff}{{Hd{c}}}A`Hh}{{{d{Ah{Hf{ce}}}}FhFj}{{Hd{c}}}A`Hh}{ce{}{}}0{{{d{{Hd{ce}}}}}DbA`Aj}{{{d{{Hh{}{{Hj{c}}}}}}{d{Ff}}}Db{}}{c{{Hf{ec}}}{}{}}{{{d{{Hd{ce}}}}g}Cl{lIh}IhGj}{{{d{c}}}e{}{}}{c{{Cl{e}}}{}{}}000{{{d{c}}}Hb{}}077```{{IjIj}Ij}{{{d{{Il{c}}}}}{{h{c{Bl{{Cf{Cd}}}}}}}{jlDj}}{{{d{Ah{If{c}}}}{If{c}}}All}{{{d{Ah{Il{c}}}}e}Al{jlDj}{}}{{{d{Ah{Il{c}}}}{If{c}}}Al{jlDj}}{{{d{c}}}{{d{e}}}{}{}}00{{{d{Ahc}}}{{d{Ahe}}}{}{}}00{{{d{{If{c}}}}}{{If{c}}}j}{{{d{{Il{c}}}}}{{Il{c}}}j}{{{d{Ij}}}Ij}{{{d{c}}{d{Ahe}}}Al{}{}}00`{{}{{If{c}}}{}}{{}{{Il{c}}}{}}{{}Ij}{c{{Cl{{If{e}}}}}Cn{lIb}}{c{{Cl{Ij}}}Cn}{{{d{{If{c}}}}{d{{If{c}}}}}DbDd}{{{d{Ij}}{d{Ij}}}Db}{{{d{{If{c}}}}{d{AhDf}}}DhDj}{{{d{{Il{c}}}}{d{AhDf}}}DhDj}{{{d{Ij}}{d{AhDf}}}Dh}0{cc{}}00{{{d{{Il{c}}}}{d{c}}}{{Cb{{d{{Cf{Cd}}}}}}}{jlDj}}`{{{d{{Il{c}}}}{d{Fd}}}{{Cb{{Dn{cC`}}}}}{jlDj}}{{{d{Ah{Il{c}}}}{d{Ff}}}e{jlDj}{}}{{{d{Ah{Il{c}}}}Fh{d{Fj}}}e{jlDj}{}}{{{d{{Il{c}}}}}e{jlDj}{}}{{{d{{Il{c}}}}}{{d{{b{{Dn{nC`}}}}}}}{jlDj}}{{{d{Ah{Il{c}}}}c{Cf{Cd}}}{{If{c}}}{jlDj}}{ce{}{}}00{{{d{{If{c}}}}}Dbl}{{{d{{Il{c}}}}{d{Ff}}}Db{jlDj}}{{{d{{Il{c}}}}cC`}Db{jlDj}}{{{d{{Il{c}}}}{d{c}}}{{`{{Gd{}{{Gb{{Dn{C`Fh}}}}}}}}}{jlDj}}{{{d{{Il{c}}}}e}{{`{{Gd{}{{Gb{{Dn{{d{c}}C`Fh}}}}}}}}}{jlDj}{{Fn{c}}}}{{{d{{Il{c}}}}}{{`{{Gd{}{{Gb{{Dn{{d{c}}{d{{Cf{Cd}}}}}}}}}}Gn}}}{jlDj}}``{{{d{{Il{c}}}}{d{c}}}{{Cb{C`}}}{jlDj}}{{{d{{Il{c}}}}}{{h{cC`}}}{jlDj}}10{{{d{{Il{c}}}}}C`{jlDj}}{{{d{Ah{Il{c}}}}{d{c}}C`}Al{jlDj}}{{{d{Ah{Il{c}}}}cC`}Db{jlDj}}{{{d{{Il{c}}}}{d{Ff}}e}Fl{jlDj}{{Fn{c}}}}{C`{{Il{c}}}{}}{{{d{{Il{c}}}}{d{c}}}{{Cb{{Dn{C`Db}}}}}{jlDj}}{{{d{Ah{Il{c}}}}{d{c}}}{{Cb{{Dn{{Dn{C`{d{Fd}}}}{If{c}}}}}}}{jlDj}}{{{d{{Il{c}}}}}{{`{{Gd{}{{Gb{{Dn{{Dn{cC`}}Fh}}}}}}}}}{jlDj}}1{{{d{Ah{Il{c}}}}{d{c}}C`}{{Cb{{Dn{{Bl{{Cf{Cd}}}}{If{c}}}}}}}{jlDj}}{{{d{Ah{Il{c}}}}{d{{h{cC`}}}}}{{Dn{{h{c{Bl{{Cf{Cd}}}}}}{If{c}}}}}{jlDj}}{{{d{{Il{c}}}}{d{c}}}{{`{{Gd{}{{Gb{{Dn{C`{d{Fd}}}}}}}}}}}{jlDj}}{{{d{{Il{c}}}}e}{{`{{Gd{}{{Gb{{Dn{{d{c}}C`{d{Fd}}}}}}}}j}}}{jlDj}{{Fn{c}}}}{{{d{{Il{c}}}}{d{Ff}}e}{{Dn{GhGh}}}{jlDj}{{Fn{c}}}}{{{d{{If{c}}}}e}Cl{lIh}Gj}{{{d{Ij}}c}ClGj}{{{d{{Il{c}}}}cC`}{{Cb{{d{Fd}}}}}{jlDj}}{{{d{c}}}e{}{}}00{{{d{c}}}Gl{}}{{{d{Ij}}}Gh}`0{c{{Cl{e}}}{}{}}00000{{{d{{Il{c}}}}Fh}{{Cb{{Dn{cC`{d{Fj}}}}}}}{jlDj}}{{{d{{Il{c}}}}}{{`{{Gd{}{{Gb{{Dn{cC`Fh{d{Fj}}}}}}}}}}}{jlDj}}{{{d{{Il{c}}}}H`}{{`{{Gd{}{{Gb{{Dn{cC`Fh{d{Fj}}}}}}}}}}}{jlDj}}{{{d{c}}}Hb{}}00{{{d{{Il{c}}}}{d{c}}}{{Cb{{Bl{{Cf{Cd}}}}}}}{jlDj}}{{{d{Ah{Il{c}}}}cC`}Db{jlDj}}`{{{d{{Il{c}}}}{d{c}}}{{`{{Gd{}{{Gb{{Dn{C`{d{Fd}}}}}}}}j}}}{jlDj}}{{{d{{Il{c}}}}}{{`{{Gd{}{{Gb{{Dn{cC`{d{Fd}}}}}}}}j}}}{jlDj}}{ce{}{}}00``````````{{{d{AhIn}}{d{J`}}}{{Cl{AlJb}}}}{{{d{AhIn}}{d{Jd}}C`}{{Cl{J`Jf}}}}{{{d{AhIn}}{d{Jd}}C`Ab}{{Cl{J`Jh}}}}{{{d{AhIn}}Jj}{{Cl{J`Jf}}}}{{{d{Jj}}}Ab}{{{d{c}}}{{d{e}}}{}{}}000000{{{d{Ahc}}}{{d{Ahe}}}{}{}}000000{{{d{Jj}}}Jj}{{{d{In}}}In}{{{d{Jb}}}Jb}{{{d{Jl}}}Jl}{{{d{Jf}}}Jf}{{{d{Jh}}}Jh}{{{d{c}}{d{Ahe}}}Al{}{}}00000{{{d{AhIn}}Ab}{{Cl{J`Jb}}}}{{{d{Jj}}{d{Jj}}}Db}{{{d{In}}{d{In}}}Db}{{{d{Jb}}{d{Jb}}}Db}{{{d{Jl}}{d{Jl}}}Db}{{{d{Jf}}{d{Jf}}}Db}{{{d{Jh}}{d{Jh}}}Db}{{Jjc}{{Cl{JjJj}}}{{Hn{}{{Gb{Ab}}}}}}{{{d{Jj}}{d{AhDf}}}Dh}{{{d{In}}{d{AhDf}}}Dh}{{{d{Jb}}{d{AhDf}}}Dh}0{{{d{Jl}}{d{AhDf}}}Dh}0{{{d{Jf}}{d{AhDf}}}Dh}0{{{d{Jh}}{d{AhDf}}}Dh}0{cc{}}000000{c{{Cl{Jj{Cb{Jj}}}}}{{Hn{}{{Gb{Ab}}}}}}{{{h{C`Dl}}}{{Cl{InJb}}}}{J`{{Cl{InJb}}}}{Dl{{Dn{InJ`}}}}{{{d{Jd}}C`}Jj}{Jj{{Cl{InJb}}}}{{{d{In}}}Dl}{{{d{Jj}}C`}{{Cb{Jj}}}}{{{d{In}}C`}{{Cb{Jj}}}}{{{d{In}}}{{Cl{Abc}}}{}}{{{d{Jj}}}Dl}{{{d{Jj}}}C`}`{{{d{In}}}J`}{{JjAb}Jj}{{{d{AhIn}}Ab}{{Cl{J`Jl}}}}{ce{}{}}0000000{Jjc{}}{{{d{In}}AbAb}{{Cl{{Cb{Db}}c}}}{}}{{{d{Jj}}}Jn}{{{d{In}}}Jn}{AbJj}{{{d{AhJn}}}{{Cb{c}}}{}}`{{{d{Jj}}}{{Cb{Jj}}}}{{JjAb}{{Cl{JjJj}}}}{{{d{Jj}}c}{{`{{K`{}{{Gb{Jj}}}}}}}{{Fn{C`}}}}{{{d{In}}c}{{`{{K`{}{{Gb{Jj}}}}}}}{{Fn{C`}}}}{{{d{In}}}Jj}{{{d{c}}}e{}{}}00000{{{d{c}}}Gl{}}000{c{{Cl{e}}}{}{}}000000`0000000{{{d{c}}}Hb{}}000000`???????`````{{{d{c}}}{{d{e}}}{}{}}000{{{d{Ahc}}}{{d{Ahe}}}{}{}}000{{Kb{d{{Hl{c}}}}}Kb{}}{{{Kd{c}}{d{{Hl{e}}}}}{{Kd{c}}}{lj}{}}{{Kbe}Kb{{Kh{{Kf{Ff}}}}}{{Hn{}{{Gb{{Dn{H`c}}}}}}}}{{{Kd{c}}g}{{Kd{c}}}{lj}{{Kh{{Kf{Ff}}}}}{{Hn{}{{Gb{{Dn{H`e}}}}}}}}{{Kbe}Kb{{Gn{}{{Gb{Fh}}}}Kj}{{Hn{}{{Kl{c}}{Gb{Fh}}}}}}{{Kbe}Kb{{Gn{}{{Gb{f}}}}Kj}{{Hn{}{{Kl{c}}{Gb{f}}}}}}{{{Kd{c}}cg}{{Kd{c}}}{lj}{{K`{}{{Gb{{Dn{C`f}}}}}}Kj}{{Hn{}{{Kl{e}}}}}}``{{Kbe}Kb{{Gn{}{{Gb{H`}}}}Kj}{{Hn{}{{Kl{c}}{Gb{H`}}}}}}``{cc{}}000{JjKb}{Jj{{Kd{c}}}{lj}}{{Jj{d{{Il{c}}}}}{{Kd{c}}}{Djlj}}``{{Kbc}Kb{{Kn{{d{Fh}}}}KjL`}}{{Kbc}Kb{{Kn{{d{Fd}}}}KjL`}}{{{Kd{c}}e}{{Kd{c}}}{Kjlj}{{Kn{cC`{d{Fd}}}}KjL`j}}{{{Kd{c}}ce}{{Kd{c}}}{Kjlj}{{Kn{C`{d{Fd}}}}KjL`}}{{Kbc}Kb{{Kn{{d{H`}}}}KjL`}}{ce{}{}}000``{{Kb{d{{Il{c}}}}e}Kb{jlDjKjL`}{{Fn{c}}}}{{Kbe}Kb{{Gn{}{{Gb{Fh}}}}Kj}{{Hn{}{{Kl{c}}}}}}{{Kbe}Kb{{Gn{}{{Gb{f}}}}Kj}{{Hn{}{{Kl{c}}}}}}>{{Kbe}Kb{{Gn{}{{Gb{H`}}}}Kj}{{Hn{}{{Kl{c}}}}}}``{c{{Cl{e}}}{}{}}0000000```{{{d{c}}}Hb{}}0006666`````````{{{d{{Hl{c}}}}}{{d{{G`{{Dn{cH`}}}}}}}{}}{{{d{{Hl{c}}}}}{{`{{K`{}{{Gb{{Dn{Fh{d{Fj}}}}}}}}}}}{}}{{{d{{Id{c}}}}}{{`{{K`{}{{Gb{C`}}}}}}}A`}``{{{d{Ah{Id{c}}}}{Id{c}}}All}{{{d{Ah{Hl{c}}}}{Id{c}}}Al{jl}}{{{d{Ah{Hl{c}}}}{Hl{c}}}{{Id{c}}}{jl}}{{{d{{Hl{c}}}}}{{d{{Hl{c}}}}}{}}{{{d{{Hl{c}}}}{d{e}}Abik}IjA`{{El{}{{Ej{Lb}}}}}j{{Hn{}{{Gb{{Dn{gFh}}}}}}}{{Kn{{d{g}}{d{Fd}}}{{Ld{Db}}}}}}{{{d{Ah{Hl{c}}}}e}{{Id{c}}}{jl}{{Hn{}{{Gb{{Dn{FfD`}}}}}}}}{{{d{c}}}{{d{e}}}{}{}}000000{{{d{Ahc}}}{{d{Ahe}}}{}{}}000000{{{d{{Hl{c}}}}{d{Ff}}}{{Cl{D`Lf}}}{}}`{c{{Cb{Fl}}}{}}{c{{Cb{Gh}}}{}}10{{{d{{Hl{c}}}}}{{Hl{c}}}j}{{{d{{Lh{ce}}}}}{{Lh{ce}}}jj}{{{d{{Lj{ce}}}}}{{Lj{ce}}}jj}{{{d{{Id{c}}}}}{{Id{c}}}j}{{{d{c}}{d{Ahe}}}Al{}{}}000{{{d{{Lh{ce}}}}{d{{Lh{ce}}}}}Bnll}{{{d{{Lj{ce}}}}{d{{Lj{ce}}}}}Bnll}{{}{{Hl{c}}}{}}{{}{{Id{c}}}{}}{{{d{{Lh{ce}}}}}{{d{g}}}{}{}{}}{c{{Cl{{Id{e}}}}}Cn{lIb}}{{{d{{Hl{c}}}}{d{Ff}}}{{`{{K`{}{{Gb{{Dn{EbH`}}}}}}}}}{}}{{{d{{Hl{c}}}}{d{{Hl{c}}}}}DbDd}{{{d{{Lh{ce}}}}{d{{Lh{ce}}}}}DbDdDd}{{{d{{Lj{ce}}}}{d{{Lj{ce}}}}}DbDdDd}{{{d{Lf}}{d{Lf}}}Db}{{{d{{Id{c}}}}{d{{Id{c}}}}}DbDd}{{{d{{Hl{c}}}}{d{e}}Abi}{{`{{K`{}{{Gb{{Dn{g{Bj{c}}}}}}}}}}}A`{{El{}{{Ej{Lb}}}}}j{{Hn{}{{Gb{{Dn{gFh}}}}}}}}0{{{d{{Hl{c}}}}}{{`{{K`{}{{Gb{{Dn{Fh{d{Fj}}}}}}}}}}}{}}{{{d{{Hl{c}}}}{d{AhDf}}}DhDj}{{{d{{Lh{ce}}}}{d{AhDf}}}DhDjDj}{{{d{{Lj{ce}}}}{d{AhDf}}}DhDjDj}{{{d{Lf}}{d{AhDf}}}Dh}0{{{d{{Id{c}}}}{d{AhDf}}}DhDj}{cc{}}000000{{{d{{Hl{c}}}}}{{`{{K`{}{{Gb{{Lh{{Kf{Ff}}c}}}}}}}}}{}}{{{d{{Hl{c}}}}{d{e}}AbH`}{{Cb{{Bf{{d{c}}}}}}}A`{{El{}{{Ej{Lb}}}}}}{{{d{{Hl{c}}}}{d{e}}AbFh}{{Cb{{Dn{{Bf{{d{c}}}}H`}}}}}A`{{El{}{{Ej{Lb}}}}}}{{{d{{Hl{c}}}}H`}{{Cb{{Kf{Ff}}}}}{}}{{{d{{Hl{c}}}}H`}{{Cb{{Lh{{Kf{Ff}}c}}}}}{}}{{{d{{Hl{c}}}}Fh}{{Cb{{d{Fj}}}}}{}}{{{d{{Hl{c}}}}}{{Id{c}}}{jl}}{{{d{Ah{Hl{c}}}}H`c}{{Id{c}}}{jl}}{{{d{Ah{Hl{c}}}}H`D`}{{Id{c}}}{jl}}{{{d{Ah{Hl{c}}}}e}{{Id{c}}}{jl}{{Kh{{Kf{Ff}}}}}}{{{d{Ah{Hl{c}}}}FhFj}{{Id{c}}}{jl}}{ce{}{}}00000000{{{d{{Hl{c}}}}}Db{}}{{{d{{Id{c}}}}}Dbl}``{{{d{{Hl{c}}}}{d{e}}Ab}{{`{{K`{}{{Gb{{Lj{{Kf{Ff}}c}}}}}}}}}A`El}{{{Hl{c}}g}{{Hl{e}}}{jl}{jl}{{Kn{c}{{Ld{e}}}}}}{{{Id{c}}g}{{Id{e}}}ll{{Kn{c}{{Ld{e}}}}}}{c{{Hl{e}}}{{Hn{}{{Gb{Ff}}}}}{jl}}{{{d{Ah{Ll{cg}}}}}{{Cb{i}}}{}{}{{Kn{Eb{Kf{Ff}}}{{Ld{{Cb{e}}}}}}}{}}{{{d{Ah{Ln{cg}}}}}{{Cb{i}}}{}{}{{Kn{EbH`}{{Ld{{Cb{e}}}}}}}{}}{{{d{{Hl{c}}}}Fh}{{d{{M`{H`}}}}}{}}{{{d{{Lh{ce}}}}{d{{Lh{ce}}}}}{{Cb{Bn}}}GfGf}{{{d{{Lj{ce}}}}{d{{Lj{ce}}}}}{{Cb{Bn}}}GfGf}{{{d{{Id{c}}}}e}Cl{lIh}Gj}{{{d{c}}}e{}{}}000{{{d{c}}}Gl{}}{{{d{{Hl{c}}}}{d{e}}Abik}{{Cl{Ij}}}A`Elj{{Hn{}{{Gb{{Dn{gFh}}}}}}}{{Kn{{d{g}}{d{Fd}}}{{Ld{Db}}}}}}{{{d{{Hl{c}}}}{d{e}}Abi}{{`{{K`{}{{Gb{{Cl{{Dn{g{Bj{c}}}}}}}}}}}}}A`Elj{{Hn{}{{Gb{{Dn{gFh}}}}}}}}0{c{{Cl{e}}}{}{}}000000{{{d{{Hl{c}}}}{d{e}}AbH`}{{Cl{{Cb{{Bf{{d{c}}}}}}}}}A`El}{{{d{{Hl{c}}}}{d{e}}AbFh}{{Cl{{Cb{{Dn{{Bf{{d{c}}}}H`}}}}}}}A`El}2222222{{{d{{Hl{c}}}}{d{e}}Ab}{{`{{K`{}{{Gb{{Cl{{Lj{{Kf{Ff}}c}}}}}}}}}}}A`El}``{{{d{{Hl{c}}}}H`}{{Cb{{h{C`{d{Fj}}}}}}}{}}{{{d{{Hl{c}}}}H`}{{`{{Gd{}{{Gb{{Dn{C`{d{{M`{H`}}}}}}}}}}}}}{}}`{{{d{{Id{c}}}}}{{`{{K`{}{{Gb{{Dn{Fh{d{Fj}}}}}}}}}}}{}}``{{{d{c}}}Hb{}}000000{{{d{Ah{Hl{c}}}}D`}{{Id{c}}}{jl}}{ce{}{}}000000{{{d{{Hl{c}}}}ei}{{Ll{ci}}}{jl}{{Kh{{Kf{Ff}}}}}{}{{Kn{Eb{Kf{Ff}}}{{Ld{{Cb{g}}}}}}}}{{{d{{Hl{c}}}}{d{Ff}}g}{{Ln{cg}}}{}{}{{Kn{EbH`}{{Ld{{Cb{e}}}}}}}}{{{d{{Hl{c}}}}H`g}{{Ln{cg}}}{jl}{}{{Kn{EbH`}{{Ld{{Cb{e}}}}}}}}","D":"BMj","p":[[5,"SpkTxOutIndex",0,804],[1,"reference"],[5,"ScriptBuf",805],[5,"BTreeMap",806],[10,"Clone",807],[10,"Ord",808],[5,"DescriptorId",0,809],[10,"Anchor",0,810],[5,"BlockId",0,811],[5,"ConfirmationHeightAnchor",0,811],[5,"ConfirmationTimeHeightAnchor",0,811],[0,"mut"],[10,"Append",0,810],[1,"unit"],[5,"Hash",812],[1,"u8"],[1,"array"],[1,"slice"],[6,"ChainPosition",0,811],[6,"ConfirmationTime",0,811],[5,"FullTxOut",0,811],[5,"SpkIterator",0,813],[6,"Ordering",808],[1,"u32"],[6,"Option",814],[6,"DescriptorPublicKey",815],[6,"Descriptor",816],[10,"Borrow",817],[10,"DescriptorExt",0,809],[6,"Result",818],[10,"Deserializer",819],[1,"u64"],[1,"bool"],[10,"PartialEq",808],[5,"Formatter",820],[8,"Result",820],[10,"Debug",820],[5,"BlockHash",821],[1,"tuple"],[5,"Block",822],[1,"usize"],[10,"AnchorFromBlockPosition",0,810],[5,"FromSliceError",823],[1,"str"],[17,"Error"],[10,"ChainOracle",0,824],[10,"Hash",825],[10,"Hasher",825],[10,"SliceIndex",826],[5,"Script",827],[5,"Transaction",828],[5,"OutPoint",828],[5,"TxOut",828],[5,"SignedAmount",829],[10,"RangeBounds",830],[5,"BTreeSet",831],[17,"Item"],[10,"DoubleEndedIterator",832],[10,"PartialOrd",808],[5,"Amount",829],[10,"Serializer",833],[5,"String",834],[10,"ExactSizeIterator",835],[5,"Txid",821],[5,"TypeId",836],[5,"ChangeSet",272],[5,"IndexedTxGraph",272],[10,"Indexer",272],[17,"ChangeSet"],[5,"TxGraph",643],[10,"IntoIterator",837],[10,"Default",838],[10,"Deserialize",819],[5,"ChangeSet",643],[5,"ChangeSet",328,839],[10,"Serialize",833],[5,"Balance",328],[5,"KeychainTxOutIndex",328,839],[5,"LocalChain",430],[8,"ChangeSet",430],[5,"MissingGenesisError",430],[5,"Header",822],[5,"CannotConnectError",430],[6,"ApplyHeaderError",430],[5,"CheckPoint",430],[5,"AlterCheckPointError",430],[5,"CheckPointIter",430],[10,"Iterator",840],[5,"SyncRequest",572],[5,"FullScanRequest",572],[5,"Arc",841],[10,"Into",842],[10,"Send",843],[17,"IntoIter"],[10,"FnMut",844],[10,"Sync",843],[6,"Infallible",842],[17,"Output"],[6,"CalculateFeeError",643],[5,"TxNode",643],[5,"CanonicalTx",643],[5,"TxAncestors",643],[5,"TxDescendants",643],[5,"HashSet",845],[15,"Confirmed",269],[15,"Unconfirmed",269],[5,"SyncResult",572],[5,"FullScanResult",572]],"r":[[0,810],[1,810],[2,810],[3,813],[4,811],[6,824],[7,811],[8,811],[9,811],[10,811],[13,809],[14,809],[16,811],[17,272],[18,813],[19,804],[20,643],[329,839],[330,839]],"b":[[35,"impl-AsRef%3C%5Bu8;+%3C%24hash+as+%24crate::Hash%3E::LEN%5D%3E-for-DescriptorId"],[36,"impl-AsRef%3C%5Bu8%5D%3E-for-DescriptorId"],[119,"impl-Display-for-DescriptorId"],[120,"impl-Debug-for-DescriptorId"],[121,"impl-LowerHex-for-DescriptorId"],[122,"impl-UpperHex-for-DescriptorId"],[127,"impl-From%3C(%26u32,+%26BlockHash)%3E-for-BlockId"],[129,"impl-From%3C(u32,+BlockHash)%3E-for-BlockId"],[298,"impl-From%3CChangeSet%3CA%3E%3E-for-ChangeSet%3CA,+IA%3E"],[299,"impl-From%3CChangeSet%3CK%3E%3E-for-ChangeSet%3CA,+ChangeSet%3CK%3E%3E"],[334,"impl-Indexer-for-KeychainTxOutIndex%3CK%3E"],[335,"impl-KeychainTxOutIndex%3CK%3E"],[358,"impl-Debug-for-Balance"],[359,"impl-Display-for-Balance"],[481,"impl-Debug-for-MissingGenesisError"],[482,"impl-Display-for-MissingGenesisError"],[483,"impl-Display-for-AlterCheckPointError"],[484,"impl-Debug-for-AlterCheckPointError"],[485,"impl-Debug-for-CannotConnectError"],[486,"impl-Display-for-CannotConnectError"],[487,"impl-Display-for-ApplyHeaderError"],[488,"impl-Debug-for-ApplyHeaderError"],[709,"impl-Debug-for-CalculateFeeError"],[710,"impl-Display-for-CalculateFeeError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAALcBSgASAAAAFQAAABkAAAAbAAIAIQABACQAFQA7ABEATgAGAFoAAQBdAAMAYwAEAGkAEgB+AAAAgAAAAIIAAACGAAAAigAEAJAAAgCUAAUAnAAAAJ4AAQChAAAArAAAALUAAAC6AAAAvgABAMMABgDNAAUA1gAJAOEAEgD5AAgABQEIABUBAAAeAQsAKwEBADwBAAA/AQkATAEAAE8BAABRAQsAXgEKAG8BAgB4AQAAkQEBAJQBAwCbAQUApAECAKwBAgC+ARkA2QEFAOABCQD6AQAACAICAA4CAAAVAhAAJwINADYCBgBCAgcAcQIHAHwCBwCSAgAAlQIAAJgCDQCoAhEAuwIEAMMCBQDiAgEA5QIAAOwCAQDvAgcA+gIGAAMDBgATAwYAGwMGAA=="}],\ +["bdk_coin_select",{"t":"FFGGFFPIPFGPPPFGFPPSPPPPPFNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNHNNNONONNNNOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNONNOOOONNNNONOOOOONNNNONNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNOOON","n":["Bnb","BnbIter","BnbLimit","BranchStrategy","CoinSelector","CoinSelectorOpt","Continue","DecideStrategy","Duration","ExcessStrategy","ExcessStrategyKind","MinAbsoluteFee","MinDrainValue","Rounds","Selection","SelectionConstraint","SelectionError","SkipBoth","SkipInclusion","TXIN_BASE_WEIGHT","TargetFee","TargetValue","ToDrain","ToFee","ToRecipient","WeightedValue","advertise_new_score","all_selected","apply_selection","backtrack","base_weight","best_score","best_strategy","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","candidate","candidates","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","coin_select_bnb","current_excess","current_weight","deselect","drain_value","drain_waste","drain_weight","effective_target","effective_value","eq","eq","excess","excess_strategies","fee","feerate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","forward","from","from","from","from","from","from","from","from","from","from","from","from","from","from","fund_outputs","hash","input_count","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_segwit","is_selected","long_term_feerate","long_term_feerate","max_extra_target","min_absolute_fee","min_drain_value","new","new","new","next","opts","partial_cmp","pool","pool_pos","recipient_value","rem_abs","rem_eff","select","select_all","select_until_finished","selected","selected","selected_absolute_value","selected_count","selected_effective_value","selected_indexes","selected_waste","selected_weight","selection","spend_drain_weight","target_feerate","target_value","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unselected","unselected_indexes","value","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","waste","weight","weight","will_continue"],"q":[[0,"bdk_coin_select"],[235,"bdk_coin_select::bnb"],[236,"core::cmp"],[237,"bdk_coin_select::coin_selector"],[238,"core::iter::traits::iterator"],[239,"core::option"],[240,"core::convert"],[241,"core::result"],[242,"core::fmt"],[243,"core::time"],[244,"bitcoin::blockdata::transaction"],[245,"core::hash"],[246,"alloc::vec"],[247,"core::marker"],[248,"alloc::string"],[249,"core::any"]],"i":[0,0,0,0,0,0,41,0,22,0,0,18,18,22,0,0,0,41,41,0,18,18,11,11,11,0,2,6,7,2,16,2,7,41,2,34,22,15,16,6,17,18,7,11,12,41,2,34,22,15,16,6,17,18,7,11,12,6,6,15,16,6,17,18,7,11,12,15,16,6,17,18,7,11,12,11,0,6,6,6,12,16,16,6,15,18,11,7,7,12,12,6,15,16,6,17,17,18,18,7,11,11,12,2,41,2,34,22,22,22,15,16,6,17,18,7,11,12,16,11,15,41,2,34,22,15,16,6,17,18,7,11,12,2,34,6,15,6,16,16,16,16,16,2,15,6,34,6,11,2,2,12,2,2,6,6,6,6,7,6,6,6,6,6,6,2,16,16,16,15,16,6,17,18,7,11,12,17,18,11,41,2,34,22,15,16,6,17,18,7,11,12,41,2,34,22,15,16,6,17,18,7,11,12,41,2,34,22,15,16,6,17,18,7,11,12,6,6,15,41,2,34,22,15,16,6,17,18,7,11,12,12,15,12,41],"f":"``````````````````````````{{{f{b{d{c}}}}c}hj}{{{f{l}}}h}{{{f{n}}{f{{A`{c}}}}}{{`{{Ad{}{{Ab{{f{c}}}}}}}}}{}}{{{f{b{d{c}}}}}hj}``{{{f{n}}}{{Aj{{f{Af}}{f{Ah}}}}}}{{{f{c}}}{{f{e}}}{}{}}00000000000{{{f{bc}}}{{f{be}}}{}{}}00000000000{{{f{l}}Al}{{f{An}}}}`{{{f{An}}}An}{{{f{B`}}}B`}{{{f{l}}}l}{{{f{Bb}}}Bb}{{{f{Bd}}}Bd}{{{f{n}}}n}{{{f{Af}}}Af}{{{f{Ah}}}Ah}{{{f{c}}{f{be}}}Bf{}{}}0000000{{{f{Af}}{f{Af}}}Bh}{{cl}{{Bj{l}}}{{Bn{Bl}}}}{{{f{l}}}C`}{{{f{l}}}Cb}{{{f{bl}}Al}h}`{{{f{B`}}}C`}`3{{{f{An}}Cd}C`}{{{f{Bd}}{f{Bd}}}h}{{{f{Af}}{f{Af}}}h}```{{{f{Ah}}}Cd}{{{f{l}}}{{Cf{nBb}}}}{{{f{An}}{f{bCh}}}Cj}{{{f{B`}}{f{bCh}}}Cj}{{{f{l}}{f{bCh}}}Cj}{{{f{Bb}}{f{bCh}}}Cj}0{{{f{Bd}}{f{bCh}}}Cj}0{{{f{n}}{f{bCh}}}Cj}{{{f{Af}}{f{bCh}}}Cj}0{{{f{Ah}}{f{bCh}}}Cj}{{{f{b{d{c}}}}h}Bfj}{cc{}}00{AlBl}1{ClBl}22222222{{{f{{A`{Cn}}}}{f{Cn}}Cb}B`}{{{f{Af}}{f{bc}}}BfD`}`{ce{}{}}00000000000{{{d{c}}{f{{Db{c}}}}}{{Dd{c}}}j}1{{{f{l}}}h}`{{{f{l}}Al}h}{{{f{B`}}}Cd}````{{l{Df{{Aj{Al{f{An}}}}}}c}{{d{c}}}j}{{DhCbh}An}{{{f{{Df{An}}}}{f{B`}}}l}{{{f{b{Dd{c}}}}}{{Bj{e}}}{jDjDl}{}}`{{{f{Af}}{f{Af}}}{{Bj{Bh}}}}`````{{{f{bl}}Al}h}{{{f{bl}}}Bf}{{{f{bl}}}{{Cf{nBb}}}}{{{f{l}}}{{`{{Ad{}{{Ab{{Aj{Al{f{An}}}}}}}}}}}}`{{{f{l}}}Dh}{{{f{l}}}Al}{{{f{l}}}C`}{{{f{l}}}{{`{{Ad{}{{Ab{Al}}}}}}}}1{{{f{l}}}Cb}````{{{f{c}}}e{}{}}0000000{{{f{c}}}Dn{}}00{c{{Cf{e}}}{}{}}00000000000000000000000{{{f{c}}}E`{}}0000000000095`{ce{}{}}00000000000```{{{f{Eb}}}h}","D":"Hh","p":[[0,"mut"],[5,"Bnb",0,235],[1,"reference"],[1,"bool"],[10,"Ord",236],[5,"CoinSelector",0,237],[5,"Selection",0,237],[1,"slice"],[17,"Item"],[10,"Iterator",238],[6,"ExcessStrategyKind",0,237],[5,"ExcessStrategy",0,237],[1,"tuple"],[1,"usize"],[5,"WeightedValue",0,237],[5,"CoinSelectorOpt",0,237],[5,"SelectionError",0,237],[6,"SelectionConstraint",0,237],[1,"unit"],[6,"Ordering",236],[6,"Option",239],[6,"BnbLimit",0,235],[10,"Into",240],[1,"i64"],[1,"u32"],[1,"f32"],[6,"Result",241],[5,"Formatter",242],[8,"Result",242],[5,"Duration",243],[5,"TxOut",244],[10,"Hasher",245],[8,"DecideStrategy",0,235],[5,"BnbIter",0,235],[5,"Vec",246],[1,"u64"],[10,"Copy",247],[10,"Display",242],[5,"String",248],[5,"TypeId",249],[6,"BranchStrategy",0,235]],"r":[[0,235],[1,235],[2,235],[3,235],[4,237],[5,237],[7,235],[9,237],[10,237],[14,237],[15,237],[16,237],[25,237],[76,235]],"b":[[95,"impl-Debug-for-SelectionError"],[96,"impl-Display-for-SelectionError"],[97,"impl-Debug-for-SelectionConstraint"],[98,"impl-Display-for-SelectionConstraint"],[100,"impl-Debug-for-ExcessStrategyKind"],[101,"impl-Display-for-ExcessStrategyKind"],[107,"impl-From%3Cusize%3E-for-BnbLimit"],[109,"impl-From%3CDuration%3E-for-BnbLimit"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKcAGAAAAAAAAgAAAAYAAAAJAAIADgADABcAAgAcAAEAIAAAACIAKgBQAAIAVgAEAFwACwBsAAAAbgAAAHcAAQCHAAEAigABAJIADQChAAAAowAAAKYAAACqADAA3AAMAOoAAQA="}],\ +["bdk_electrum",{"t":"KFFENNNNENNMNNMNNNNNNNNNNNN","n":["ElectrumExt","ElectrumFullScanResult","ElectrumSyncResult","bdk_chain","borrow","borrow","borrow_mut","borrow_mut","electrum_client","from","from","full_scan","into","into","sync","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","with_confirmation_height_anchor","with_confirmation_height_anchor","with_confirmation_time_height_anchor","with_confirmation_time_height_anchor"],"q":[[0,"bdk_electrum"],[27,"bdk_electrum::electrum_ext"],[28,"bdk_chain::spk_client"],[29,"electrum_client::types"],[30,"core::result"],[31,"core::cmp"],[32,"core::clone"],[33,"core::any"],[34,"bdk_chain::chain_data"],[35,"electrum_client::api"]],"i":[0,0,0,0,7,13,7,13,0,7,13,3,7,13,3,7,13,7,13,7,13,7,13,7,13,7,13],"f":"````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0`{cc{}}0{{{b{f}}{h{c}}jjl}{{Ab{{n{c}}A`}}}{AdAf}}{ce{}{}}0{{{b{f}}Ahjl}{{Ab{AjA`}}}}{c{{Ab{e}}}{}{}}000{{{b{c}}}Al{}}033{{{n{c}}}{{B`{cAn}}}{}}{Aj{{Bb{An}}}}{{{n{c}}{b{e}}}{{Ab{{B`{cBd}}A`}}}{}Bf}{{Aj{b{c}}}{{Ab{{Bb{Bd}}A`}}}Bf}","D":"Al","p":[[1,"reference"],[0,"mut"],[10,"ElectrumExt",0,27],[5,"FullScanRequest",28],[1,"usize"],[1,"bool"],[5,"ElectrumFullScanResult",0,27],[6,"Error",29],[6,"Result",30],[10,"Ord",31],[10,"Clone",32],[5,"SyncRequest",28],[5,"ElectrumSyncResult",0,27],[5,"TypeId",33],[5,"ConfirmationHeightAnchor",34],[5,"FullScanResult",28],[5,"SyncResult",28],[5,"ConfirmationTimeHeightAnchor",34],[10,"ElectrumApi",35]],"r":[[0,27],[1,27],[2,27]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA0AAgAEAAUAEAAHAA=="}],\ +["bdk_esplora",{"t":"IKKEMMMM","n":["Error","EsploraAsyncExt","EsploraExt","esplora_client","full_scan","full_scan","sync","sync"],"q":[[0,"bdk_esplora"],[8,"bdk_esplora::blocking_ext"],[9,"bdk_chain::spk_client"],[10,"core::result"],[11,"core::cmp"],[12,"core::clone"],[13,"bdk_esplora::async_ext"],[14,"core::future::future"],[15,"alloc::boxed"],[16,"core::pin"],[17,"core::marker"]],"i":[0,0,0,0,1,10,1,10],"f":"````{{{d{b}}{f{c}}hh}{{n{{j{c}}l}}}{A`Ab}}{{{d{Ad}}{f{c}}hh}{{Aj{{Ah{Af}}}}}{A`AbAl}}{{{d{b}}Anh}{{n{B`l}}}}{{{d{Ad}}Anh}{{Aj{{Ah{Af}}}}}}","D":"A`","p":[[10,"EsploraExt",0,8],[1,"reference"],[5,"FullScanRequest",9],[1,"usize"],[5,"FullScanResult",9],[8,"Error",0,8],[6,"Result",10],[10,"Ord",11],[10,"Clone",12],[10,"EsploraAsyncExt",0,13],[10,"Future",14],[5,"Box",15],[5,"Pin",16],[10,"Send",17],[5,"SyncRequest",9],[5,"SyncResult",9]],"r":[[0,8],[1,13],[2,8]],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAAAEAAAAAQA"}],\ +["bdk_file_store",{"t":"FPFGPPPGFNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOO","n":["AggregateChangesetsError","Bincode","EntryIter","FileError","InvalidMagicBytes","Io","Io","IterError","Store","aggregate_changesets","append_changeset","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","changeset","create_new","drop","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","into","into","into","into","into","into_iter","iter_changesets","iter_error","load_from_persistence","new","next","open","open_or_create_new","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","write_changes","expected","got"],"q":[[0,"bdk_file_store"],[75,"bdk_file_store::FileError"],[77,"bdk_file_store::store"],[78,"core::option"],[79,"core::result"],[80,"bdk_chain::tx_data_traits"],[81,"serde::ser"],[82,"serde::de"],[83,"core::marker"],[84,"std::io::error"],[85,"std::path"],[86,"core::convert"],[87,"bdk_file_store::entry_iter"],[88,"core::fmt"],[89,"anyhow"],[90,"std::fs"],[91,"alloc::string"],[92,"core::any"]],"i":[0,20,0,0,16,20,16,0,0,2,2,19,20,2,5,16,19,20,2,5,16,5,2,19,20,20,2,5,5,16,16,19,20,20,2,5,16,16,19,20,2,5,16,19,2,5,2,19,19,2,2,20,5,16,19,20,2,5,16,19,20,2,5,16,19,20,2,5,16,19,20,2,5,16,2,29,29],"f":"`````````{{{f{b{d{c}}}}}{{l{{h{c}}{j{c}}}}}{nA`AbAdAf}}{{{f{b{d{c}}}}{f{c}}}{{l{AhAj}}}{nA`AbAdAf}}{{{f{c}}}{{f{e}}}{}{}}0000{{{f{bc}}}{{f{be}}}{}{}}0000`{{{f{{An{Al}}}}c}{{l{{d{e}}B`}}}{{Bd{Bb}}}{nA`AbAdAf}}{{{f{b{Bf{c}}}}}Ah{}}{{{f{Bh}}{f{bBj}}}Bl}0{{{f{{d{c}}}}{f{bBj}}}Bl{AfAdBn}}{{{f{{j{c}}}}{f{bBj}}}Bl{}}{{{f{{j{c}}}}{f{bBj}}}BlBn}{{{f{B`}}{f{bBj}}}Bl}0{cc{}}{AjBh}1111{AjB`}{ce{}{}}00000{{{f{b{d{c}}}}}{{Bf{c}}}{nA`AbAdAf}}`{{{f{b{d{c}}}}}{{C`{{h{c}}}}}{nA`AbAdAf}}{{Cb{f{bCd}}}{{Bf{c}}}{}}{{{f{b{Bf{c}}}}}{{h{e}}}Ab{}}>>{{{f{c}}}Cf{}}00{c{{l{e}}}{}{}}000000000{{{f{c}}}Ch{}}000077777{{{f{b{d{c}}}}{f{c}}}{{C`{Ah}}}{nA`AbAdAf}}``","D":"Ch","p":[[0,"mut"],[5,"Store",0,77],[1,"reference"],[6,"Option",78],[5,"AggregateChangesetsError",0,77],[6,"Result",79],[10,"Append",80],[10,"Serialize",81],[10,"DeserializeOwned",82],[10,"Send",83],[10,"Sync",83],[1,"unit"],[5,"Error",84],[1,"u8"],[1,"slice"],[6,"FileError",0],[5,"Path",85],[10,"AsRef",86],[5,"EntryIter",0,87],[6,"IterError",0,87],[5,"Formatter",88],[8,"Result",88],[10,"Debug",88],[8,"Result",89],[1,"u64"],[5,"File",90],[5,"String",91],[5,"TypeId",92],[15,"InvalidMagicBytes",75]],"r":[[0,77],[2,87],[7,87],[8,77]],"b":[[24,"impl-Debug-for-IterError"],[25,"impl-Display-for-IterError"],[27,"impl-Display-for-AggregateChangesetsError%3CC%3E"],[28,"impl-Debug-for-AggregateChangesetsError%3CC%3E"],[29,"impl-Display-for-FileError"],[30,"impl-Debug-for-FileError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADEABwAMAAkAGAAHACEAAAAmAAAALAAAAC8AAgA0ABkA"}],\ +["bdk_hwi",{"t":"FNNNNNNNNNNNN","n":["HWISigner","borrow","borrow_mut","fmt","from","from_device","id","into","sign_transaction","try_from","try_into","type_id","vzip"],"q":[[0,"bdk_hwi"],[13,"bdk_hwi::signer"],[14,"core::fmt"],[15,"hwi::types"],[16,"hwi::error"],[17,"core::result"],[18,"secp256k1::context::alloc_only"],[19,"secp256k1"],[20,"bdk_wallet::wallet::signer"],[21,"bitcoin::psbt"],[22,"core::any"]],"i":[0,3,3,3,3,3,3,3,3,3,3,3,3],"f":"`{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}{{{b{f}}{b{dh}}}j}{cc{}}{{{b{l}}n}{{Ab{fA`}}}}{{{b{f}}{b{{Af{Ad}}}}}Ah}{ce{}{}}{{{b{f}}{b{dAj}}{b{Al}}{b{{Af{Ad}}}}}{{Ab{AnB`}}}}{c{{Ab{e}}}{}{}}0{{{b{c}}}Bb{}}3","D":"j","p":[[1,"reference"],[0,"mut"],[5,"HWISigner",0,13],[5,"Formatter",14],[8,"Result",14],[5,"HWIDevice",15],[5,"HWIChain",15],[6,"Error",16],[6,"Result",17],[6,"All",18],[5,"Secp256k1",19],[6,"SignerId",20],[5,"Psbt",21],[5,"SignOptions",20],[1,"unit"],[6,"SignerError",20],[5,"TypeId",22]],"r":[[0,13]],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAgAAwACAAIABwAAAAkABAA="}],\ +["bdk_persist",{"t":"FFKNNNNNONNNNNNNNNNNNONNNMONNNNNNNNNNNNNNM","n":["CombinedChangeSet","Persist","PersistBackend","append","borrow","borrow","borrow_mut","borrow_mut","chain","clone","clone_into","commit","default","deserialize","eq","fmt","fmt","from","from","from","from","indexed_tx_graph","into","into","is_empty","load_from_persistence","network","new","serialize","stage","stage_and_commit","staged","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write_changes"],"q":[[0,"bdk_persist"],[42,"bdk_persist::changeset"],[43,"core::cmp"],[44,"bdk_chain::tx_data_traits"],[45,"core::clone"],[46,"bdk_persist::persist"],[47,"core::option"],[48,"anyhow"],[49,"core::default"],[50,"core::result"],[51,"serde::de"],[52,"core::fmt"],[53,"bdk_chain::local_chain"],[54,"bdk_chain::keychain::txout_index"],[55,"bdk_chain::indexed_tx_graph"],[56,"core::marker"],[57,"serde::ser"],[58,"core::any"]],"i":[0,0,0,2,8,2,8,2,2,2,2,8,2,2,2,8,2,8,2,2,2,2,8,2,2,25,2,8,2,8,8,8,2,8,2,8,2,8,2,8,2,25],"f":"```{{{f{b{d{ce}}}}{d{ce}}}hjl}{{{f{c}}}{{f{e}}}{}{}}0{{{f{bc}}}{{f{be}}}{}{}}0`{{{f{{d{ce}}}}}{{d{ce}}}nn}{{{f{c}}{f{be}}}h{}{}}{{{f{b{A`{c}}}}}{{Ad{{Ab{c}}}}}{AfAh}}{{}{{d{ce}}}{}{}}{c{{Aj{{d{eg}}}}}Al{jAn}{jAn}}{{{f{{d{ce}}}}{f{{d{ce}}}}}B`BbBb}{{{f{{A`{c}}}}{f{bBd}}}{{Aj{hBf}}}Bh}{{{f{{d{ce}}}}{f{bBd}}}BjBhBh}{cc{}}0{Bl{{d{ce}}}{}{}}{{{C`{c{Bn{e}}}}}{{d{ec}}}{}{}}`{ce{}{}}0{{{f{{d{ce}}}}}B`jl}{{{f{bCb}}}{{Ad{{Ab{c}}}}}{}}`{e{{A`{c}}}{AfAh}{{Cb{c}}CdCf}}{{{f{{d{ce}}}}g}Aj{jCh}{jCh}Cj}{{{f{b{A`{c}}}}c}h{AfAh}}{{{f{b{A`{c}}}}c}{{Ad{{Ab{c}}}}}{AfAh}}{{{f{{A`{c}}}}}{{f{c}}}{AfAh}}{{{f{c}}}e{}{}}{c{{Aj{e}}}{}{}}000{{{f{c}}}Cl{}}0::{{{f{bCb}}{f{c}}}{{Ad{h}}}{}}","D":"Bd","p":[[0,"mut"],[5,"CombinedChangeSet",0,42],[1,"reference"],[1,"unit"],[10,"Ord",43],[10,"Anchor",44],[10,"Clone",45],[5,"Persist",0,46],[6,"Option",47],[8,"Result",48],[10,"Default",49],[10,"Append",44],[6,"Result",50],[10,"Deserializer",51],[10,"Deserialize",51],[1,"bool"],[10,"PartialEq",43],[5,"Formatter",52],[5,"Error",52],[10,"Debug",52],[8,"Result",52],[8,"ChangeSet",53],[5,"ChangeSet",54],[5,"ChangeSet",55],[10,"PersistBackend",0,46],[10,"Send",56],[10,"Sync",56],[10,"Serialize",57],[10,"Serializer",57],[5,"TypeId",58]],"r":[[0,42],[1,46],[2,46]],"b":[[19,"impl-From%3CBTreeMap%3Cu32,+Option%3CBlockHash%3E%3E%3E-for-CombinedChangeSet%3CK,+A%3E"],[20,"impl-From%3CChangeSet%3CA,+ChangeSet%3CK%3E%3E%3E-for-CombinedChangeSet%3CK,+A%3E"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABgABwAEAAQACgABAA0ABAAUAAEAGQAAAB0AAAAhAAgA"}],\ +["bdk_sqlite",{"t":"GPPFNNNNNNNNNNNNNENNNNNNNNNNOO","n":["Error","Network","Sqlite","Store","borrow","borrow","borrow_mut","borrow_mut","fmt","fmt","fmt","from","from","into","into","load_from_persistence","new","rusqlite","to_string","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write_changes","expected","given"],"q":[[0,"bdk_sqlite"],[28,"bdk_sqlite::Error"],[30,"bdk_sqlite::store"],[31,"core::fmt"],[32,"core::option"],[33,"anyhow"],[34,"core::cmp"],[35,"serde::de"],[36,"serde::ser"],[37,"core::marker"],[38,"bdk_chain::tx_data_traits"],[39,"core::clone"],[40,"bdk_persist::changeset"],[41,"core::convert"],[42,"rusqlite"],[43,"rusqlite::error"],[44,"core::result"],[45,"alloc::string"],[46,"core::any"]],"i":[0,6,6,0,3,6,3,6,3,6,6,3,6,3,6,3,3,0,6,3,6,3,6,3,6,3,6,3,24,24],"f":"````{{{b{c}}}{{b{e}}}{}{}}0{{{b{dc}}}{{b{de}}}{}{}}0{{{b{{f{ce}}}}{b{dh}}}j{}{}}{{{b{l}}{b{dh}}}j}0{cc{}}0{ce{}{}}0{{{b{d{f{ce}}}}}{{A`{{n{g}}}}}{AbAdAfAh}{AjAdAfAh}{Al{B`{{An{ce}}}}{Bb{{An{ce}}}}}}{Bd{{Bh{{f{ce}}Bf}}}{AbAdAfAh}{AjAdAfAh}}`{{{b{c}}}Bj{}}{c{{Bh{e}}}{}{}}000{{{b{c}}}Bl{}}055{{{b{d{f{ce}}}}{b{g}}}{{A`{Bn}}}{AbAdAfAh}{AjAdAfAh}{Al{B`{{An{ce}}}}{Bb{{An{ce}}}}}}``","D":"Ad","p":[[1,"reference"],[0,"mut"],[5,"Store",0,30],[5,"Formatter",31],[8,"Result",31],[6,"Error",0],[6,"Option",32],[8,"Result",33],[10,"Ord",34],[10,"Deserialize",35],[10,"Serialize",36],[10,"Send",37],[10,"Anchor",38],[10,"Clone",39],[5,"CombinedChangeSet",40],[10,"From",41],[10,"Into",41],[5,"Connection",42],[6,"Error",43],[6,"Result",44],[5,"String",45],[5,"TypeId",46],[1,"unit"],[15,"Network",28]],"r":[[3,30]],"b":[[9,"impl-Debug-for-Error"],[10,"impl-Display-for-Error"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABQAAwAFAAYAEAAAABIADAA="}],\ +["bdk_testenv",{"t":"FEEEONNEOENNNNNNNNNNNNNNNNNNN","n":["TestEnv","anyhow","bitcoincore_rpc","bitcoind","bitcoind","borrow","borrow_mut","electrsd","electrsd","electrum_client","electrum_client","from","genesis_hash","into","invalidate_blocks","make_checkpoint_tip","mine_blocks","mine_empty_block","new","reorg","reorg_empty_blocks","reset_electrsd","rpc_client","send","try_from","try_into","type_id","vzip","wait_until_electrum_sees_block"],"q":[[0,"bdk_testenv"],[29,"electrum_client::api"],[30,"bitcoin::hash_types::newtypes"],[31,"anyhow"],[32,"bdk_chain::local_chain"],[33,"bitcoin::address"],[34,"core::option"],[35,"alloc::vec"],[36,"bitcoincore_rpc::client"],[37,"bitcoin::amount"],[38,"core::result"],[39,"core::any"]],"i":[0,0,0,0,3,3,3,0,3,0,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3],"f":"`````{{{b{c}}}{{b{e}}}{}{}}{{{b{dc}}}{{b{de}}}{}{}}```{{{b{f}}}{{b{{`{h}}}}}}{cc{}}{{{b{f}}}{{l{j}}}}{ce{}{}}{{{b{f}}n}{{l{A`}}}}{{{b{f}}}Ab}{{{b{f}}n{Af{Ad}}}{{l{{Ah{j}}}}}}{{{b{f}}}{{l{{Aj{nj}}}}}}{{}{{l{f}}}}{{{b{f}}n}{{l{{Ah{j}}}}}}{{{b{f}}n}{{l{{Ah{{Aj{nj}}}}}}}}{f{{l{f}}}}{{{b{f}}}{{b{{`{Al}}}}}}{{{b{f}}{b{{Ad{An}}}}B`}{{l{Bb}}}}{c{{Bd{e}}}{}{}}0{{{b{c}}}Bf{}}<{{{b{f}}}{{l{A`}}}}","D":"An","p":[[1,"reference"],[0,"mut"],[5,"TestEnv",0],[10,"ElectrumApi",29],[5,"BlockHash",30],[8,"Result",31],[1,"usize"],[1,"unit"],[5,"CheckPoint",32],[5,"Address",33],[6,"Option",34],[5,"Vec",35],[1,"tuple"],[10,"RpcApi",36],[6,"NetworkChecked",33],[5,"Amount",37],[5,"Txid",30],[6,"Result",38],[5,"TypeId",39]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAA4ABAAAAAAAAgAIABYAAAAZAAMA"}],\ +["bdk_tmp_plan",{"t":"FKPPPPFFGGFFPPGPPONNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNOOONNNNNNNNNNNNNNNNNNNOOOOOONNNNNNNNOONHNNNNOOOOOOONONNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNOOOOOOOO","n":["Assets","CanDerive","Complete","DerivationError","Incomplete","Legacy","Plan","PlanKey","PlanState","RequiredSignatures","Requirements","SatisfactionMaterial","Segwitv0","SigHashError","SigningError","TapKey","TapScript","asset_key","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","can_derive","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","default","default","default","default","derivation_hint","descriptor_key","ecdsa_sigs","expected_weight","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","hash160","hash160_images","hash160_preimages","hash256","hash256_images","hash256_preimages","into","into","into","into","into","into","into","into","keys","max_locktime","min_version","plan_satisfaction","required_locktime","required_sequence","requirements","requires_hash_preimages","ripemd160","ripemd160_images","ripemd160_preimages","schnorr_sigs","sha256","sha256_images","sha256_preimages","sign_with_keymap","signatures","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_complete","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","txo_age","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","witness_version","final_script_sig","final_script_witness","keys","keys","leaf_hash","merkle_root","plan_key","plan_keys"],"q":[[0,"bdk_tmp_plan"],[149,"bdk_tmp_plan::PlanState"],[151,"bdk_tmp_plan::RequiredSignatures"],[157,"miniscript::descriptor::key"],[158,"bitcoin::bip32"],[159,"core::option"],[160,"bdk_tmp_plan::requirements"],[161,"core::clone"],[162,"bdk_tmp_plan::template"],[163,"core::fmt"],[164,"bitcoin::crypto::sighash"],[165,"miniscript::descriptor"],[166,"bitcoin::blockdata::locktime::absolute"],[167,"bitcoin::blockdata::transaction"],[168,"secp256k1"],[169,"core::result"],[170,"core::borrow"],[171,"secp256k1::context"],[172,"alloc::string"],[173,"core::any"],[174,"bitcoin::blockdata::script::witness_version"]],"i":[0,0,41,10,41,9,0,0,0,0,0,0,9,10,0,9,9,11,41,7,9,10,11,12,13,14,41,7,9,10,11,12,13,14,3,7,9,10,11,12,13,14,7,9,10,11,12,13,14,7,9,13,14,11,11,13,12,7,9,10,10,11,12,13,14,41,7,9,10,10,10,11,12,13,14,14,7,13,14,7,13,41,7,9,10,11,12,13,14,14,14,12,0,12,12,12,7,14,7,13,13,14,7,13,9,7,7,9,10,11,12,13,14,10,12,41,7,9,10,11,12,13,14,41,7,9,10,11,12,13,14,14,41,7,9,10,11,12,13,14,41,7,9,10,11,12,13,14,12,44,44,45,46,47,48,48,47],"f":"``````````````````{{{b{c}}}{{b{e}}}{}{}}0000000{{{b{dc}}}{{b{de}}}{}{}}0000000{{{b{f}}{b{h}}}{{l{j}}}}{{{b{{n{c}}}}}{{n{c}}}A`}{{{b{{Ab{c}}}}}{{Ab{c}}}A`}{{{b{Ad}}}Ad}{{{b{{Af{c}}}}}{{Af{c}}}A`}{{{b{{Ah{c}}}}}{{Ah{c}}}A`}{{{b{Aj}}}Aj}{{{b{{Al{c}}}}}{{Al{c}}}A`}{{{b{c}}{b{de}}}An{}{}}000000{{}{{n{c}}}{}}{{}{{Ab{c}}}{}}{{}Aj}{{}{{Al{c}}}{}}```{{{b{{Ah{c}}}}}B`A`}{{{b{{n{c}}}}{b{dBb}}}BdBf}{{{b{{Ab{c}}}}{b{dBb}}}BdBf}{{{b{Ad}}{b{dBb}}}Bd}0{{{b{{Af{c}}}}{b{dBb}}}BdBf}{{{b{{Ah{c}}}}{b{dBb}}}BdBf}{{{b{Aj}}{b{dBb}}}Bd}{{{b{{Al{c}}}}{b{dBb}}}BdBf}{cc{}}00{BhAd}{BjAd}22222``````{ce{}{}}0000000``{{{b{{Ah{c}}}}}{{l{Bl}}}A`}{{{b{{Bn{h}}}}{b{{Al{c}}}}}{{l{{Ah{c}}}}}{fA`}}{{{b{{Ah{c}}}}}{{l{C`}}}A`}{{{b{{Ah{c}}}}}{{l{Cb}}}A`}{{{b{{Ah{c}}}}}{{n{c}}}A`}{{{b{{n{c}}}}}Cd{}}```````{{{b{{Ab{Cf}}}}B`{b{Ch}}{b{{Cj{c}}}}{l{Cl}}{l{Cn}}{b{d{D`{e}}}}{b{dAj}}{b{{Db{g}}}}}{{Dd{CdAd}}}{{Dh{Df}}}{{Dh{Dj}}}{DlDn}}`{{{b{c}}}e{}{}}000000{{{b{c}}}E`{}}{{{b{{Ah{c}}}}{b{Aj}}}{{Eb{c}}}A`}{c{{Dd{e}}}{}{}}000000000000000`{{{b{c}}}Ed{}}0000000<<<<<<<<{{{b{{Ah{c}}}}}{{l{Ef}}}A`}````````","D":"Fl","p":[[1,"reference"],[0,"mut"],[10,"CanDerive",0],[5,"DefiniteDescriptorKey",157],[5,"DerivationPath",158],[6,"Option",159],[5,"Requirements",0,160],[10,"Clone",161],[6,"RequiredSignatures",0,160],[6,"SigningError",0,160],[5,"PlanKey",0,162],[5,"Plan",0],[5,"SatisfactionMaterial",0],[5,"Assets",0],[1,"unit"],[1,"usize"],[5,"Formatter",163],[8,"Result",163],[10,"Debug",163],[6,"Error",164],[6,"Error",158],[1,"u32"],[6,"Descriptor",165],[6,"LockTime",166],[5,"Sequence",167],[1,"bool"],[6,"DescriptorPublicKey",157],[8,"KeyMap",165],[6,"Prevouts",164],[6,"TapSighashType",164],[6,"EcdsaSighashType",164],[5,"SighashCache",164],[5,"Secp256k1",168],[6,"Result",169],[5,"TxOut",167],[10,"Borrow",170],[5,"Transaction",167],[10,"Signing",171],[10,"Verification",171],[5,"String",172],[6,"PlanState",0],[5,"TypeId",173],[6,"WitnessVersion",174],[15,"Complete",149],[15,"Legacy",151],[15,"Segwitv0",151],[15,"TapScript",151],[15,"TapKey",151]],"r":[[7,162],[9,160],[10,160],[14,160]],"b":[[59,"impl-Display-for-SigningError"],[60,"impl-Debug-for-SigningError"],[68,"impl-From%3CError%3E-for-SigningError"],[69,"impl-From%3CError%3E-for-SigningError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAGcAEAABAAEABAABAA4AAQATACIAOgAHAEUAAQBMAAAATwAAAFoAAQBdAAAAYAAAAGIAAABmAAAAaQAAAGsAKQCYAAEA"}],\ +["bdk_wallet",{"t":"PPEPGPFEEGEFNNDNNNNNNNNENNNNNNNNNOOCQNNNNNNNNNNQNNNNNNNNNNOOCDNONCONNNEENNNNNNNNNNNNNONNNNOHNNNNCOOOPPPIGEGIKIKRGFPPPPEKGPPPPIPPPPPPPPPPNNNNNNNNNNNNNNNNNENNNNNNNNNNNNNMNNMNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNCNONMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNONNNNNNNNNMNNNNCNNNNNNNNNNNMNNNCNNNNNNNNNNNNNNNNNNNONNNNNNNNNNHHPPGPPPPPPPPPPNNNNNNNNNNNNNNNNNNPPPGPFIPPIPPPPPPPPPPPGFGPPPPPGGPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNONNONNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOOOOOOOOOOOOOOFFFFFFFFKIFFFFNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPKGGGRRKGPKKFKPPPRGIPPPPPRPFPKGPPPFFGFPIPPPHMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNMNNNNNNMNNNNNNNNNNNNNNNNNNOOONHNMNNHMNNOONNNNNNMONNNNMNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKMMMFGFPIPPPPGKGPPPPPPGGPPPPPPPFFNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNCNONNNNNNNNNCCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOONNNNNNNNNNNNMNONONNNNNNNNONNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNONNNNNNNNNHOOOOOOOOOOPPFPKFIGGPFPFNNNNNNNNNNNNNNNNNNMNNNHNNNOONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOGPPPGPPPPPPPPGPPPPPPPPPPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOFIOONNNNNNNNNNNOONNNNNNPPPPPPPKPPPPPPPPPPPPPPPFKGGGFFFPGKPNOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNOOMNNNMNONONNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOGGGPFPPGFPPPPPPFKGPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOO","n":["External","Foreign","HdKeyPaths","Internal","KeychainKind","Local","LocalOutput","SignOptions","TxBuilder","Utxo","Wallet","WeightedUtxo","as_byte","as_ref","bitcoin","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","chain","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","confirmation_time","derivation_index","descriptor","descriptor","deserialize","deserialize","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fragment","from","from","from","from","hash","hash","into","into","into","into","is_spent","keychain","keys","miniscript","outpoint","outpoint","partial_cmp","psbt","satisfaction_weight","sequence","serialize","serialize","signer","template","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","txout","txout","type_id","type_id","type_id","type_id","utxo","version","vzip","vzip","vzip","vzip","wallet","outpoint","psbt_input","sequence","Bare","Bare","Bare","DerivedDescriptor","Descriptor","DescriptorError","DescriptorPublicKey","ExtendedDescriptor","ExtractPolicy","HdKeyPaths","IntoWalletDescriptor","Key","Legacy","Miniscript","MultiXPub","Pkh","Pkh","Pkh","Policy","ScriptContext","Segwitv0","Sh","Sh","Sh","Single","TapKeyOrigins","Tr","Tr","Tr","Wpkh","Wpkh","Wpkh","Wsh","Wsh","Wsh","XPub","address","as_enum","as_enum","as_inner","as_node","at_derivation_index","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","branches","build_template","build_template_mall","calc_checksum","check_global_consensus_validity","check_global_consensus_validity","check_global_consensus_validity","check_global_policy_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_consensus_validity","check_local_policy_validity","check_local_policy_validity","check_local_policy_validity","check_local_validity","check_pk","check_pk","check_pk","check_terminal_non_malleable","check_terminal_non_malleable","check_terminal_non_malleable","check_witness","check_witness","check_witness","checksum","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","contains_raw_pkh","derive","derived_descriptor","derived_descriptor","desc_type","descriptor_id","deserialize","deserialize","dust_value","encode","eq","eq","eq","eq","error","explicit_script","ext","ext_check","extract_policy","extract_policy","extract_policy","find_derivation_index_for_spk","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","for_each_key","from","from","from","from","from","from","from","from","from","from","from_ast","from_components_unchecked","from_str","from_str","from_str_ext","from_str_insane","from_tree","from_tree","get_nth_child","get_nth_pk","get_satisfaction","get_satisfaction_mall","has_mixed_timelocks","has_repeated_keys","has_wildcard","hash","hash","hash","hash","into","into","into","into","into_inner","into_single_descriptors","into_wallet_descriptor","into_wallet_descriptor","is_deriveable","is_multipath","is_non_malleable","iter","iter_pk","lift","lift","lift_check","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_size","max_satisfaction_weight","max_satisfaction_witness_elements","max_weight_to_satisfy","name_str","name_str","name_str","new_bare","new_pk","new_pkh","new_sh","new_sh_sortedmulti","new_sh_with_wpkh","new_sh_with_wsh","new_sh_wpkh","new_sh_wsh","new_sh_wsh_sortedmulti","new_tr","new_wpkh","new_wsh","new_wsh_sortedmulti","node","other_top_level_checks","parse","parse_descriptor","parse_insane","parse_with_ext","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pk_len","pk_len","plan","plan_mall","policy","requires_sig","sanity_check","sanity_check","satisfy","satisfy","satisfy_malleable","script_code","script_pubkey","script_size","serialize","serialize","sig_type","sig_type","sig_type","substitute_raw_pkh","template","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string_with_secret","top_level_checks","top_level_type_check","translate_pk","translate_pk","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","ty","type_id","type_id","type_id","type_id","unsigned_script_sig","vzip","vzip","vzip","vzip","within_resource_limits","calc_checksum","calc_checksum_bytes","Base58","Bip32","Error","HardenedDerivationXpub","Hex","InvalidDescriptorCharacter","InvalidDescriptorChecksum","InvalidHdKeyPath","Key","Miniscript","MultiPath","Pk","Policy","borrow","borrow_mut","fmt","fmt","from","from","from","from","from","from","from","from","into","to_string","try_from","try_into","type_id","vzip","AbsoluteTimelock","AddOnLeaf","AddOnPartialComplete","BuildSatisfaction","Complete","Condition","ConditionMap","EcdsaSignature","Fingerprint","FoldedConditionMap","Hash160Preimage","Hash256Preimage","IncompatibleConditions","IndexOutOfRange","MixedTimelockUnits","Multisig","None","None","NotEnoughItemsSelected","Partial","PartialComplete","PkOrF","Policy","PolicyError","Psbt","PsbtTimelocks","Pubkey","RelativeTimelock","Ripemd160Preimage","Satisfaction","SatisfiableItem","SchnorrSignature","Sha256Preimage","Thresh","XOnlyPubkey","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","contribution","csv","default","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_condition","hash","hash","id","id","into","into","into","into","into","into","into","is_leaf","is_leaf","is_null","item","partial_cmp","requires_path","satisfaction","serialize","serialize","serialize","serialize","serialize","timelock","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","current_height","input_max_height","psbt","condition","conditions","conditions","items","items","m","m","n","n","sorted","sorted","hash","hash","hash","hash","items","keys","threshold","threshold","value","value","Bip44","Bip44Public","Bip49","Bip49Public","Bip84","Bip84Public","Bip86","Bip86Public","DescriptorTemplate","DescriptorTemplateOut","P2Pkh","P2TR","P2Wpkh","P2Wpkh_P2Sh","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build","build","build","build","build","build","build","build","build","build","build","from","from","from","from","from","from","from","from","from","from","from","from","into","into","into","into","into","into","into","into","into","into","into","into","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","into_wallet_descriptor","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","Bip32","DerivableKey","DescriptorKey","DescriptorPublicKey","DescriptorSecretKey","Entropy","Error","ExtScriptContext","ExtendedKey","FullKey","GeneratableDefaultOptions","GeneratableKey","GeneratedKey","IntoDescriptorKey","InvalidChecksum","InvalidNetwork","InvalidScriptContext","Key","KeyError","KeyMap","Legacy","Message","Miniscript","MultiXPrv","MultiXPub","Options","Private","PrivateKeyGenerateOptions","Public","ScriptContext","ScriptContextEnum","Segwitv0","Single","Single","SinglePriv","SinglePub","SinglePubKey","SortedMultiVec","Tap","ValidNetworks","XOnly","XPrv","XPub","any_network","as_enum","at_derivation_index","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_template","check_global_consensus_validity","check_global_policy_validity","check_global_validity","check_local_consensus_validity","check_local_policy_validity","check_local_validity","check_pk","check_terminal_non_malleable","check_witness","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","cmp","compressed","default","deref","derive","deserialize","encode","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","for_each_key","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_public","from_secret","from_str","from_str","from_tree","full_derivation_path","full_derivation_paths","generate","generate_default","generate_with_entropy","generate_with_entropy_default","has_secret","has_wildcard","hash","hash","hash","hash","into","into","into","into","into","into","into","into","into","into","into","into","into_assets","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_descriptor_key","into_extended_key","into_extended_key","into_extended_key","into_key","into_single_keys","into_single_keys","into_xprv","into_xpub","is_deriveable","is_legacy","is_legacy","is_multipath","is_multipath","is_segwit_v0","is_segwit_v0","is_taproot","is_taproot","is_uncompressed","is_x_only_key","k","key","key","lift","mainnet_network","master_fingerprint","max_satisfaction_size","max_satisfaction_size","max_satisfaction_witness_elements","merge_networks","name_str","new","num_der_paths","origin","origin","other_top_level_checks","override_valid_networks","partial_cmp","partial_cmp","partial_cmp","partial_cmp","pk_len","pks","sanity_check","satisfy","script_size","serialize","sig_type","sorted_node","test_networks","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_public","to_string","to_string","to_string","to_string","top_level_checks","top_level_type_check","translate_pk","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","PsbtUtils","fee_amount","fee_rate","get_utxo_for","AddressInfo","ApplyBlockError","Balance","CannotConnect","ChangeSet","ConfirmationHeightCannotBeGreaterThanTip","Descriptor","Descriptor","Descriptor","InsertTxError","IsDust","LoadError","LoadedDescriptorDoesNotMatch","LoadedGenesisDoesNotMatch","LoadedNetworkDoesNotMatch","MissingDescriptor","MissingGenesis","MissingNetwork","NewError","NewOrLoadError","NonEmptyDatabase","NotInitialized","NotInitialized","Persist","Persist","Persist","UnexpectedConnectedToHash","Update","Wallet","add","add_signer","address","all_unbounded_spk_iters","apply_block","apply_block_connected_to","apply_unconfirmed_txs","apply_update","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build_fee_bump","build_tx","calculate_fee","calculate_fee_rate","cancel_tx","chain","chain","checkpoints","clone","clone","clone_into","clone_into","coin_selection","commit","confirmed","default","default","deref","derivation_index","derivation_of_spk","descriptor_checksum","deserialize","eq","eq","error","export","finalize_psbt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","get_balance","get_descriptor_for_keychain","get_psbt_input","get_signers","get_tx","get_utxo","graph","immature","index","indexed_tx_graph","insert_checkpoint","insert_tx","insert_txout","into","into","into","into","into","into","into","into","into","is_dust","is_mine","keychain","keychains","last_active_indices","latest_checkpoint","list_output","list_unspent","list_unused_addresses","load","local_chain","mark_used","network","network","new","new_no_persist","new_no_persist_with_genesis_hash","new_or_load","new_or_load_with_genesis_hash","new_with_genesis_hash","next_derivation_index","next_unused_address","peek_address","policies","public_descriptor","reveal_addresses_to","reveal_next_address","secp_ctx","sent_and_received","serialize","sign","signer","spk_index","staged","start_full_scan","start_sync_with_revealed_spks","to_owned","to_owned","to_string","to_string","to_string","to_string","to_string","to_string","to_string","total","transactions","trusted_pending","trusted_spendable","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","tx_builder","tx_graph","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unbounded_spk_iter","unmark_used","untrusted_pending","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","wallet_name_from_descriptor","connected_to_hash","expected_hash","tip_height","tx_height","expected","expected","got","got","got","keychain","BnBNoExactMatch","BnBTotalTriesExceeded","BranchAndBoundCoinSelection","Change","CoinSelectionAlgorithm","CoinSelectionResult","DefaultCoinSelectionAlgorithm","Error","Excess","InsufficientFunds","LargestFirstCoinSelection","NoChange","OldestFirstCoinSelection","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","coin_select","coin_select","coin_select","coin_select","decide_change","default","default","default","excess","fee_amount","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","into","into","into","into","into","into","local_selected_amount","new","selected","selected_amount","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","available","needed","amount","change_fee","dust_threshold","fee","remaining_amount","BuildFeeBumpError","ChangePolicyDescriptor","CoinSelection","Conversion","CreateTxError","Descriptor","FeeRateTooLow","FeeRateUnavailable","FeeTooLow","InsufficientFunds","IrreplaceableTransaction","LockTime","MiniscriptPsbt","MiniscriptPsbtError","MissingKeyOrigin","MissingNonWitnessUtxo","NoRecipients","NoUtxosSelected","OutputBelowDustLimit","OutputUpdate","Persist","Policy","Psbt","RbfSequence","RbfSequenceCsv","SpendingPolicyRequired","TransactionConfirmed","TransactionNotFound","UnknownUtxo","UnknownUtxo","UtxoUpdate","Version0","Version1Csv","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","into","into","into","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","available","csv","needed","rbf","requested","required","required","required","FullyNodedExport","WalletExport","blockheight","blockheight","borrow","borrow_mut","change_descriptor","descriptor","deserialize","export_wallet","fmt","fmt","from","from_str","into","label","label","serialize","to_string","try_from","try_into","type_id","vzip","All","Dummy","Exclude","External","Fingerprint","Include","InputIndexOutOfRange","InputSigner","InvalidKey","InvalidNonWitnessUtxo","InvalidSighash","Legacy","MiniscriptPsbt","MissingHdKeypath","MissingKey","MissingNonWitnessUtxo","MissingWitnessScript","MissingWitnessUtxo","NonStandardSighash","None","PkHash","Segwitv0","SighashError","SignOptions","SignerCommon","SignerContext","SignerError","SignerId","SignerOrdering","SignerWrapper","SignersContainer","Tap","TapLeavesOptions","TransactionSigner","UserCanceled","add_external","allow_all_sighashes","allow_grinding","as_key_map","assume_height","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","default","default","default","default","deref","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","descriptor_secret_key","eq","eq","eq","eq","find","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","hash","id","id","id","id","ids","into","into","into","into","into","into","into","into","new","new","partial_cmp","partial_cmp","remove","remove_partial_sigs","remove_taproot_extras","sign_input","sign_input","sign_input","sign_input","sign_transaction","sign_transaction","sign_with_tap_internal_key","signers","tap_leaves_options","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","trust_witness_utxo","try_finalize","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","is_internal_key","AddForeignUtxoError","AddUtxoError","AllowShrinkingError","Bip69Lexicographic","BumpFee","ChangeAllowed","ChangeForbidden","ChangeSpendPolicy","CreateTx","InvalidOutpoint","InvalidTxid","MissingScriptPubKey","MissingUtxo","OnlyChange","Shuffle","TxBuilder","TxBuilderContext","TxOrdering","UnknownUtxo","Untouched","add_data","add_foreign_utxo","add_foreign_utxo_with_sequence","add_global_xpubs","add_recipient","add_unspendable","add_utxo","add_utxos","allow_dust","allow_shrinking","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_policy","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","coin_selection","current_height","default","default","default","default","do_not_spend_change","drain_to","drain_wallet","enable_rbf","enable_rbf_with_sequence","eq","eq","fee_absolute","fee_rate","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","hash","hash","include_output_redeem_witness_script","into","into","into","into","into","into","into","into","manually_selected_only","nlocktime","only_spend_change","only_witness_utxo","ordering","partial_cmp","partial_cmp","policy_path","set_recipients","sighash","sort_tx","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unspendable","version","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","foreign_utxo","input_txid"],"q":[[0,"bdk_wallet"],[97,"bdk_wallet::Utxo"],[100,"bdk_wallet::descriptor"],[350,"bdk_wallet::descriptor::checksum"],[352,"bdk_wallet::descriptor::error"],[383,"bdk_wallet::descriptor::policy"],[530,"bdk_wallet::descriptor::policy::BuildSatisfaction"],[533,"bdk_wallet::descriptor::policy::Satisfaction"],[544,"bdk_wallet::descriptor::policy::SatisfiableItem"],[554,"bdk_wallet::descriptor::template"],[690,"bdk_wallet::keys"],[988,"bdk_wallet::psbt"],[992,"bdk_wallet::wallet"],[1215,"bdk_wallet::wallet::ApplyBlockError"],[1217,"bdk_wallet::wallet::InsertTxError"],[1219,"bdk_wallet::wallet::NewOrLoadError"],[1225,"bdk_wallet::wallet::coin_selection"],[1317,"bdk_wallet::wallet::coin_selection::Error"],[1319,"bdk_wallet::wallet::coin_selection::Excess"],[1324,"bdk_wallet::wallet::error"],[1398,"bdk_wallet::wallet::error::CreateTxError"],[1406,"bdk_wallet::wallet::export"],[1429,"bdk_wallet::wallet::signer"],[1608,"bdk_wallet::wallet::signer::SignerContext"],[1609,"bdk_wallet::wallet::tx_builder"],[1767,"bdk_wallet::wallet::tx_builder::AddForeignUtxoError"],[1769,"bdk_wallet::types"],[1770,"core::cmp"],[1771,"core::result"],[1772,"serde::de"],[1773,"core::fmt"],[1774,"core::hash"],[1775,"bitcoin::blockdata::transaction"],[1776,"core::option"],[1777,"serde::ser"],[1778,"core::any"],[1779,"miniscript::descriptor"],[1780,"bitcoin::network"],[1781,"bitcoin::address"],[1782,"miniscript"],[1783,"miniscript::miniscript"],[1784,"miniscript::miniscript::decode"],[1785,"miniscript::miniscript::context"],[1786,"miniscript::iter::tree"],[1787,"miniscript::descriptor::key"],[1788,"alloc::vec"],[1789,"miniscript::miniscript::satisfy"],[1790,"miniscript::plan"],[1791,"bitcoin_hashes::sha256"],[1792,"miniscript::miniscript::hash256"],[1793,"bitcoin_hashes::ripemd160"],[1794,"bitcoin_hashes::hash160"],[1795,"core::clone"],[1796,"secp256k1"],[1797,"bitcoin::crypto::key"],[1798,"secp256k1::context"],[1799,"bdk_chain::descriptor_ext"],[1800,"core::str::traits"],[1801,"bitcoin::blockdata::script::owned"],[1802,"miniscript::miniscript::analyzable"],[1803,"secp256k1::context::alloc_only"],[1804,"bitcoin::blockdata::script::borrowed"],[1805,"core::ops::range"],[1806,"core::ops::function"],[1807,"miniscript::descriptor::bare"],[1808,"miniscript::descriptor::segwitv0"],[1809,"miniscript::descriptor::sh"],[1810,"miniscript::descriptor::tr"],[1811,"miniscript::miniscript::types"],[1812,"miniscript::miniscript::types::extra_props"],[1813,"miniscript::expression"],[1814,"miniscript::miniscript::iter"],[1815,"miniscript::policy::semantic"],[1816,"miniscript::policy"],[1817,"alloc::collections::btree::map"],[1818,"alloc::string"],[1819,"bitcoin::bip32"],[1820,"bitcoin::base58"],[1821,"hex_conservative::parse"],[1822,"miniscript::descriptor::sortedmulti"],[1823,"core::convert"],[1824,"core::default"],[1825,"bitcoin::blockdata::fee_rate"],[1826,"bdk_chain::keychain"],[1827,"alloc::sync"],[1828,"core::iter::traits::iterator"],[1829,"bitcoin::blockdata::block"],[1830,"bdk_chain::local_chain"],[1831,"bdk_chain::chain_data"],[1832,"core::iter::traits::collect"],[1833,"bdk_chain::tx_graph"],[1834,"bitcoin::hash_types::newtypes"],[1835,"anyhow"],[1836,"bitcoin::psbt"],[1837,"bdk_chain::spk_client"],[1838,"bitcoin::psbt::map::input"],[1839,"bdk_wallet::wallet::utils"],[1840,"core::iter::traits::double_ended"],[1841,"bdk_persist::persist"],[1842,"core::marker"],[1843,"bitcoin::amount"],[1844,"bdk_chain::keychain::txout_index"],[1845,"bitcoin::psbt::error"],[1846,"bitcoin::crypto::sighash"],[1847,"bitcoin::blockdata::script::push_bytes::primitive"],[1848,"bitcoin::blockdata::locktime::absolute"]],"i":[1,8,0,1,0,8,0,0,0,0,0,0,1,1,0,1,6,7,8,1,6,7,8,0,1,6,7,8,1,6,7,8,1,6,6,0,0,1,6,1,6,7,8,1,6,7,8,0,1,6,7,8,1,6,1,6,7,8,6,6,0,0,8,6,1,0,7,8,1,6,0,0,1,6,7,8,1,6,7,8,1,6,7,8,8,6,1,6,7,8,7,0,1,6,7,8,0,252,252,252,94,253,24,0,0,0,0,0,0,0,0,33,0,0,35,94,253,24,0,0,0,94,253,24,35,0,94,253,24,94,253,24,94,253,24,35,24,54,55,31,31,24,24,54,55,31,24,54,55,31,31,31,31,0,33,54,55,33,55,33,33,54,55,33,54,55,33,33,54,55,33,54,55,33,54,55,0,24,54,55,31,24,54,55,31,24,54,55,31,31,24,24,24,24,24,24,31,24,31,24,54,55,31,0,24,31,31,69,24,31,24,24,24,54,55,31,31,24,31,24,24,24,24,24,24,24,54,55,31,31,31,24,31,31,31,24,31,31,31,24,24,31,31,24,24,54,55,31,24,54,55,31,31,24,93,94,24,24,31,31,31,24,31,31,33,54,55,31,24,31,24,33,54,55,24,24,24,24,24,24,24,24,24,24,24,24,24,24,31,33,31,24,31,31,24,54,55,31,33,54,55,24,24,0,31,24,31,24,31,31,24,24,31,24,31,33,54,55,31,0,24,54,55,31,24,31,24,33,33,24,31,24,54,55,31,24,54,55,31,31,24,54,55,31,24,24,54,55,31,31,0,0,74,74,0,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,74,120,114,114,0,121,0,0,120,119,0,120,120,114,114,114,120,121,71,114,121,121,0,0,0,71,71,119,120,120,0,0,120,120,120,119,119,120,121,73,122,114,71,119,120,121,73,122,114,71,119,120,121,73,122,71,119,120,121,73,122,71,73,122,122,119,120,121,73,122,114,119,120,121,73,122,114,114,71,119,120,121,121,73,73,122,114,71,73,119,122,120,73,119,120,121,73,122,114,71,120,121,122,73,122,73,73,119,120,121,73,122,122,119,120,121,73,122,71,114,119,120,121,73,122,114,71,119,120,121,73,122,114,71,119,120,121,73,122,114,71,119,120,121,73,122,114,71,254,254,254,255,256,257,256,257,256,257,256,257,256,257,258,259,260,261,262,263,263,262,264,265,0,0,0,0,0,0,0,0,0,0,0,0,0,0,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,123,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,124,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,125,127,128,129,131,133,134,135,136,137,138,139,118,0,0,0,0,156,156,0,0,146,0,0,0,0,118,118,118,33,0,0,30,118,118,102,35,156,150,0,150,0,0,30,35,102,0,0,0,0,30,0,146,102,35,0,266,35,150,142,147,30,143,118,141,35,102,144,145,146,150,142,147,30,143,118,141,35,102,144,145,146,141,33,33,33,33,33,33,33,33,33,142,30,143,141,35,102,144,145,146,142,30,143,141,35,102,144,145,146,141,35,144,146,143,143,142,35,35,141,30,141,35,102,144,145,146,147,30,143,118,118,141,141,35,35,102,102,144,145,146,141,150,150,150,142,147,30,143,118,118,118,141,35,35,102,144,145,146,147,147,35,102,141,35,35,156,159,156,159,150,35,141,35,144,146,150,142,147,30,143,118,141,35,102,144,145,146,35,126,132,142,142,147,35,102,132,150,142,142,35,102,150,150,35,266,30,35,102,266,30,266,30,35,35,141,144,145,141,0,35,33,141,141,0,33,141,35,144,145,33,147,141,35,144,146,33,141,141,141,141,35,33,141,0,142,30,143,141,35,102,144,145,146,102,118,141,35,102,33,33,141,150,142,147,30,143,118,141,35,102,144,145,146,150,142,147,30,143,118,141,35,102,144,145,146,150,142,147,30,143,118,141,35,102,144,145,146,150,142,147,30,143,118,141,35,102,144,145,146,0,164,164,164,0,0,0,200,0,199,196,197,198,0,0,0,198,198,198,197,197,197,0,0,196,197,198,196,197,198,200,0,0,166,167,192,167,167,167,167,167,167,166,167,179,192,196,197,198,199,200,166,167,179,192,196,197,198,199,200,167,167,167,167,167,212,179,167,166,179,166,179,0,167,166,166,179,192,167,167,167,166,166,192,0,0,167,166,166,167,179,192,192,196,196,197,197,198,198,199,199,200,200,166,167,179,179,179,192,196,197,198,199,200,167,167,167,167,167,167,179,166,192,212,167,167,167,166,167,179,192,196,197,198,199,200,209,167,192,167,179,167,167,167,167,167,167,167,167,212,167,167,167,167,167,167,167,167,167,167,167,167,167,167,167,166,167,0,167,167,167,167,166,179,166,192,196,197,198,199,200,166,167,166,166,166,167,179,192,196,197,198,199,200,166,167,179,192,196,197,198,199,200,0,167,166,167,179,192,196,197,198,199,200,167,167,166,166,167,179,192,196,197,198,199,200,0,267,267,268,268,269,270,269,270,271,271,227,227,0,228,0,0,0,0,0,227,0,228,0,227,228,226,222,223,224,227,228,226,222,223,224,222,223,224,222,223,224,225,222,223,224,0,222,223,224,226,226,227,227,228,226,222,223,224,227,228,226,222,223,224,227,228,226,222,223,224,226,224,226,226,222,223,224,227,227,228,226,222,223,224,227,228,226,222,223,224,227,228,226,222,223,224,227,228,226,222,223,224,272,272,273,274,274,273,274,0,205,205,229,0,205,205,187,205,205,187,205,205,0,205,205,205,205,205,229,205,205,205,205,205,205,187,187,205,187,229,205,205,229,205,187,229,205,187,229,229,229,229,205,205,187,187,229,205,205,205,205,205,205,187,229,205,187,229,229,205,187,229,205,187,229,205,187,229,205,187,229,205,187,275,276,275,276,277,277,278,279,0,0,280,231,231,231,231,231,231,231,231,231,231,231,231,280,231,231,231,231,231,231,231,236,232,236,195,232,236,195,0,195,195,195,233,195,195,195,195,195,195,195,236,232,233,195,0,0,0,0,0,0,0,0,233,0,0,195,70,194,194,70,194,232,195,233,234,168,70,194,236,232,195,233,234,168,70,194,236,70,232,233,234,168,70,194,236,232,233,234,168,70,194,236,232,168,168,70,194,236,234,237,234,234,234,232,233,168,236,70,232,195,195,233,234,168,70,194,236,232,232,232,195,195,233,234,168,70,194,236,232,237,234,234,234,70,232,195,233,234,168,70,194,236,234,70,232,168,70,194,194,242,234,234,234,169,234,194,70,194,232,233,234,168,70,194,236,195,194,194,232,195,233,234,168,70,194,236,232,195,233,234,168,70,194,236,232,195,233,234,168,70,194,236,232,195,233,234,168,70,194,236,281,0,0,0,249,0,248,248,0,0,245,245,247,245,248,249,0,0,0,246,249,186,186,186,186,186,186,186,186,186,186,188,185,186,246,245,247,249,248,188,185,186,246,245,247,249,248,186,188,185,186,249,248,188,185,186,249,248,249,248,186,186,188,185,249,248,186,186,186,186,186,249,248,186,186,186,188,185,186,246,246,245,245,247,247,249,248,188,185,186,246,245,247,249,248,249,248,186,188,185,186,246,245,247,249,248,186,186,186,186,186,249,248,186,186,186,249,188,185,186,249,248,246,245,247,188,185,186,246,245,247,249,248,188,185,186,246,245,247,249,248,188,185,186,246,245,247,249,248,186,186,188,185,186,246,245,247,249,248,282,282],"f":"````````````{{{d{b}}}f}{{{d{b}}}{{d{{h{f}}}}}}`{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000`{{{d{b}}}b}{{{d{l}}}l}{{{d{n}}}n}{{{d{A`}}}A`}{{{d{c}}{d{je}}}Ab{}{}}000{{{d{b}}{d{b}}}Ad}````{c{{Af{b}}}Ah}{c{{Af{l}}}Ah}{{{d{b}}{d{b}}}Aj}{{{d{l}}{d{l}}}Aj}{{{d{n}}{d{n}}}Aj}{{{d{A`}}{d{A`}}}Aj}{{{d{b}}{d{jAl}}}An}{{{d{l}}{d{jAl}}}An}{{{d{n}}{d{jAl}}}An}{{{d{A`}}{d{jAl}}}An}`{cc{}}000{{{d{b}}{d{jc}}}AbB`}{{{d{l}}{d{jc}}}AbB`}{ce{}{}}000````{{{d{A`}}}Bb}`{{{d{b}}{d{b}}}{{Bd{Ad}}}}``{{{d{A`}}}{{Bd{Bf}}}}{{{d{b}}c}AfBh}{{{d{l}}c}AfBh}``{{{d{c}}}e{}{}}000{c{{Af{e}}}{}{}}0000000{{{d{A`}}}{{d{Bj}}}}`{{{d{c}}}Bl{}}000`{{}{{d{Bn}}}}::::````````````````````````````````````````{{{d{{C`{c}}}}Cb}{{Af{CdCf}}}{ChCj}}{{}Cl}0{{{d{{Cn{ce}}}}}{{d{{D`{ce}}}}}ChDb}{{{d{{d{{Cn{ce}}}}}}}{{Dd{{d{{Cn{ce}}}}}}}ChDb}{{{d{{C`{Df}}}}Dh}{{Af{{C`{Dj}}Dl}}}}{{{d{c}}}{{d{e}}}{}{}}000{{{d{jc}}}{{d{je}}}{}{}}000{{{d{{Cn{ce}}}}}{{Dn{{d{{Cn{ce}}}}}}}ChDb}{{{d{{Cn{ce}}}}{d{g}}}{{Eb{{E`{c}}}}}{CjCh}Db{{Ed{c}}}}0`{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbEh}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{Cn{cFl}}}}}{{Af{AbEh}}}Ch}{{{d{{Cn{cFn}}}}}{{Af{AbEh}}}Ch}2022102102{{{d{c}}}{{Af{AbEh}}}Ch}00{{{d{{D`{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbEh}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{D`{cFl}}}}}{{Af{AbEh}}}Ch}{{{d{{D`{cFn}}}}}{{Af{AbEh}}}Ch}{{{d{{h{{Dn{f}}}}}}}{{Af{AbEh}}}}00`{{{d{{C`{c}}}}}{{C`{c}}}{G`Ch}}{{{d{Fl}}}Fl}{{{d{Fn}}}Fn}{{{d{{Cn{ce}}}}}{{Cn{ce}}}{G`Ch}{G`Db}}{{{d{c}}{d{je}}}Ab{}{}}000{{{d{{C`{c}}}}{d{{C`{c}}}}}Ad{GbCh}}{{{d{Fl}}{d{Fl}}}Ad}{{{d{Fn}}{d{Fn}}}Ad}{{{d{{Cn{ce}}}}{d{{Cn{ce}}}}}AdChDb}{{{d{{Cn{ce}}}}}AjChDb}{{{d{{C`{Df}}}}Dh}{{Af{{C`{Dj}}Dl}}}}{{{d{{C`{Dj}}}}{d{{Gd{c}}}}}{{Af{{C`{Gf}}Dl}}}Gh}{{{d{{C`{Df}}}}{d{{Gd{c}}}}Dh}{{Af{{C`{Gf}}Dl}}}Gh}{{{d{{C`{c}}}}}GjCh}{{{d{{C`{Df}}}}}Gl}{c{{Af{{C`{e}}}}}Ah{ChGn}}{c{{Af{{Cn{eg}}}}}Ah{ChGn}Db}{{{d{{C`{Df}}}}}H`}{{{d{{Cn{ce}}}}}Hb{CjCh}Db}{{{d{{C`{c}}}}{d{{C`{c}}}}}Aj{HdCh}}{{{d{Fl}}{d{Fl}}}Aj}{{{d{Fn}}{d{Fn}}}Aj}{{{d{{Cn{ce}}}}{d{{Cn{ce}}}}}AjChDb}`{{{d{{C`{c}}}}}{{Af{HbCf}}}{ChCj}}`{{{d{{Cn{ce}}}}{d{Hf}}}{{Af{AbHh}}}ChDb}{{{d{Hj}}{d{Hl}}Hn{d{{Gd{I`}}}}}{{Af{{Bd{Ib}}Id}}}}{{{d{{C`{Df}}}}{d{Hl}}Hn{d{{Gd{I`}}}}}{{Af{{Bd{Ib}}Id}}}}{{{d{{Cn{Dfc}}}}{d{Hl}}Hn{d{{Gd{I`}}}}}{{Af{{Bd{Ib}}Id}}}Db}{{{d{{C`{Df}}}}{d{{Gd{c}}}}{d{If}}{Ih{Dh}}}{{Af{{Bd{{Ij{Dh{C`{Gf}}}}}}Dl}}}Gh}{{{d{{C`{c}}}}{d{jAl}}}{{Af{AbIl}}}Ch}0{{{d{Fl}}{d{jAl}}}{{Af{AbIl}}}}{{{d{Fn}}{d{jAl}}}{{Af{AbIl}}}}{{{d{{Cn{ce}}}}{d{jAl}}}{{Af{AbIl}}}ChDb}0{{{d{{C`{c}}}}e}AjCh{{J`{{d{c}}}{{In{Aj}}}}}}{{{d{{Cn{ce}}}}g}AjChDb{{J`{{d{c}}}{{In{Aj}}}}}}{{{Jb{c}}}{{C`{c}}}Ch}{{{Jd{c}}}{{C`{c}}}Ch}{{{Jf{c}}}{{C`{c}}}Ch}{{{Jh{c}}}{{C`{c}}}Ch}{{{Jj{c}}}{{C`{c}}}Ch}{cc{}}{{{Jl{c}}}{{C`{c}}}Ch}111{{{D`{ce}}}{{Af{{Cn{ce}}Cf}}}ChDb}{{{D`{ce}}JnK`}{{Cn{ce}}}ChDb}{{{d{Bn}}}{{Af{{C`{c}}Cf}}}{ChGn}}{{{d{Bn}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}{{{d{Bn}}{d{Hf}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}1{{{d{Kb}}}{{Af{{C`{c}}Cf}}}{ChGn}}{{{d{Kb}}}{{Af{{Cn{ce}}Cf}}}{ChGn}Db}{{{d{{Cn{ce}}}}Kd}{{Bd{{d{{Cn{ce}}}}}}}ChDb}{{{d{{Cn{ce}}}}Kd}{{Bd{c}}}ChDb}{{{d{{C`{c}}}}e}{{Af{{Ij{{Dn{{Dn{f}}}}Hb}}Cf}}}{ChCj}{{Kf{c}}}}0{{{d{{Cn{ce}}}}}AjChDb}0{{{d{{C`{Df}}}}}Aj}{{{d{{C`{c}}}}{d{je}}}Ab{KhCh}B`}{{{d{Fl}}{d{jc}}}AbB`}{{{d{Fn}}{d{jc}}}AbB`}{{{d{{Cn{ce}}}}{d{jg}}}AbChDbB`}{ce{}{}}000{{{Cn{ce}}}{{D`{ce}}}ChDb}{{{C`{Df}}}{{Af{{Dn{{C`{Df}}}}Cf}}}}{{Kj{d{{Gd{I`}}}}Cb}{{Af{{Ij{KlKn}}Id}}}}{{Kl{d{{Gd{I`}}}}Cb}{{Af{{Ij{KlKn}}Id}}}}99:{{{d{{Cn{ce}}}}}{{L`{ce}}}ChDb}{{{d{{Cn{ce}}}}}{{Lb{ce}}}ChDb}{{{d{{C`{c}}}}}{{Af{{Ld{c}}Cf}}}Ch}{{{d{{Cn{ce}}}}}{{Af{{Ld{c}}Cf}}}ChDb}{{{d{{Cn{ce}}}}}{{Af{AbLf}}}ChDb}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Bd{Kd}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{Cn{cFl}}}}}{{Bd{Kd}}}Ch}{{{d{{Cn{cFn}}}}}{{Bd{Kd}}}Ch}{{{d{{Cn{ce}}}}}{{Af{KdCf}}}ChDb}{{{d{{C`{c}}}}}{{Af{KdCf}}}Ch}10{{}{{d{Bn}}}}00{{{Cn{cLh}}}{{Af{{C`{c}}Cf}}}Ch}{c{{C`{c}}}Ch}{c{{Af{{C`{c}}Cf}}}Ch}{{{Cn{cFl}}}{{Af{{C`{c}}Cf}}}Ch}{{Kd{Dn{c}}}{{Af{{C`{c}}Cf}}}Ch}{{{Jj{c}}}{{C`{c}}}Ch}{{{Jf{c}}}{{C`{c}}}Ch}4{{{Cn{cFn}}}{{Af{{C`{c}}Cf}}}Ch}3{{c{Bd{{Lj{c}}}}}{{Af{{C`{c}}Cf}}}Ch}614`{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbCf}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{If}}}{{Af{{Cn{c}}Cf}}}Db}{{{d{{Gd{c}}}}{d{Bn}}}{{Af{{Ij{{C`{Df}}{Ln{DfLl}}}}Cf}}}M`}1{{{d{If}}{d{Hf}}}{{Af{{Cn{c}}Cf}}}Db}{{{d{{C`{c}}}}{d{{C`{c}}}}}{{Bd{Ad}}}{MbCh}}{{{d{Fl}}{d{Fl}}}{{Bd{Ad}}}}{{{d{Fn}}{d{Fn}}}{{Bd{Ad}}}}{{{d{{Cn{ce}}}}{d{{Cn{ce}}}}}{{Bd{Ad}}}ChDb}{{{d{c}}}KdCh}00{{{C`{Dj}}{d{c}}}{{Af{Md{C`{Dj}}}}}{{Ed{Dj}}}}0`{{{d{{Cn{ce}}}}}AjChDb}{{{d{{C`{c}}}}}{{Af{AbCf}}}Ch}{{{d{{Cn{ce}}}}}{{Af{AbHh}}}ChDb}{{{d{{C`{c}}}}{d{jMf}}e}{{Af{AbCf}}}{ChCj}{{Kf{c}}}}{{{d{{Cn{ce}}}}g}{{Af{{Dn{{Dn{f}}}}Cf}}}{CjCh}Db{{Kf{c}}}}0{{{d{{C`{c}}}}}{{Af{HbCf}}}{ChCj}}{{{d{{C`{c}}}}}Hb{ChCj}}{{{d{{Cn{ce}}}}}KdChDb}{{{d{{C`{c}}}}e}AfChBh}{{{d{{Cn{ce}}}}g}AfChDbBh}{{}Mh}00{{{d{{Cn{ce}}}}{d{{Ln{Fhc}}}}}{{Cn{ce}}}ChDb}`{{{d{c}}}e{}{}}000{{{d{c}}}Mj{}}0{{{d{{C`{Df}}}}{d{{Ln{DfLl}}}}}Mj}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbCf}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}0{{{d{{C`{c}}}}{d{ji}}}{{Af{{Ml{g}}}}}ChCh{}{{Mn{ceg}}}}{{{d{{Cn{ce}}}}{d{jk}}}{{Af{{Ml{i}}}}}ChDbCh{}{{Mn{cgi}}}}{c{{Af{e}}}{}{}}0000000`{{{d{c}}}Bl{}}000={ce{}{}}000{{{d{{Cn{ce}}}}}AjChDb}{{{d{Bn}}}{{Af{MjId}}}}{{{d{Bn}}}{{Af{{N`{f}}Id}}}}`````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{Id}}{d{jAl}}}An}0{cc{}}{NbId}{NdId}{NfId}{NhId}{NjId}{CfId}{NlId}>{{{d{c}}}Mj{}}{c{{Af{e}}}{}{}}0{{{d{c}}}Bl{}}{ce{}{}}```````````````````````````````````>>>>>>>======={{{d{Nn}}}Nn}{{{d{O`}}}O`}{{{d{Ob}}}Ob}{{{d{Ib}}}Ib}{{{d{Od}}}Od}{{{d{Hn}}}Hn}{{{d{c}}{d{je}}}Ab{}{}}00000``{{}Od}{{{d{Nn}}{d{Nn}}}Aj}{{{d{O`}}{d{O`}}}Aj}{{{d{Ob}}{d{Ob}}}Aj}{{{d{Ib}}{d{Ib}}}Aj}{{{d{Od}}{d{Od}}}Aj}{{{d{Nd}}{d{Nd}}}Aj}{{{d{Nn}}{d{jAl}}}An}{{{d{O`}}{d{jAl}}}An}{{{d{Ob}}{d{jAl}}}An}{{{d{Ib}}{d{jAl}}}An}{{{d{Od}}{d{jAl}}}An}{{{d{Nd}}{d{jAl}}}An}0{{{d{Hn}}{d{jAl}}}An}{cc{}}0{AjOb}11{O`Ib}222{{{d{Ib}}{d{{Ln{Mj{Dn{Kd}}}}}}}{{Af{OdNd}}}}{{{d{Nn}}{d{jc}}}AbB`}{{{d{Od}}{d{jc}}}AbB`}{{{d{O`}}}Mj}`{ce{}{}}000000{{{d{O`}}}Aj}{{{d{Ob}}}Aj}{{{d{Od}}}Aj}`{{{d{Od}}{d{Od}}}{{Bd{Ad}}}}{{{d{Ib}}}Aj}`{{{d{Nn}}c}AfBh}{{{d{O`}}c}AfBh}{{{d{Ob}}c}AfBh}{{{d{Ib}}c}AfBh}{{{d{Od}}c}AfBh}`{{{d{c}}}e{}{}}00000{{{d{c}}}Mj{}}{c{{Af{e}}}{}{}}0000000000000{{{d{c}}}Bl{}}000000>>>>>>>``````````````````````````````````````{{{d{c}}}{{d{e}}}{}{}}00000000000{{{d{jc}}}{{d{je}}}{}{}}00000000000{{OfCb}{{Af{OhId}}}}{{{Oj{c}}Cb}{{Af{OhId}}}{{Ol{Fl}}}}{{{On{c}}Cb}{{Af{OhId}}}{{Ol{Fn}}}}{{{A@`{c}}Cb}{{Af{OhId}}}{{Ol{Fn}}}}{{{A@b{c}}Cb}{{Af{OhId}}}{{Ol{A@d}}}}{{{A@f{c}}Cb}{{Af{OhId}}}{{A@h{Fl}}}}{{{A@j{c}}Cb}{{Af{OhId}}}{{A@h{Fl}}}}{{{A@l{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{A@n{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AA`{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AAb{c}}Cb}{{Af{OhId}}}{{A@h{Fn}}}}{{{AAd{c}}Cb}{{Af{OhId}}}{{A@h{A@d}}}}{{{AAf{c}}Cb}{{Af{OhId}}}{{A@h{A@d}}}}{cc{}}00000000000{ce{}{}}00000000000{{Oh{d{{Gd{I`}}}}Cb}{{Af{{Ij{KlKn}}Id}}}}{{c{d{{Gd{I`}}}}Cb}{{Af{{Ij{{C`{Df}}{Ln{DfLl}}}}Id}}}{}}00000000000{c{{Af{e}}}{}{}}00000000000000000000000{{{d{c}}}Bl{}}00000000000444444444444```````````````````````````````````````````{{}AAh}{{}Cl}{{DfDh}{{Af{DjDl}}}}{{{d{c}}}{{d{e}}}{}{}}00000000000{{{d{jc}}}{{d{je}}}{}{}}00000000000{{{d{{AAj{ce}}}}{d{g}}}{{Eb{{E`{c}}}}}{CjCh}Db{{Ed{c}}}}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbEh}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}00000{{{d{c}}}{{Af{AbEh}}}Ch}{{{d{{D`{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbEh}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{h{{Dn{f}}}}}}}{{Af{AbEh}}}}{{{d{{AAl{ce}}}}}{{AAl{ce}}}G`Db}{{{d{Cl}}}Cl}{{{d{AAn}}}AAn}{{{d{{AAj{ce}}}}}{{AAj{ce}}}{G`Ch}{G`Db}}{{{d{Df}}}Df}{{{d{Ll}}}Ll}{{{d{AB`}}}AB`}{{{d{ABb}}}ABb}{{{d{ABd}}}ABd}{{{d{c}}{d{je}}}Ab{}{}}00000000{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}Ad{GbCh}{GbDb}}{{{d{Df}}{d{Df}}}Ad}{{{d{AB`}}{d{AB`}}}Ad}{{{d{ABd}}{d{ABd}}}Ad}`{{}AAn}{{{d{{AAl{ce}}}}}{{d{g}}}{}Db{}}{{DfDh}{{Af{DjDl}}}}{c{{Af{Df}}}Ah}{{{d{{AAj{ce}}}}}Hb{CjCh}Db}{{{d{Cl}}{d{Cl}}}Aj}{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}Aj{HdCh}{HdDb}}{{{d{Df}}{d{Df}}}Aj}{{{d{Ll}}{d{Ll}}}Aj}{{{d{AB`}}{d{AB`}}}Aj}{{{d{ABb}}{d{ABb}}}Aj}{{{d{ABd}}{d{ABd}}}Aj}{{{d{{ABf{c}}}}{d{jAl}}}An{ABhDb}}{{{d{Cl}}{d{jAl}}}An}{{{d{AAn}}{d{jAl}}}An}{{{d{Nl}}{d{jAl}}}An}0{{{d{{AAj{ce}}}}{d{jAl}}}{{Af{AbIl}}}ChDb}0{{{d{Df}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{Ll}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{AB`}}{d{jAl}}}{{Af{AbIl}}}}{{{d{ABb}}{d{jAl}}}{{Af{AbIl}}}}{{{d{ABd}}{d{jAl}}}{{Af{AbIl}}}}{{{d{{AAj{ce}}}}g}AjChDb{{J`{{d{c}}}{{In{Aj}}}}}}{ABj{{ABl{c}}}Db}{ABn{{ABl{c}}}Db}{cc{}}0000{NfNl}{CfNl}222{DjDf}3333{{DfAAh}{{ABf{c}}}Db}{{LlAAh}{{ABf{c}}}Db}{{{d{Bn}}}{{Af{Df}}}}{{{d{Bn}}}{{Af{Ll}}}}{{{d{Kb}}}{{Af{{AAj{ce}}Cf}}}{GnCh}Db}{{{d{Df}}}{{Bd{AC`}}}}{{{d{Df}}}{{Dn{AC`}}}}{c{{Af{{AAl{{ACh{}{{ACb{e}}{ACd{c}}{ACf{g}}}}i}}g}}}{}{{ACj{{h{f}}}}ACl}ABhDb}{{}{{Af{{AAl{ACnc}}e}}}Db{}}{{ce}{{Af{{AAl{{ACh{}{{ACb{e}}{ACd{c}}{ACf{g}}}}i}}g}}}{}{{ACj{{h{f}}}}ACl}ABhDb}{c{{Af{{AAl{ACne}}g}}}{}Db{}}{{{d{{ABl{c}}}}}AjDb}{{{d{Df}}}Aj}{{{d{{AAj{ce}}}}{d{jg}}}Ab{KhCh}{KhDb}B`}{{{d{Df}}{d{jc}}}AbB`}{{{d{AB`}}{d{jc}}}AbB`}{{{d{ABd}}{d{jc}}}AbB`}{ce{}{}}00000000000{DfAD`}{Ol{{Af{{ABf{c}}Nl}}}Db}{{A@h{Bd{ADb}}AC`}{{Af{{ABf{c}}Nl}}}Db}{{{AAl{ec}}{Bd{ADb}}AC`}{{Af{{ABf{c}}Nl}}}Db{{A@h{c}}}}{{{AAl{ec}}}{{Af{{ABf{c}}Nl}}}Db{{Ol{c}}}}{{{ABf{c}}}{{Af{{ABf{c}}Nl}}}Db}{Df{{Af{{ABf{c}}Nl}}}Db}{Ll{{Af{{ABf{c}}Nl}}}Db}{A@h{{Af{{ABl{c}}Nl}}}Db}{{{ABl{c}}}{{Af{{ABl{c}}Nl}}}Db}{{{AAl{ec}}}{{Af{{ABl{c}}Nl}}}Db{{A@h{c}}}}{{{AAl{ce}}}c{}Db}{Df{{Dn{Df}}}}{Ll{{Dn{Ll}}}}{{{ABl{c}}Cb}{{Bd{ABj}}}Db}{{{ABl{c}}Cb{d{{Gd{e}}}}}ABnDbM`}{{{d{Df}}}Aj}{{}Aj}{{{d{Cl}}}Aj}2{{{d{Ll}}}Aj}212133```{{{d{{AAj{ce}}}}}{{Af{{Ld{c}}Cf}}}ChDb}{{}AAh}{{{d{Df}}}ADd}{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Bd{Kd}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{d{{AAj{ce}}}}}KdChDb}0{{{d{AAh}}{d{AAh}}}AAh}{{}{{d{Bn}}}}{{Kd{Dn{c}}}{{Af{{AAj{ce}}Cf}}}ChDb}{{{d{Df}}}Kd}``{{{d{{Cn{c{Db{}{{Ef{e}}}}}}}}}{{Af{AbCf}}}Ch{{Fj{}{{Ej{El}}{En{F`}}{Fb{Fd}}{Ff{Fh}}}}ChChChCh}}{{{ABf{c}}AAh}{{ABf{c}}}Db}{{{d{{AAj{ce}}}}{d{{AAj{ce}}}}}{{Bd{Ad}}}{MbCh}{MbDb}}{{{d{Df}}{d{Df}}}{{Bd{Ad}}}}{{{d{AB`}}{d{AB`}}}{{Bd{Ad}}}}{{{d{ABd}}{d{ABd}}}{{Bd{Ad}}}}{{{d{c}}}KdCh}`{{{d{{AAj{ce}}}}}{{Af{AbCf}}}ChDb}{{{d{{AAj{ce}}}}g}{{Af{{Dn{{Dn{f}}}}Cf}}}{CjCh}Db{{Kf{c}}}}={{{d{Df}}c}AfBh}{{}Mh}{{{d{{AAj{ce}}}}}{{D`{ce}}}{CjCh}Db}{{}AAh}{{{d{c}}}e{}{}}00000000{{{d{Ll}}{d{{Gd{c}}}}}{{Af{DfADf}}}M`}{{{d{c}}}Mj{}}000??{{{d{{AAj{ce}}}}{d{jk}}}{{Af{{AAj{ge}}{Ml{i}}}}}ChDbCh{}{{Mn{cgi}}}}{c{{Af{e}}}{}{}}00000000000000000000000{{{d{c}}}Bl{}}00000000000{ce{}{}}00000000000`{{{d{ADh}}}{{Bd{H`}}}}{{{d{ADh}}}{{Bd{ADj}}}}{{{d{ADh}}Kd}{{Bd{Bj}}}}`````````````````````````````{{ADlADl}ADl}{{{d{jADn}}bAE`{AEd{AEb}}}Ab}`{{{d{ADn}}}{{Ln{b{`{{AEh{}{{AEf{{Ij{DhHb}}}}}}G`}}}}}}{{{d{jADn}}{d{AEj}}Dh}{{Af{AbAEl}}}}{{{d{jADn}}{d{AEj}}DhAEn}{{Af{AbAF`}}}}{{{d{jADn}}c}Ab{{AFd{}{{AEf{{Ij{{d{AFb}}H`}}}}}}}}{{{d{jADn}}c}{{Af{AbAEl}}}{{AFh{AFf}}}}{{{d{ADn}}}{{d{{AFl{AFj}}}}}}{{{d{c}}}{{d{e}}}{}{}}00000000{{{d{jc}}}{{d{je}}}{}{}}00000000{{{d{jADn}}AFn}{{Af{{AGd{AG`AGb}}AGf}}}}{{{d{jADn}}}{{AGd{AG`AGh}}}}{{{d{ADn}}{d{AFb}}}{{Af{H`AGj}}}}{{{d{ADn}}{d{AFb}}}{{Af{ADjAGj}}}}{{{d{jADn}}{d{AFb}}}Ab}``{{{d{ADn}}}AGl}{{{d{ADl}}}ADl}{{{d{AFf}}}AFf}{{{d{c}}{d{je}}}Ab{}{}}0`{{{d{jADn}}}{{AGn{Aj}}}}`{{}ADl}{{}AFf}{{{d{AH`}}}{{d{c}}}{}}{{{d{ADn}}b}{{Bd{Dh}}}}{{{d{ADn}}{d{If}}}{{Bd{{Ij{bDh}}}}}}{{{d{ADn}}b}Mj}{c{{Af{ADl}}}Ah}{{{d{ADl}}{d{ADl}}}Aj}{{{d{AH`}}{d{AH`}}}Aj}``{{{d{ADn}}{d{jAHb}}AHd}{{Af{AjAHf}}}}{{{d{ADl}}{d{jAl}}}{{Af{AbIl}}}}0{{{d{ADn}}{d{jAl}}}An}{{{d{AFf}}{d{jAl}}}An}{{{d{AH`}}{d{jAl}}}An}0{{{d{AHh}}{d{jAl}}}An}0{{{d{AHj}}{d{jAl}}}An}0{{{d{AHl}}{d{jAl}}}An}0{{{d{AHn}}{d{jAl}}}An}0{{{d{AI`}}{d{jAl}}}An}0{cc{}}00{{{AIb{b}}}AFf}{AIdAFf}222222{{{d{ADn}}}ADl}{{{d{ADn}}b}{{d{Kl}}}}{{{d{ADn}}l{Bd{AIf}}Aj}{{Af{AIhAIj}}}}{{{d{ADn}}b}{{AEd{Hl}}}}{{{d{ADn}}AFn}{{Bd{{AIl{{AEd{AFb}}AFj}}}}}}{{{d{ADn}}Bb}{{Bd{l}}}}````{{{d{jADn}}AEn}{{Af{AjAIn}}}}{{{d{jADn}}AFbAJ`}{{Af{AjAHn}}}}{{{d{jADn}}BbBj}Ab}{ce{}{}}00000000{{{d{AJb}}{d{If}}}Aj}{{{d{ADn}}{d{If}}}Aj}`{{{d{ADn}}}{{`{{AEh{}{{AEf{{Ij{{d{b}}{d{Kl}}}}}}}}}}}}`{{{d{ADn}}}AJd}{{{d{ADn}}}{{`{{AEh{}{{AEf{l}}}}}}}}0{{{d{ADn}}b}{{`{{AJf{}{{AEf{AH`}}}}}}}}{c{{Af{ADnAHj}}}{{AJj{AJh}}AJlAJn}}{{{d{ADn}}}{{d{AK`}}}}{{{d{jADn}}bDh}Aj}{{{d{ADn}}}Cb}`{{c{Bd{c}}eCb}{{Af{ADnAHh}}}Kj{{AJj{AJh}}AJlAJn}}{{c{Bd{c}}Cb}{{Af{ADnId}}}Kj}{{c{Bd{c}}CbAKb}{{Af{ADnId}}}Kj}{{c{Bd{c}}eCb}{{Af{ADnAHl}}}Kj{{AJj{AJh}}AJlAJn}}{{c{Bd{c}}eCbAKb}{{Af{ADnAHl}}}Kj{{AJj{AJh}}AJlAJn}}{{c{Bd{c}}eCbAKb}{{Af{ADnAHh}}}Kj{{AJj{AJh}}AJlAJn}}{{{d{ADn}}b}Dh}{{{d{jADn}}b}{{AGn{AH`}}}}{{{d{ADn}}bDh}AH`}{{{d{ADn}}b}{{Af{{Bd{Ib}}Id}}}}{{{d{ADn}}b}{{Bd{{d{Kl}}}}}}{{{d{jADn}}bDh}{{AGn{{`{{AEh{}{{AEf{AH`}}}}}}}}}}4{{{d{ADn}}}{{d{{Gd{I`}}}}}}{{{d{ADn}}{d{AFb}}}{{Ij{AKdAKd}}}}{{{d{ADl}}c}AfBh}{{{d{ADn}}{d{jAHb}}AHd}{{Af{AjAHf}}}}`{{{d{ADn}}}{{d{{AKf{b}}}}}}{{{d{ADn}}}{{d{AJh}}}}{{{d{ADn}}}{{AKh{b}}}}{{{d{ADn}}}AKj}{{{d{c}}}e{}{}}0{{{d{c}}}Mj{}}000000{{{d{ADl}}}AKd}{{{d{ADn}}}{{`{{AEh{}{{AEf{{AIl{{AEd{AFb}}AFj}}}}}}}}}}`1{c{{Af{e}}}{}{}}00000000000000000`{{{d{ADn}}}{{d{{AFl{AFj}}}}}}{{{d{c}}}Bl{}}00000000{{{d{ADn}}b}{{`{{AEh{}{{AEf{{Ij{DhHb}}}}}}G`}}}}{{{d{jADn}}bDh}Aj}`{ce{}{}}00000000{{c{Bd{c}}Cb{d{{Gd{I`}}}}}{{Af{MjId}}}Kj}```````````````````````{{{d{c}}}{{d{e}}}{}{}}00000{{{d{jc}}}{{d{je}}}{}{}}00000{{{d{AKl}}}AKl}{{{d{AKn}}}AKn}{{{d{AL`}}}AL`}{{{d{c}}{d{je}}}Ab{}{}}00{{{d{ALb}}{Dn{n}}{Dn{n}}ADjH`{d{If}}}{{Af{ALdALf}}}}{{{d{AKl}}{Dn{n}}{Dn{n}}ADjH`{d{If}}}{{Af{ALdALf}}}}{{{d{AKn}}{Dn{n}}{Dn{n}}ADjH`{d{If}}}{{Af{ALdALf}}}}{{{d{AL`}}{Dn{n}}{Dn{n}}ADjH`{d{If}}}{{Af{ALdALf}}}}{{H`ADj{d{If}}}ALh}{{}AKl}{{}AKn}{{}AL`}``{{{d{ALf}}{d{jAl}}}An}0{{{d{ALh}}{d{jAl}}}An}{{{d{ALd}}{d{jAl}}}An}{{{d{AKl}}{d{jAl}}}An}{{{d{AKn}}{d{jAl}}}An}{{{d{AL`}}{d{jAl}}}An}{cc{}}00000{ce{}{}}00000{{{d{ALd}}}H`}{H`AL`}`1{{{d{c}}}e{}{}}00{{{d{c}}}Mj{}}{c{{Af{e}}}{}{}}00000000000{{{d{c}}}Bl{}}00000666666````````````````````````````````````````{{{d{c}}}{{d{e}}}{}{}}00{{{d{jc}}}{{d{je}}}{}{}}00{{{d{ALj}}}ALj}{{{d{c}}{d{je}}}Ab{}{}}{{{d{ALj}}{d{jAl}}}An}0{{{d{AIj}}{d{jAl}}}An}0{{{d{AGf}}{d{jAl}}}An}0>{ALlAIj}{ALjAIj}{cc{}}{NdAIj}{ALfAIj}{IdAIj}3{ce{}{}}00{{{d{c}}}e{}{}}{{{d{c}}}Mj{}}00{c{{Af{e}}}{}{}}00000{{{d{c}}}Bl{}}00444````````````{{{d{c}}}{{d{e}}}{}{}}{{{d{jc}}}{{d{je}}}{}{}}{{{d{ALn}}}{{Bd{Mj}}}}{{{d{ALn}}}Mj}{c{{Af{ALn}}}Ah}{{{d{ADn}}{d{Bn}}Aj}{{Af{ALn{d{Bn}}}}}}{{{d{ALn}}{d{jAl}}}An}0?{{{d{Bn}}}{{Af{ALnc}}}{}}<``{{{d{ALn}}c}AfBh};::9=```````````````````````````````````{{{d{jHl}}AM`AE`{AEd{AEb}}}{{Bd{{AEd{AEb}}}}}}``{{{d{Hl}}{d{{Gd{I`}}}}}Kn}`::::::::99999999{{Kn{d{{C`{Df}}}}{d{{Gd{I`}}}}}Hl}{{{d{AM`}}}AM`}{{{d{AMb}}}AMb}{{{d{{AMd{c}}}}}{{AMd{c}}}{G`AMfABhG`}}{{{d{AE`}}}AE`}{{{d{Hl}}}Hl}{{{d{AHd}}}AHd}{{{d{AMh}}}AMh}{{{d{c}}{d{je}}}Ab{}{}}000000{{{d{AM`}}{d{AM`}}}Ad}{{{d{AE`}}{d{AE`}}}Ad}{{}AE`}{{}Hl}{{}AHd}{{}AMh}{{{d{{AMd{c}}}}}{{d{e}}}{AMfABhG`}{}}{{{d{AMj}}}{{Bd{Ll}}}}{{{d{{AMd{AMl}}}}}{{Bd{Ll}}}}{{{d{{AMd{{AMn{ABj}}}}}}}{{Bd{Ll}}}}{{{d{{AMd{{AN`{ABj}}}}}}}{{Bd{Ll}}}}{{{d{AM`}}{d{AM`}}}Aj}{{{d{AMb}}{d{AMb}}}Aj}{{{d{AE`}}{d{AE`}}}Aj}{{{d{AMh}}{d{AMh}}}Aj}{{{d{Hl}}AM`}{{Bd{{d{{AEd{AEb}}}}}}}}{{{d{AM`}}{d{jAl}}}An}{{{d{AHf}}{d{jAl}}}An}0{{{d{AMb}}{d{jAl}}}An}{{{d{{AMd{c}}}}{d{jAl}}}An{ABhAMfABhG`}}{{{d{AE`}}{d{jAl}}}An}{{{d{Hl}}{d{jAl}}}An}{{{d{AHd}}{d{jAl}}}An}{{{d{AMh}}{d{jAl}}}An}{cc{}}{FhAM`}{ADdAM`}{ANbAHf}3333333{{{d{AM`}}{d{jc}}}AbB`}{{{d{AMj}}{d{{Gd{I`}}}}}AM`}{{{d{{AMd{{AMn{ABj}}}}}}{d{{Gd{I`}}}}}AM`}{{{d{{AMd{AMl}}}}{d{{Gd{I`}}}}}AM`}{{{d{{AMd{{AN`{ABj}}}}}}{d{{Gd{I`}}}}}AM`}{{{d{Hl}}}{{Dn{{d{AM`}}}}}}{ce{}{}}0000000{{cAMb}{{AMd{c}}}{AMfABhG`}}{{}Hl}{{{d{AM`}}{d{AM`}}}{{Bd{Ad}}}}{{{d{AE`}}{d{AE`}}}{{Bd{Ad}}}}{{{d{jHl}}AM`AE`}{{Bd{{AEd{AEb}}}}}}``{{{d{ANd}}{d{jAHb}}Kd{d{AHd}}{d{{Gd{I`}}}}}{{Af{AbAHf}}}}{{{d{{AMd{{AMn{ABj}}}}}}{d{jAHb}}Kd{d{AHd}}{d{{Gd{I`}}}}}{{Af{AbAHf}}}}{{{d{{AMd{{AN`{ABj}}}}}}{d{jAHb}}Kd{d{AHd}}{d{{Gd{I`}}}}}{{Af{AbAHf}}}}{{{d{{AMd{AMl}}}}{d{jAHb}}Kd{d{AHd}}{d{{Gd{I`}}}}}{{Af{AbAHf}}}}{{{d{AEb}}{d{jAHb}}{d{AHd}}{d{{Gd{I`}}}}}{{Af{AbAHf}}}}{{{d{c}}{d{jAHb}}{d{AHd}}{d{{Gd{I`}}}}}{{Af{AbAHf}}}{}}`{{{d{Hl}}}{{Dn{{d{{AEd{AEb}}}}}}}}`{{{d{c}}}e{}{}}000000{{{d{c}}}Mj{}}``{c{{Af{e}}}{}{}}000000000000000{{{d{c}}}Bl{}}0000000{ce{}{}}0000000`````````````````````{{{d{j{AGd{cAGh}}}}{d{e}}}{{d{j{AGd{cAGh}}}}}ALb{{ANh{ANf}}}}{{{d{j{AGd{ce}}}}BbAIhKd}{{Af{{d{j{AGd{ce}}}}ANj}}}{}{}}{{{d{j{AGd{ce}}}}BbAIhKdBf}{{Af{{d{j{AGd{ce}}}}ANj}}}{}{}}{{{d{j{AGd{ce}}}}}{{d{j{AGd{ce}}}}}{}{}}{{{d{j{AGd{cAGh}}}}HbAKd}{{d{j{AGd{cAGh}}}}}ALb}{{{d{j{AGd{ce}}}}Bb}{{d{j{AGd{ce}}}}}{}{}}{{{d{j{AGd{ce}}}}Bb}{{Af{{d{j{AGd{ce}}}}ANl}}}{}{}}{{{d{j{AGd{ce}}}}{d{{h{Bb}}}}}{{Af{{d{j{AGd{ce}}}}ANl}}}{}{}}{{{d{j{AGd{ce}}}}Aj}{{d{j{AGd{ce}}}}}{}{}}{{{d{j{AGd{AG`AGb}}}}Hb}{{Af{{d{j{AGd{AG`AGb}}}}ANn}}}}{{{d{c}}}{{d{e}}}{}{}}0000000{{{d{jc}}}{{d{je}}}{}{}}0000000{{{d{j{AGd{ce}}}}AO`}{{d{j{AGd{ce}}}}}{}{}}{{{d{AGh}}}AGh}{{{d{AGb}}}AGb}{{{d{{AGd{ce}}}}}{{AGd{ce}}}G`{}}{{{d{AOb}}}AOb}{{{d{AO`}}}AO`}{{{d{c}}{d{je}}}Ab{}{}}0000{{{d{AOb}}{d{AOb}}}Ad}{{{d{AO`}}{d{AO`}}}Ad}{{{AGd{ce}}g}{{AGd{ge}}}{}{}ALb}{{{d{j{AGd{ce}}}}Dh}{{d{j{AGd{ce}}}}}{}{}}{{}AGh}{{}AGb}{{}AOb}{{}AO`}{{{d{j{AGd{ce}}}}}{{d{j{AGd{ce}}}}}{}{}}{{{d{j{AGd{cAGh}}}}Hb}{{d{j{AGd{cAGh}}}}}ALb}11{{{d{j{AGd{ce}}}}Bf}{{d{j{AGd{ce}}}}}{}{}}{{{d{AOb}}{d{AOb}}}Aj}{{{d{AO`}}{d{AO`}}}Aj}{{{d{j{AGd{ce}}}}H`}{{d{j{AGd{ce}}}}}{}{}}{{{d{j{AGd{ce}}}}ADj}{{d{j{AGd{ce}}}}}{}{}}{{{AGd{ce}}}{{Af{AHbAIj}}}ALb{}}{{{d{AGh}}{d{jAl}}}An}{{{d{AGb}}{d{jAl}}}An}{{{d{{AGd{ce}}}}{d{jAl}}}AnABhABh}{{{d{ANl}}{d{jAl}}}An}0{{{d{ANj}}{d{jAl}}}An}0{{{d{ANn}}{d{jAl}}}An}0{{{d{AOb}}{d{jAl}}}An}{{{d{AO`}}{d{jAl}}}An}{cc{}}0000000{{{d{AOb}}{d{jc}}}AbB`}{{{d{AO`}}{d{jc}}}AbB`}{{{d{j{AGd{ce}}}}}{{d{j{AGd{ce}}}}}{}{}}{ce{}{}}00000001{{{d{j{AGd{ce}}}}AOd}{{d{j{AGd{ce}}}}}{}{}}22{{{d{j{AGd{ce}}}}AOb}{{d{j{AGd{ce}}}}}{}{}}{{{d{AOb}}{d{AOb}}}{{Bd{Ad}}}}{{{d{AO`}}{d{AO`}}}{{Bd{Ad}}}}{{{d{j{AGd{ce}}}}{Ln{Mj{Dn{Kd}}}}b}{{d{j{AGd{ce}}}}}{}{}}{{{d{j{AGd{cAGh}}}}{Dn{{Ij{HbAKd}}}}}{{d{j{AGd{cAGh}}}}}ALb}{{{d{j{AGd{ce}}}}AIf}{{d{j{AGd{ce}}}}}{}{}}{{{d{AOb}}{d{jAFb}}}Ab}{{{d{c}}}e{}{}}0000{{{d{c}}}Mj{}}00{c{{Af{e}}}{}{}}000000000000000{{{d{c}}}Bl{}}0000000{{{d{j{AGd{ce}}}}{Dn{Bb}}}{{d{j{AGd{ce}}}}}{}{}}{{{d{j{AGd{ce}}}}AOf}{{d{j{AGd{ce}}}}}{}{}}>>>>>>>>``","D":"FIn","p":[[6,"KeychainKind",0,1769],[1,"reference"],[1,"u8"],[1,"slice"],[0,"mut"],[5,"LocalOutput",0,1769],[5,"WeightedUtxo",0,1769],[6,"Utxo",0,1769],[1,"unit"],[6,"Ordering",1770],[6,"Result",1771],[10,"Deserializer",1772],[1,"bool"],[5,"Formatter",1773],[8,"Result",1773],[10,"Hasher",1774],[5,"OutPoint",1775],[6,"Option",1776],[5,"Sequence",1775],[10,"Serializer",1777],[5,"TxOut",1775],[5,"TypeId",1778],[1,"str"],[6,"Descriptor",100,1779],[6,"Network",1780],[5,"Address",1781],[6,"Error",1782],[10,"MiniscriptKey",1782],[10,"ToPublicKey",1782],[6,"ScriptContextEnum",690],[5,"Miniscript",100,1783],[6,"Terminal",1784],[10,"ScriptContext",690,1785],[6,"Tree",1786],[6,"DescriptorPublicKey",690,1787],[1,"u32"],[5,"DefiniteDescriptorKey",1787],[6,"ConversionError",1787],[5,"Vec",1788],[6,"Placeholder",1789],[5,"Satisfaction",1789],[10,"AssetProvider",1790],[17,"Key"],[6,"ScriptContextError",1785],[17,"Sha256"],[5,"Hash",1791],[17,"Hash256"],[5,"Hash",1792],[17,"Ripemd160"],[5,"Hash",1793],[17,"Hash160"],[5,"Hash",1794],[10,"ParseableKey",1784],[6,"Legacy",100,1785],[6,"Segwitv0",100,1785],[10,"Clone",1795],[10,"Ord",1770],[5,"Secp256k1",1796],[5,"PublicKey",1797],[10,"Verification",1798],[6,"DescriptorType",1779],[5,"DescriptorId",1799],[10,"FromStr",1800],[1,"u64"],[5,"ScriptBuf",1801],[10,"PartialEq",1770],[5,"ExtParams",1802],[6,"AnalysisError",1802],[10,"ExtractPolicy",100],[5,"SignersContainer",1429],[6,"BuildSatisfaction",383],[6,"All",1803],[5,"Policy",383],[6,"Error",352],[5,"Script",1804],[5,"Range",1805],[1,"tuple"],[5,"Error",1773],[17,"Output"],[10,"FnMut",1806],[5,"Pkh",1807],[5,"Bare",1807],[5,"Wsh",1808],[5,"Sh",1809],[5,"Wpkh",1808],[5,"Tr",1810],[5,"Type",1811],[5,"ExtData",1812],[5,"Tree",1813],[1,"usize"],[10,"Satisfier",1789],[10,"Hash",1774],[10,"IntoWalletDescriptor",100],[8,"ExtendedDescriptor",100],[8,"KeyMap",690,1779],[5,"Iter",1814],[5,"PkIter",1814],[6,"Policy",1815],[6,"LiftError",1816],[6,"BareCtx",1785],[6,"TapTree",1810],[6,"DescriptorSecretKey",690,1787],[5,"BTreeMap",1817],[10,"Signing",1798],[10,"PartialOrd",1770],[5,"Plan",1790],[5,"TxIn",1775],[6,"SigType",1785],[5,"String",1818],[6,"TranslateErr",1782],[10,"Translator",1782],[1,"array"],[6,"Error",1797],[6,"PolicyError",383],[6,"Error",1819],[6,"Error",1820],[6,"HexToBytesError",1821],[6,"KeyError",690],[6,"PkOrF",383],[6,"SatisfiableItem",383],[6,"Satisfaction",383],[5,"Condition",383],[10,"DescriptorTemplate",554],[8,"DescriptorTemplateOut",554],[5,"P2Pkh",554],[10,"IntoDescriptorKey",690],[5,"P2Wpkh_P2Sh",554],[5,"P2Wpkh",554],[5,"P2TR",554],[6,"Tap",1785],[5,"Bip44",554],[10,"DerivableKey",690],[5,"Bip44Public",554],[5,"Bip49",554],[5,"Bip49Public",554],[5,"Bip84",554],[5,"Bip84Public",554],[5,"Bip86",554],[5,"Bip86Public",554],[8,"ValidNetworks",690],[5,"SortedMultiVec",690,1822],[5,"GeneratedKey",690],[5,"PrivateKeyGenerateOptions",690],[5,"SinglePub",690,1787],[5,"SinglePriv",690,1787],[6,"SinglePubKey",690,1787],[6,"DescriptorKey",690],[10,"Debug",1773],[5,"Xpriv",1819],[6,"ExtendedKey",690],[5,"Xpub",1819],[5,"DerivationPath",1819],[17,"Entropy"],[17,"Options"],[17,"Error"],[10,"GeneratableKey",690],[10,"AsMut",1823],[10,"Default",1824],[10,"GeneratableDefaultOptions",690],[5,"Assets",1790],[8,"KeySource",1819],[5,"Fingerprint",1819],[5,"DescriptorKeyParseError",1787],[10,"PsbtUtils",988],[5,"FeeRate",1825],[5,"Balance",992,1826],[5,"Wallet",992],[5,"SignerOrdering",1429],[10,"TransactionSigner",1429],[5,"Arc",1827],[17,"Item"],[10,"Iterator",1828],[5,"Block",1829],[5,"CannotConnectError",1830],[5,"BlockId",1831],[6,"ApplyHeaderError",1830],[5,"Transaction",1775],[10,"IntoIterator",1832],[5,"Update",992],[10,"Into",1823],[5,"ConfirmationTimeHeightAnchor",1831],[5,"TxGraph",1833],[5,"Txid",1834],[8,"DefaultCoinSelectionAlgorithm",1225],[5,"BumpFee",1609],[5,"TxBuilder",1609],[6,"BuildFeeBumpError",1324],[5,"CreateTx",1609],[6,"CalculateFeeError",1833],[5,"CheckPointIter",1830],[8,"Result",1835],[5,"AddressInfo",992],[5,"Psbt",1836],[5,"SignOptions",1429],[6,"SignerError",1429],[6,"NewError",992],[6,"LoadError",992],[6,"NewOrLoadError",992],[6,"InsertTxError",992],[6,"ApplyBlockError",992],[5,"FullScanResult",1837],[5,"SyncResult",1837],[5,"PsbtSighashType",1838],[5,"Input",1838],[6,"CreateTxError",1324],[5,"CanonicalTx",1833],[5,"AlterCheckPointError",1830],[6,"ConfirmationTime",1831],[10,"IsDust",992,1839],[5,"CheckPoint",1830],[10,"DoubleEndedIterator",1840],[8,"ChangeSet",992],[10,"PersistBackend",1841],[10,"Send",1842],[10,"Sync",1842],[5,"LocalChain",1830],[5,"BlockHash",1834],[5,"Amount",1843],[5,"KeychainTxOutIndex",1844],[5,"FullScanRequest",1837],[5,"SyncRequest",1837],[5,"LargestFirstCoinSelection",1225],[5,"OldestFirstCoinSelection",1225],[5,"BranchAndBoundCoinSelection",1225],[10,"CoinSelectionAlgorithm",1225],[5,"CoinSelectionResult",1225],[6,"Error",1225],[6,"Excess",1225],[6,"MiniscriptPsbtError",1324],[6,"Error",1845],[5,"FullyNodedExport",1406],[6,"SignerId",1429],[6,"SignerContext",1429],[5,"SignerWrapper",1429],[10,"Sized",1842],[6,"TapLeavesOptions",1429],[10,"SignerCommon",1429],[5,"PrivateKey",1797],[5,"DescriptorMultiXKey",1787],[5,"DescriptorXKey",1787],[6,"Error",1846],[10,"InputSigner",1429],[5,"PushBytes",1847],[10,"AsRef",1823],[6,"AddForeignUtxoError",1609],[6,"AddUtxoError",1609],[6,"AllowShrinkingError",1609],[6,"ChangeSpendPolicy",1609],[6,"TxOrdering",1609],[6,"LockTime",1848],[1,"i32"],[15,"Foreign",97],[8,"DerivedDescriptor",100],[15,"PsbtTimelocks",530],[15,"Complete",533],[15,"Partial",533],[15,"PartialComplete",533],[15,"Sha256Preimage",544],[15,"Hash256Preimage",544],[15,"Ripemd160Preimage",544],[15,"Hash160Preimage",544],[15,"Thresh",544],[15,"Multisig",544],[15,"AbsoluteTimelock",544],[15,"RelativeTimelock",544],[10,"ExtScriptContext",690],[15,"UnexpectedConnectedToHash",1215],[15,"ConfirmationHeightCannotBeGreaterThanTip",1217],[15,"LoadedGenesisDoesNotMatch",1219],[15,"LoadedNetworkDoesNotMatch",1219],[15,"LoadedDescriptorDoesNotMatch",1219],[15,"InsufficientFunds",1317],[15,"Change",1319],[15,"NoChange",1319],[15,"InsufficientFunds",1398],[15,"RbfSequenceCsv",1398],[15,"LockTime",1398],[15,"FeeTooLow",1398],[15,"FeeRateTooLow",1398],[8,"WalletExport",1406],[15,"Tap",1608],[15,"InvalidTxid",1767]],"r":[[2,100],[4,1769],[6,1769],[7,1429],[8,1609],[9,1769],[10,992],[11,1769],[70,992],[71,100],[104,1779],[106,1787],[112,1785],[113,1783],[118,383],[119,1785],[120,1785],[153,350],[693,1787],[694,1787],[709,1779],[719,1785],[724,1787],[725,1787],[726,1787],[727,1822],[994,1826],[1002,1839]],"b":[[191,"impl-Descriptor%3CDefiniteDescriptorKey%3E"],[192,"impl-Descriptor%3CDescriptorPublicKey%3E"],[211,"impl-Debug-for-Descriptor%3CPk%3E"],[212,"impl-Display-for-Descriptor%3CPk%3E"],[215,"impl-Display-for-Miniscript%3CPk,+Ctx%3E"],[216,"impl-Debug-for-Miniscript%3CPk,+Ctx%3E"],[219,"impl-From%3CPkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[220,"impl-From%3CBare%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[221,"impl-From%3CWsh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[222,"impl-From%3CSh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[223,"impl-From%3CWpkh%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[225,"impl-From%3CTr%3CPk%3E%3E-for-Descriptor%3CPk%3E"],[367,"impl-Display-for-Error"],[368,"impl-Debug-for-Error"],[370,"impl-From%3CError%3E-for-Error"],[371,"impl-From%3CPolicyError%3E-for-Error"],[372,"impl-From%3CError%3E-for-Error"],[373,"impl-From%3CError%3E-for-Error"],[374,"impl-From%3CHexToBytesError%3E-for-Error"],[375,"impl-From%3CError%3E-for-Error"],[376,"impl-From%3CKeyError%3E-for-Error"],[458,"impl-Debug-for-PolicyError"],[459,"impl-Display-for-PolicyError"],[808,"impl-Debug-for-KeyError"],[809,"impl-Display-for-KeyError"],[810,"impl-Debug-for-SortedMultiVec%3CPk,+Ctx%3E"],[811,"impl-Display-for-SortedMultiVec%3CPk,+Ctx%3E"],[812,"impl-Display-for-DescriptorPublicKey"],[813,"impl-Debug-for-DescriptorPublicKey"],[814,"impl-Debug-for-DescriptorSecretKey"],[815,"impl-Display-for-DescriptorSecretKey"],[820,"impl-From%3CXpriv%3E-for-ExtendedKey%3CCtx%3E"],[821,"impl-From%3CXpub%3E-for-ExtendedKey%3CCtx%3E"],[827,"impl-From%3CError%3E-for-KeyError"],[828,"impl-From%3CError%3E-for-KeyError"],[869,"impl-DerivableKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[870,"impl-IntoDescriptorKey%3CCtx%3E-for-GeneratedKey%3CK,+Ctx%3E"],[1075,"impl-Debug-for-Balance"],[1076,"impl-Display-for-Balance"],[1079,"impl-Debug-for-AddressInfo"],[1080,"impl-Display-for-AddressInfo"],[1081,"impl-Debug-for-NewError"],[1082,"impl-Display-for-NewError"],[1083,"impl-Display-for-LoadError"],[1084,"impl-Debug-for-LoadError"],[1085,"impl-Display-for-NewOrLoadError"],[1086,"impl-Debug-for-NewOrLoadError"],[1087,"impl-Display-for-InsertTxError"],[1088,"impl-Debug-for-InsertTxError"],[1089,"impl-Display-for-ApplyBlockError"],[1090,"impl-Debug-for-ApplyBlockError"],[1094,"impl-From%3CFullScanResult%3CKeychainKind%3E%3E-for-Update"],[1095,"impl-From%3CSyncResult%3E-for-Update"],[1266,"impl-Debug-for-Error"],[1267,"impl-Display-for-Error"],[1365,"impl-Display-for-MiniscriptPsbtError"],[1366,"impl-Debug-for-MiniscriptPsbtError"],[1367,"impl-Debug-for-CreateTxError"],[1368,"impl-Display-for-CreateTxError"],[1369,"impl-Display-for-BuildFeeBumpError"],[1370,"impl-Debug-for-BuildFeeBumpError"],[1372,"impl-From%3CError%3E-for-CreateTxError"],[1373,"impl-From%3CMiniscriptPsbtError%3E-for-CreateTxError"],[1375,"impl-From%3CPolicyError%3E-for-CreateTxError"],[1376,"impl-From%3CError%3E-for-CreateTxError"],[1377,"impl-From%3CError%3E-for-CreateTxError"],[1416,"impl-Debug-for-FullyNodedExport"],[1417,"impl-Display-for-FullyNodedExport"],[1508,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1509,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1510,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1517,"impl-Display-for-SignerError"],[1518,"impl-Debug-for-SignerError"],[1526,"impl-From%3CHash%3E-for-SignerId"],[1527,"impl-From%3CFingerprint%3E-for-SignerId"],[1538,"impl-SignerCommon-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1539,"impl-SignerCommon-for-SignerWrapper%3CPrivateKey%3E"],[1540,"impl-SignerCommon-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1558,"impl-InputSigner-for-SignerWrapper%3CDescriptorMultiXKey%3CXpriv%3E%3E"],[1559,"impl-InputSigner-for-SignerWrapper%3CDescriptorXKey%3CXpriv%3E%3E"],[1560,"impl-InputSigner-for-SignerWrapper%3CPrivateKey%3E"],[1687,"impl-Debug-for-AddUtxoError"],[1688,"impl-Display-for-AddUtxoError"],[1689,"impl-Display-for-AddForeignUtxoError"],[1690,"impl-Debug-for-AddForeignUtxoError"],[1691,"impl-Display-for-AllowShrinkingError"],[1692,"impl-Debug-for-AllowShrinkingError"]],"c":"OjAAAAEAAAAAAAUAEAAAAL8AAQENARwDcwOABQ==","e":"OzAAAAEAAJoDfQADAAAACAABAAsAAAAOABMAJgAJADUAAQA+AAAAQQAAAEUADwBXAAMAXQADAGoAAAB3AAAAigABAI0AAACPAAcAmgAAAJwAAQCfAAAAogABAKUAAQCpAAEArAABAK8AAQCyAAsAwwADAMgAAwDRAAEA1AAMAOIAAADoAAAA9QADAAABAAAGAQEACgEBABEBAQAnAQMALAEBADoBAQA9AQEAQQEFAEwBBwBVAQMAWgEDAG4BAwBzAQYAewEEAKMBGQC/AQ4A0AEAANMBAADYAQEA5wEAAOoBBADwASIAOQIXAFICCwB2AjwA4QIXAAMDFQAaAwEAHQMAAB8DFwA8AwEAQQMAAEgDAQBTAwMAYwMAAGYDBABsAwEAfAMBAIEDAACKAwAAjwMDAJgDAACcAwgApgMDAK0DLwD+AwAABgQSACEEAwAoBAIALgQCADQEDwBHBAEAggQAAIkECACWBBEAqgQIALYECADXBBEA6gQCAO4EAgDzBAYACgUbAE4FDQBdBQEAYAUCAGcFDwCDBQEAhwUAAIkFAQCMBQAAkAUFAL4FDwDPBRQA5QUGAO0FCAD3BQIAAQYAAAMGAgARBgEAFwYCABsGAAAfBgcAKQYfAGgGDwB5BgsAhwYDAJAGAQCVBgoAqAYBALgGAQC+Bh8A4AYHAA=="}],\ +["example_bitcoind_rpc_polling",{"t":"PSISSSGPSPFGSPPNNNNHNNNNNNNNNNONNNNNNNNNNNNNNHNOOOHNNNNNNNNNNNNNNNONNNOO","n":["Block","CHANNEL_BOUND","ChangeSet","DB_COMMIT_DELAY","DB_MAGIC","DB_PATH","Emission","Live","MEMPOOL_EMIT_DELAY","Mempool","RpcArgs","RpcCommands","STDOUT_PRINT_DELAY","Sync","Tip","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","await_flag","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","fallback_height","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","main","new_client","rpc_cookie","rpc_password","rpc_user","start_ctrlc_handler","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","url","vzip","vzip","vzip","rpc_args","rpc_args"],"q":[[0,"example_bitcoind_rpc_polling"],[70,"example_bitcoind_rpc_polling::RpcCommands"],[72,"clap::builder::command"],[73,"core::sync::atomic"],[74,"core::time"],[75,"core::fmt"],[76,"clap::parser::matches::arg_matches"],[77,"clap::error"],[78,"core::result"],[79,"anyhow"],[80,"bitcoincore_rpc::client"],[81,"alloc::sync"],[82,"core::any"]],"i":[10,0,0,0,0,0,0,8,0,10,0,0,0,8,10,7,7,8,8,0,10,7,8,10,7,8,7,8,7,8,7,10,7,8,10,7,8,7,8,7,8,8,10,7,8,0,7,7,7,7,0,7,8,10,7,8,10,7,8,10,7,8,7,8,7,8,7,10,7,8,21,22],"f":"```````````````{bb}000{{{f{d}}h}j}{{{f{c}}}{{f{e}}}{}{}}00{{{f{lc}}}{{f{le}}}{}{}}00{{{f{n}}}n}{{{f{A`}}}A`}{{{f{c}}{f{le}}}Ab{}{}}0`{{{f{Ad}}{f{lAf}}}Ah}{{{f{n}}{f{lAf}}}Ah}{{{f{A`}}{f{lAf}}}Ah}{cc{}}00{{{f{Aj}}}{{An{nAl}}}}{{{f{Aj}}}{{An{A`Al}}}}{{{f{lAj}}}{{An{nAl}}}}{{{f{lAj}}}{{An{A`Al}}}}{{{f{B`}}}j}{ce{}{}}00{{}{{Bb{Ab}}}}{{{f{n}}}{{Bb{Bd}}}}```{{}{{Bf{d}}}}{{{f{c}}}e{}{}}0{c{{An{e}}}{}{}}00000{{{f{c}}}Bh{}}00{{{f{ln}}{f{Aj}}}{{An{AbAl}}}}{{{f{lA`}}{f{Aj}}}{{An{AbAl}}}}{{{f{ln}}{f{lAj}}}{{An{AbAl}}}}{{{f{lA`}}{f{lAj}}}{{An{AbAl}}}}`:::``","D":"Bb","p":[[8,"Command",72],[5,"AtomicBool",73],[1,"reference"],[5,"Duration",74],[1,"bool"],[0,"mut"],[5,"RpcArgs",0],[6,"RpcCommands",0],[1,"unit"],[6,"Emission",0],[5,"Formatter",75],[8,"Result",75],[5,"ArgMatches",76],[5,"Error",77],[6,"Result",78],[1,"str"],[8,"Result",79],[5,"Client",80],[5,"Arc",81],[5,"TypeId",82],[15,"Sync",70],[15,"Live",70]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAADcACgAAAAEAAwAAAAUAAgAKAAIADwAPACAAAgAmAAQALgABADMADwBEAAQA"}],\ +["example_cli",{"t":"PGFPPPGGFPPFPGIIPPPPPPPIPPPGEONNNNNNNNENNNNNNNNNNNNNNNNOOENNNNNNNNNNNOOHOONONNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNOOOOHONNNNNNNNNNOONHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOO","n":["Address","AddressCmd","Args","Balance","BranchAndBound","ChainSpecific","CoinSelectionAlgo","Commands","CreateTxChange","External","Index","Init","Internal","Keychain","KeychainChangeSet","KeychainTxGraph","LargestFirst","List","List","New","NewestFirst","Next","OldestFirst","PlannedUtxo","Send","SmallestFirst","TxOut","TxOutCmd","anyhow","args","augment_args","augment_args_for_update","augment_subcommands","augment_subcommands","augment_subcommands","augment_subcommands_for_update","augment_subcommands_for_update","augment_subcommands_for_update","bdk_file_store","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","change_descriptor","change_keychain","clap","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","command","cp_limit","create_tx","db","db_path","default","descriptor","deserialize","eq","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","from_str","handle_commands","has_subcommand","has_subcommand","has_subcommand","index","index","index","index_changeset","init","init_changeset","into","into","into","into","into","into","into","into","into_app","into_app_for_update","keymap","network","partial_cmp","planned_utxos","serialize","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","change","addr_cmd","address","chain_specific","coin_select","txout_cmd","value","confirmed","spent","unconfirmed","unspent"],"q":[[0,"example_cli"],[176,"example_cli::AddressCmd"],[177,"example_cli::Commands"],[183,"example_cli::TxOutCmd"],[187,"clap::builder::command"],[188,"core::clone"],[189,"clap::derive"],[190,"core::cmp"],[191,"miniscript::descriptor::key"],[192,"alloc::collections::btree::map"],[193,"bitcoin::address"],[194,"bitcoin::blockdata::transaction"],[195,"core::option"],[196,"anyhow"],[197,"bdk_chain::tx_data_traits"],[198,"bdk_chain::chain_oracle"],[199,"core::result"],[200,"serde::de"],[201,"core::fmt"],[202,"clap::parser::matches::arg_matches"],[203,"clap::error"],[204,"std::sync::mutex"],[205,"bdk_persist::persist"],[206,"bitcoin::network"],[207,"core::default"],[208,"serde::ser"],[209,"core::convert"],[210,"core::ops::function"],[211,"core::marker"],[212,"bdk_tmp_plan"],[213,"alloc::vec"],[214,"alloc::string"],[215,"core::any"]],"i":[4,0,0,4,8,4,0,0,0,11,9,0,11,0,0,0,8,9,10,9,8,9,8,0,4,8,4,0,0,50,34,34,4,9,10,4,9,10,0,21,50,34,4,8,9,10,11,21,50,34,4,8,9,10,11,34,21,0,4,8,9,10,11,4,8,9,10,11,11,34,34,0,50,34,8,34,11,11,11,11,4,8,8,9,10,11,11,21,50,34,4,8,9,10,11,34,4,9,10,34,4,9,10,8,0,4,9,10,14,21,50,21,0,50,21,50,34,4,8,9,10,11,34,34,50,34,11,0,11,4,8,9,10,11,8,11,21,50,34,4,8,9,10,11,21,50,34,4,8,9,10,11,21,50,34,4,8,9,10,11,34,4,9,10,34,4,9,10,21,50,34,4,8,9,10,11,60,61,62,62,62,63,62,64,64,64,64],"f":"``````````````````````````````{bb}0000000`{{{d{c}}}{{d{e}}}{}{}}0000000{{{d{fc}}}{{d{fe}}}{}{}}0000000```{{{d{{h{ce}}}}}{{h{ce}}}{jl}{jn}}{{{d{A`}}}A`}{{{d{Ab}}}Ab}{{{d{Ad}}}Ad}{{{d{Af}}}Af}{{{d{c}}{d{fe}}}Ah{}{}}0000{{{d{Af}}{d{Af}}}Aj}``{{{d{f{Al{c}}}}{d{e}}{d{{Bb{AnB`}}}}A`BdBf}{{C`{{Bn{Bh{Bl{Bj}}}}}}}CbCd}``{{}A`}`{c{{Cf{Af}}}Ch}{{{d{Af}}{d{Af}}}Cj}{{{d{c}}{d{e}}}Cj{}{}}0{{{d{{h{ce}}}}{d{fCl}}}Cn{D`l}{D`n}}{{{d{A`}}{d{fCl}}}Cn}0{{{d{Ab}}{d{fCl}}}Cn}{{{d{Ad}}{d{fCl}}}Cn}{{{d{Af}}{d{fCl}}}Cn}0{cc{}}0000000{{{d{Db}}}{{Cf{{Dd{ce}}Df}}}ln}{{{d{Db}}}{{Cf{{h{ce}}Df}}}ln}{{{d{Db}}}{{Cf{AbDf}}}}{{{d{Db}}}{{Cf{AdDf}}}}{{{d{fDb}}}{{Cf{{Dd{ce}}Df}}}ln}{{{d{fDb}}}{{Cf{{h{ce}}Df}}}ln}{{{d{fDb}}}{{Cf{AbDf}}}}{{{d{fDb}}}{{Cf{AdDf}}}}{{{d{Dh}}}{{Cf{A`c}}}{}}{{{d{{Dj{{Al{c}}}}}}{d{{Dj{{Dl{e}}}}}}{d{{Dj{g}}}}{d{{Bb{AnB`}}}}Dnk{h{mi}}}{{C`{Ah}}}Cb{E`EbEdEf{Ej{{Eh{c}}}}}Cdn{{En{i{d{Bh}}}{{El{{C`{Ah}}}}}}}l}{{{d{Dh}}}Cj}00````{{{d{{Fb{F`}}}}{d{Dh}}}{{C`{{Fd{ceg}}}}}ln{E`EbEfEdFfFh}}`{ce{}{}}0000000{{}b}0``{{{d{Af}}{d{Af}}}{{Bl{Aj}}}}{{{d{{Al{c}}}}{d{e}}{d{{Fj{g}}}}}{{Cf{{Fn{{Fl{gc}}}}}}}CbCd{jG`}}{{{d{Af}}c}CfGb}{{{d{c}}}e{}{}}0000{{{d{c}}}Gd{}}0{c{{Cf{e}}}{}{}}000000000000000{{{d{c}}}Gf{}}0000000{{{d{f{Dd{ce}}}}{d{Db}}}{{Cf{AhDf}}}ln}{{{d{f{h{ce}}}}{d{Db}}}{{Cf{AhDf}}}ln}{{{d{fAb}}{d{Db}}}{{Cf{AhDf}}}}{{{d{fAd}}{d{Db}}}{{Cf{AhDf}}}}{{{d{f{Dd{ce}}}}{d{fDb}}}{{Cf{AhDf}}}ln}{{{d{f{h{ce}}}}{d{fDb}}}{{Cf{AhDf}}}ln}{{{d{fAb}}{d{fDb}}}{{Cf{AhDf}}}}{{{d{fAd}}{d{fDb}}}{{Cf{AhDf}}}}{ce{}{}}0000000```````````","D":"E`","p":[[8,"Command",187],[1,"reference"],[0,"mut"],[6,"Commands",0],[10,"Clone",188],[10,"Subcommand",189],[10,"Args",189],[6,"CoinSelectionAlgo",0],[6,"AddressCmd",0],[6,"TxOutCmd",0],[6,"Keychain",0],[1,"unit"],[6,"Ordering",190],[8,"KeychainTxGraph",0],[6,"DescriptorPublicKey",191],[6,"DescriptorSecretKey",191],[5,"BTreeMap",192],[5,"Address",193],[1,"u64"],[5,"Transaction",194],[5,"CreateTxChange",0],[6,"Option",195],[1,"tuple"],[8,"Result",196],[10,"Anchor",197],[10,"ChainOracle",198],[6,"Result",199],[10,"Deserializer",200],[1,"bool"],[5,"Formatter",201],[8,"Result",201],[10,"Debug",201],[5,"ArgMatches",202],[5,"Args",0],[5,"Error",203],[1,"str"],[5,"Mutex",204],[5,"Persist",205],[6,"Network",206],[10,"Default",207],[10,"Append",197],[10,"DeserializeOwned",200],[10,"Serialize",208],[8,"KeychainChangeSet",0],[10,"From",209],[17,"Output"],[10,"FnOnce",210],[1,"u8"],[1,"slice"],[5,"Init",0],[10,"Send",211],[10,"Sync",211],[5,"Assets",212],[8,"PlannedUtxo",0],[5,"Vec",213],[10,"CanDerive",212],[10,"Serializer",208],[5,"String",214],[5,"TypeId",215],[15,"List",176],[15,"Address",177],[15,"Send",177],[15,"TxOut",177],[15,"List",183]],"r":[],"b":[[81,"impl-Display-for-CoinSelectionAlgo"],[82,"impl-Debug-for-CoinSelectionAlgo"],[85,"impl-Display-for-Keychain"],[86,"impl-Debug-for-Keychain"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAJMAEQAAAAAAAgABAAUABQANAAQAFQAAABcAAQAaAAAAHAABAB8AKQBKAA0AYAAMAG4AAABwAAAAewABAH4AMgCyAAAAtAACAA=="}],\ +["example_electrum",{"t":"ISSFGPFPNNNNNNONNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNOOOOOOOOO","n":["ChangeSet","DB_MAGIC","DB_PATH","ElectrumArgs","ElectrumCommands","Scan","ScanOptions","Sync","augment_args","augment_args","augment_args_for_update","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","batch_size","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client","clone","clone","clone","clone_into","clone_into","clone_into","electrum_args","electrum_url","eq","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","into_app","into_app_for_update","main","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","all_spks","electrum_args","electrum_args","scan_options","scan_options","stop_gap","unconfirmed","unused_spks","utxos"],"q":[[0,"example_electrum"],[71,"example_electrum::ElectrumCommands"],[80,"clap::builder::command"],[81,"bitcoin::network"],[82,"electrum_client::client"],[83,"anyhow"],[84,"core::fmt"],[85,"clap::parser::matches::arg_matches"],[86,"clap::error"],[87,"core::result"],[88,"core::any"]],"i":[0,0,0,0,0,8,0,8,4,9,4,9,8,8,9,8,4,9,8,4,9,4,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,8,4,9,9,9,0,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,19,20,19,20,19,20,19,19,19],"f":"````````{bb}00000`{{{d{c}}}{{d{e}}}{}{}}00{{{d{fc}}}{{d{fe}}}{}{}}00{{{d{h}}j}{{n{l}}}}{{{d{A`}}}A`}{{{d{h}}}h}{{{d{Ab}}}Ab}{{{d{c}}{d{fe}}}Ad{}{}}00{{{d{A`}}}h}`{{{d{Ab}}{d{Ab}}}Af}{{{d{A`}}{d{fAh}}}Aj}{{{d{h}}{d{fAh}}}Aj}{{{d{Ab}}{d{fAh}}}Aj}{cc{}}00{{{d{Al}}}{{B`{A`An}}}}{{{d{Al}}}{{B`{hAn}}}}{{{d{Al}}}{{B`{AbAn}}}}{{{d{fAl}}}{{B`{A`An}}}}{{{d{fAl}}}{{B`{hAn}}}}{{{d{fAl}}}{{B`{AbAn}}}}{{{d{Bb}}}Af}{ce{}{}}00{{}b}0{{}{{n{Ad}}}}{{{d{c}}}e{}{}}00{c{{B`{e}}}{}{}}00000{{{d{c}}}Bd{}}00{{{d{fA`}}{d{Al}}}{{B`{AdAn}}}}{{{d{fh}}{d{Al}}}{{B`{AdAn}}}}{{{d{fAb}}{d{Al}}}{{B`{AdAn}}}}{{{d{fA`}}{d{fAl}}}{{B`{AdAn}}}}{{{d{fh}}{d{fAl}}}{{B`{AdAn}}}}{{{d{fAb}}{d{fAl}}}{{B`{AdAn}}}};;;`````````","D":"An","p":[[8,"Command",80],[1,"reference"],[0,"mut"],[5,"ElectrumArgs",0],[6,"Network",81],[5,"Client",82],[8,"Result",83],[6,"ElectrumCommands",0],[5,"ScanOptions",0],[1,"unit"],[1,"bool"],[5,"Formatter",84],[8,"Result",84],[5,"ArgMatches",85],[5,"Error",86],[6,"Result",87],[1,"str"],[5,"TypeId",88],[15,"Sync",71],[15,"Scan",71]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEEACAAAAAUABwAAAAkABQAQAA0AHwADACYABgAwABcASQADAA=="}],\ +["example_esplora",{"t":"ISSFGPFPNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNHONNNNNNNNNNNNNNNNNNNNNOOOOOOOOO","n":["ChangeSet","DB_MAGIC","DB_PATH","EsploraArgs","EsploraCommands","Scan","ScanOptions","Sync","augment_args","augment_args","augment_args_for_update","augment_args_for_update","augment_subcommands","augment_subcommands_for_update","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","client","clone","clone","clone","clone_into","clone_into","clone_into","eq","esplora_args","esplora_url","fmt","fmt","fmt","from","from","from","from_arg_matches","from_arg_matches","from_arg_matches","from_arg_matches_mut","from_arg_matches_mut","from_arg_matches_mut","has_subcommand","into","into","into","into_app","into_app_for_update","main","parallel_requests","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches","update_from_arg_matches_mut","update_from_arg_matches_mut","update_from_arg_matches_mut","vzip","vzip","vzip","all_spks","esplora_args","esplora_args","scan_options","scan_options","stop_gap","unconfirmed","unused_spks","utxos"],"q":[[0,"example_esplora"],[71,"example_esplora::EsploraCommands"],[80,"clap::builder::command"],[81,"bitcoin::network"],[82,"esplora_client::blocking"],[83,"anyhow"],[84,"core::fmt"],[85,"clap::parser::matches::arg_matches"],[86,"clap::error"],[87,"core::result"],[88,"core::any"]],"i":[0,0,0,0,0,8,0,8,4,9,4,9,8,8,8,4,9,8,4,9,4,8,4,9,8,4,9,9,8,4,8,4,9,8,4,9,8,4,9,8,4,9,8,8,4,9,9,9,0,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,8,4,9,19,20,19,20,19,20,19,19,19],"f":"````````{bb}00000{{{d{c}}}{{d{e}}}{}{}}00{{{d{fc}}}{{d{fe}}}{}{}}00{{{d{h}}j}{{n{l}}}}{{{d{A`}}}A`}{{{d{h}}}h}{{{d{Ab}}}Ab}{{{d{c}}{d{fe}}}Ad{}{}}00{{{d{Ab}}{d{Ab}}}Af}{{{d{A`}}}h}`{{{d{A`}}{d{fAh}}}Aj}{{{d{h}}{d{fAh}}}Aj}{{{d{Ab}}{d{fAh}}}Aj}{cc{}}00{{{d{Al}}}{{B`{A`An}}}}{{{d{Al}}}{{B`{hAn}}}}{{{d{Al}}}{{B`{AbAn}}}}{{{d{fAl}}}{{B`{A`An}}}}{{{d{fAl}}}{{B`{hAn}}}}{{{d{fAl}}}{{B`{AbAn}}}}{{{d{Bb}}}Af}{ce{}{}}00{{}b}0{{}{{n{Ad}}}}`{{{d{c}}}e{}{}}00{c{{B`{e}}}{}{}}00000{{{d{c}}}Bd{}}00{{{d{fA`}}{d{Al}}}{{B`{AdAn}}}}{{{d{fh}}{d{Al}}}{{B`{AdAn}}}}{{{d{fAb}}{d{Al}}}{{B`{AdAn}}}}{{{d{fA`}}{d{fAl}}}{{B`{AdAn}}}}{{{d{fh}}{d{fAl}}}{{B`{AdAn}}}}{{{d{fAb}}{d{fAl}}}{{B`{AdAn}}}};;;`````````","D":"An","p":[[8,"Command",80],[1,"reference"],[0,"mut"],[5,"EsploraArgs",0],[6,"Network",81],[5,"BlockingClient",82],[8,"Result",83],[6,"EsploraCommands",0],[5,"ScanOptions",0],[1,"unit"],[1,"bool"],[5,"Formatter",84],[8,"Result",84],[5,"ArgMatches",85],[5,"Error",86],[6,"Result",87],[1,"str"],[5,"TypeId",88],[15,"Sync",71],[15,"Scan",71]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAEEACAAAAAUABwAAAAkAFAAfAAIAJQAGAC8AAgAzABQASQADAA=="}],\ +["wallet_electrum_example",{"t":"SSSSH","n":["BATCH_SIZE","DB_MAGIC","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_electrum_example"],[5,"anyhow"],[6,"core::result"]],"i":[0,0,0,0,0],"f":"````{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",5],[6,"Result",6]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA"}],\ +["wallet_esplora_async",{"t":"SSSH","n":["PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_esplora_async"],[4,"anyhow"],[5,"core::result"]],"i":[0,0,0,0],"f":"```{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",4],[6,"Result",5]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OjAAAAEAAAAAAAQAEAAAAAAAAQACAAMABAA="}],\ +["wallet_esplora_blocking",{"t":"SSSSH","n":["DB_MAGIC","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP","main"],"q":[[0,"wallet_esplora_blocking"],[5,"anyhow"],[6,"core::result"]],"i":[0,0,0,0,0],"f":"````{{}{{f{bd}}}}","D":"`","p":[[1,"unit"],[5,"Error",5],[6,"Result",6]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAUAAQAAAAUA"}],\ +["wallet_rpc",{"t":"FPSGPPNNNNNNONOONNNNNNNNNNHOOOOONNNNNNNNONN","n":["Args","Block","DB_MAGIC","Emission","Mempool","SigTerm","augment_args","augment_args_for_update","borrow","borrow","borrow_mut","borrow_mut","change_descriptor","client","db_path","descriptor","fmt","fmt","from","from","from_arg_matches","from_arg_matches_mut","into","into","into_app","into_app_for_update","main","network","rpc_cookie","rpc_pass","rpc_user","start_height","try_from","try_from","try_into","try_into","type_id","type_id","update_from_arg_matches","update_from_arg_matches_mut","url","vzip","vzip"],"q":[[0,"wallet_rpc"],[43,"clap::builder::command"],[44,"bitcoincore_rpc::client"],[45,"anyhow"],[46,"core::fmt"],[47,"clap::parser::matches::arg_matches"],[48,"clap::error"],[49,"core::result"],[50,"core::any"]],"i":[0,9,0,0,9,9,4,4,4,9,4,9,4,4,4,4,4,9,4,9,4,4,4,9,4,4,0,4,4,4,4,4,4,9,4,9,4,9,4,4,4,4,9],"f":"``````{bb}0{{{d{c}}}{{d{e}}}{}{}}0{{{d{fc}}}{{d{fe}}}{}{}}0`{{{d{h}}}{{l{j}}}}``{{{d{h}}{d{fn}}}A`}{{{d{Ab}}{d{fn}}}A`}{cc{}}0{{{d{Ad}}}{{Ah{hAf}}}}{{{d{fAd}}}{{Ah{hAf}}}}{ce{}{}}0{{}b}0{{}{{l{Aj}}}}`````{c{{Ah{e}}}{}{}}000{{{d{c}}}Al{}}0{{{d{fh}}{d{Ad}}}{{Ah{AjAf}}}}{{{d{fh}}{d{fAd}}}{{Ah{AjAf}}}}`66","D":"Al","p":[[8,"Command",43],[1,"reference"],[0,"mut"],[5,"Args",0],[5,"Client",44],[8,"Result",45],[5,"Formatter",46],[8,"Result",46],[6,"Emission",0],[5,"ArgMatches",47],[5,"Error",48],[6,"Result",49],[1,"unit"],[5,"TypeId",50]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAB0ACAAAAAAAAgAKAA4AAAARAAEAFQABABkAAgAhAAcAKgABAA=="}]\ +]')); +if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; +else if (window.initSearch) window.initSearch(searchIndex); diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_bitcoind_rpc/bdk_bitcoind_rpc-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_bitcoind_rpc/bdk_bitcoind_rpc-desc-0-.js new file mode 100644 index 0000000000..7a1d4645b7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_bitcoind_rpc/bdk_bitcoind_rpc-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_bitcoind_rpc", 0, "This crate is used for emitting blockchain data from the …\nExtends bitcoincore_rpc::Error.\nA newly emitted block from Emitter.\nThe Emitter is used to emit data sourced from …\nEither a full Block or Header of the new block.\nThe block hash of this new block.\nThe block height of this new block.\nThe checkpoint of the new block.\nThe BlockId of a previous block that this block connects …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nReturns whether the error is a “not found” error.\nEmit mempool transactions, alongside their first-seen unix …\nConstruct a new Emitter.\nEmit the next block height and block (if any).\nEmit the next block height and header (if any).") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_chain/bdk_chain-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_chain/bdk_chain-desc-0-.js new file mode 100644 index 0000000000..1c6102936e --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_chain/bdk_chain-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_chain", 0, "This crate is a collection of core structures for Bitcoin …\nTrait that “anchors” blockchain data to a specific …\nAn Anchor that can be constructed from a given block, …\nTrait that makes an object appendable.\nMaximum BIP32 derivation index.\nA reference to a block in the canonical chain.\nHow many confirmations are needed f or a coinbase output …\nRepresents a service that tracks the blockchain.\nRepresents the observed position of some chain data.\nAn Anchor implementation that also records the exact …\nBlock height and timestamp at which a transaction is …\nAn Anchor implementation that also records the exact …\nThe chain data is seen as confirmed, and in anchored by A.\nThe transaction is confirmed\nA trait to extend the functionality of a miniscript …\nRepresents the ID of a descriptor, defined as the sha256 …\nError type.\nA TxOut with as much data as we can retrieve about it\nAn iterator for derived script pubkeys.\nAn index storing TxOuts that have a script pubkey that …\nThe chain data is not confirmed and last seen in the …\nThe transaction is unconfirmed\nThe script pubkeys that are being tracked by the index.\nReturns the BlockId that the associated blockchain data is …\nThe anchor block.\nThe anchor block.\nAppend another object of the same type onto self.\nReturns a reference to the inner hash (sha256, sh256d …\nThe position of the transaction in outpoint in the overall …\nMaps a ChainPosition<&A> into a ChainPosition<A> by …\nThe exact confirmation height of the transaction.\nThe confirmation height of the transaction being anchored.\nGet the upper bound of the chain data’s confirmation …\nGet the upper bound of the chain data’s confirmation …\nDetermines the upper bound of the confirmation height.\nThe confirmation time of the transaction being anchored.\nGet a reference to the internal descriptor.\nReturns the descriptor id, calculated as the sha256 of the …\nReturns the minimum value (in satoshis) at which an output …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct the anchor from a given block, block height and …\nCreates this wrapper type from the inner hash type.\nGet the best chain’s chain tip.\nThe hash of the block.\nThe height of the block.\nReturns the index associated with the script pubkey.\nContains the IndexedTxGraph and associated types. Refer to …\nAdds a script pubkey to scan for. Returns false and does …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nDetermines whether block of BlockId exists as an ancestor …\nReturns whether ChainPosition is confirmed or not.\nReturns whether ConfirmationTime is the confirmed variant.\nWhether the utxo is/was/will be spendable with chain tip.\nReturns whether the structure is considered empty.\nWhether the txout is considered mature.\nWhether this output is on a coinbase transaction.\nWhether any of the inputs of this transaction spend a …\nReturns whether the script pubkey at index has been used …\nModule for keychain related structures.\nThe LocalChain is a local implementation of ChainOracle.\nMarks the script pubkey at index as used even though it …\nComputes the net value transfer effect of tx on the script …\nCreate a new script pubkey iterator from descriptor.\nCreate a new script pubkey iterator from descriptor and a …\nThe location of the TxOut.\nGet a reference to the set of indexed outpoints.\nIterates over all the outputs with script pubkeys in an …\nScans a transaction’s outputs for matching script …\nScan a single TxOut for a matching script pubkey and …\nComputes the total value transfer effect tx has on the …\nThe txid and chain position of the transaction (if any) …\nReturns the script that has been inserted at the index.\nHelper types for spk-based blockchain clients.\nReturns the inner hash (sha256, sh256d etc.).\nModule for structures that store and traverse transactions.\nReturns the txout and script pubkey index of the TxOut at …\nThe TxOut.\nIterate over all known txouts that spend to tracked script …\nFinds all txouts on a transaction that has previously been …\nConstruct an unconfirmed variant using the given last_seen …\nUndoes the effect of mark_used. Returns whether the index …\nIterates over all unused script pubkeys in an index range.\nConfirmation height.\nThe last-seen timestamp in unix seconds.\nConfirmation time in unix seconds.\nRepresents changes to an IndexedTxGraph.\nThe resultant “changeset” when new transaction data is …\nThe IndexedTxGraph combines a TxGraph and an Indexer …\nUtilities for indexing transaction data.\nBatch insert all transactions of the given block of height.\nBatch insert all transactions of the given block of height…\nApply changeset to itself.\nApplies the ChangeSet to the IndexedTxGraph.\nApply an update directly.\nBatch insert transactions, filtering out those that are …\nBatch insert unconfirmed transactions, filtering out those …\nBatch insert unconfirmed transactions.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet a reference of the internal transaction graph.\nTxGraph changeset.\nTransaction index.\nScans a transaction for relevant outpoints, which are …\nScan and index the given outpoint and txout.\nIndexer changeset.\nDetermines the ChangeSet between self and an empty Indexer.\nDetermines the ChangeSet between self and an empty …\nInsert an anchor for a given transaction.\nInsert a unix timestamp of when a transaction is seen in …\nInsert and index a transaction into the graph.\nInsert a floating txout of given outpoint.\nCalls U::from(self).\nCalls U::from(self).\nDetermines whether the transaction should be included in …\nConstruct a new IndexedTxGraph with a given index.\nBalance, differentiated into various categories.\nRepresents updates to the derivation index of a …\nKeychainTxOutIndex controls how script pubkeys are …\nGet unbounded spk iterators for all keychains.\nAppend another ChangeSet into self.\nApplies the derivation changeset to the KeychainTxOutIndex…\nConfirmed and immediately spendable balance\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the descriptor associated with the keychain. Returns …\nAll coinbase outputs not yet matured\nReturns the keychain and keychain index associated with …\nReturn a reference to the internal SpkTxOutIndex.\nInsert a descriptor with a keychain associated to it.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns whether the changeset are empty.\nReturns whether the spk under the keychain’s index has …\nIterate over all OutPoints that have TxOuts with script …\nIterate over OutPoints that have script pubkeys derived …\nReturn the map of the keychain to descriptors.\nContains the keychains that have been added and their …\nContains for each descriptor_id the last revealed index of …\nGet the last derivation index revealed for keychain. …\nGet the last derivation index that is revealed for each …\nReturns the highest derivation index of the keychain where …\nReturns the highest derivation index of each keychain that …\nGet the lookahead setting.\nStore lookahead scripts until target_index (inclusive).\nMarks the script pubkey at index as used even though the …\nComputes the net value that this transaction gives to the …\nConstruct a KeychainTxOutIndex with the given lookahead.\nGet the next derivation index for keychain. The next index …\nGets the next unused script pubkey in the keychain. I.e., …\nGet the set of indexed outpoints, corresponding to tracked …\nAttempts to reveal the next script pubkey for keychain.\nReveals script pubkeys of the keychain’s descriptor up …\nConvenience method to call Self::reveal_to_target on …\nIterate over revealed spks of the given keychain.\nIterate over revealed spks of keychains in range\nComputes the total value transfer effect tx has on the …\nReturn the script that exists under the given keychain’s …\nGet the whole balance visible to the wallet.\nUnconfirmed UTXOs generated by a wallet tx\nGet sum of trusted_pending and confirmed coins.\nReturn the TxOut of outpoint if it has been indexed, and …\nIterate over known txouts that spend to tracked script …\nFinds all txouts on a transaction that has previously been …\nGet an unbounded spk iterator over a given keychain. …\nUndoes the effect of mark_used. Returns whether the index …\nUnconfirmed UTXOs received from an external wallet\nIterate over revealed, but unused, spks of the given …\nIterate over revealed, but unused, spks of all keychains.\nRepresents a failure when trying to insert/remove a …\nThe error type for LocalChain::apply_header_connected_to.\nOccurs when the update cannot connect with the original …\nOccurs when an update does not have a common checkpoint …\nThe ChangeSet represents changes to LocalChain.\nA LocalChain checkpoint is used to find the agreement …\nIterates over checkpoints backwards.\nOccurs when connected_to block conflicts with either the …\nThis is a local implementation of ChainOracle.\nAn error which occurs when a LocalChain is constructed …\nApply the given changeset.\nUpdate the chain with a given Header connecting it with …\nUpdate the chain with a given Header at height which you …\nApplies the given update to the chain.\nGet the BlockId of the checkpoint.\nRemoves blocks from (and inclusive of) the given block_id.\nExtends the checkpoint linked list by a iterator of block …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct a checkpoint from a list of BlockIds in …\nConstructs a LocalChain from a BTreeMap of height to …\nConstruct a LocalChain from an initial changeset.\nConstruct LocalChain from genesis hash.\nConstruct a checkpoint from the given header and block …\nConstruct a LocalChain from a given checkpoint tip.\nGet the genesis hash.\nGet checkpoint at height.\nGet checkpoint at given height (if it exists).\nGet the block hash of the checkpoint.\nGet the height of the checkpoint.\nThe checkpoint’s height.\nDerives an initial ChangeSet, meaning that it can be …\nInserts block_id at its height within the chain.\nInsert a BlockId.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nIterate from this checkpoint in descending height.\nIterate over checkpoints in descending height order.\nConstruct a new base block at the front of a linked list.\nThe original checkpoint’s block hash which cannot be …\nGet the previous checkpoint in the chain\nPuts another checkpoint onto the linked list representing …\nIterate checkpoints over a height range.\nIterate checkpoints over a height range.\nGet the highest checkpoint.\nThe suggested checkpoint to include to connect the two …\nThe attempted update to the original_block hash.\nData required to perform a spk-based blockchain client …\nData returned from a spk-based blockchain client full scan.\nData required to perform a spk-based blockchain client …\nData returned from a spk-based blockchain client sync.\nA cache of Arc-wrapped full transactions, identified by …\nAdd all transactions from TxGraph into the TxCache.\nAdd all transactions from TxGraph into the TxCache.\nAdd to the TxCache held by the request.\nAdd to the TxCache held by the request.\nChain on additional OutPoints that will be synced against.\nChain on additional Scripts that will be synced against.\nChain on additional Scripts that will be synced against.\nA checkpoint for the current chain LocalChain::tip. The …\nA checkpoint for the current LocalChain::tip. The full …\nChain on additional Txids that will be synced against.\nThe update to apply to the receiving LocalChain.\nThe update to apply to the receiving TxGraph.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nConstruct a new SyncRequest from a given cp tip.\nConstruct a new FullScanRequest from a given chain_tip.\nConstruct a new FullScanRequest from a given chain_tip and …\nThe update to apply to the receiving TxGraph.\nThe update to apply to the receiving LocalChain.\nAdd a closure that will be called for OutPoints previously …\nAdd a closure that will be called for Scripts previously …\nAdd a closure that will be called for every Script …\nAdd a closure that will be called for every Script …\nAdd a closure that will be called for Txids previously …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nLast active indices for the corresponding keychains (K).\nTransactions with these outpoints or spent from these …\nPopulate the request with revealed script pubkeys from …\nSet the OutPoints that will be synced against.\nSet the Scripts that will be synced against.\nSet the Scripts for a given keychain.\nSet the Txids that will be synced against.\nTransactions that spend from or to these indexed script …\nIterators of script pubkeys indexed by the keychain index.\nCache of full transactions, so the chain-source can avoid …\nCache of full transactions, so the chain-source can avoid …\nTransactions with these txids.\nErrors returned by TxGraph::calculate_fee.\nA transaction that is included in the chain, or is still …\nThe ChangeSet represents changes to a TxGraph.\nMissing TxOut for one or more of the inputs of the tx\nWhen the transaction is invalid according to the graph it …\nAn iterator that traverses ancestors of a given root …\nAn iterator that traverses transaction descendants.\nA graph of transactions and spends.\nA transaction node in the TxGraph.\nGet all transaction anchors known by TxGraph.\nIterate over all tx outputs known by TxGraph.\nIterates over the heights of that the new transaction …\nThe blocks that the transaction is “anchored” in.\nAdded anchors.\nApplies ChangeSet to TxGraph.\nExtends this graph with another so that self becomes the …\nGet the total balance of outpoints that are in chain of …\nBatch insert unconfirmed transactions.\nCalculates the fee of a given transaction. Returns 0 if tx …\nHow the transaction is observed as (confirmed or …\nGiven a transaction, return an iterator of txids that …\nGet a filtered list of outputs from the given outpoints …\nGet a filtered list of unspent outputs (UTXOs) from the …\nIterate over floating txouts known by TxGraph.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nIterate over all full transactions in the graph.\nGet the position of the transaction in chain with tip …\nGet the txid of the spending transaction and where the …\nGet a transaction by txid. This only returns Some for full …\nGet a transaction node by txid. This only returns Some for …\nObtains a single tx output (if any) at the specified …\nDetermines the ChangeSet between self and an empty TxGraph.\nInserts the given anchor into TxGraph.\nInserts the given seen_at for txid into TxGraph.\nInserts the given transaction into TxGraph.\nInserts the given TxOut at OutPoint.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nWhether the graph has any transactions or outputs in it.\nAdded last-seen unix timestamps of transactions.\nThe last-seen unix timestamp of the transaction as …\nList graph transactions that are in chain with chain_tip.\nTransform the TxGraph to have Anchors of another type.\nTransform the ChangeSet to have Anchors of another type.\nConstruct a new TxGraph from a list of transactions.\nThe transactions spending from this output.\nGet the total balance of outpoints that are in chain of …\nGet a filtered list of outputs from the given outpoints …\nGet a filtered list of unspent outputs (UTXOs) from the …\nGet the position of the transaction in chain with tip …\nGet the txid of the spending transaction and where the …\nList graph transactions that are in chain with chain_tip.\nA partial or full representation of the transaction.\nThe transaction node (as part of the graph).\nReturns known outputs of a given txid.\nIterates over the transactions spending from txid.\nTxid of the transaction.\nIterates over all outpoints contained within ChangeSet.\nAdded txouts.\nAdded transactions.\nUpdate the last seen time for all unconfirmed transactions.\nCreates an iterator that filters and maps ancestor …\nCreates an iterator that both filters and maps conflicting …\nCreates an iterator that filters and maps descendants from …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_coin_select/bdk_coin_select-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_coin_select/bdk_coin_select-desc-0-.js new file mode 100644 index 0000000000..08bb00356a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_coin_select/bdk_coin_select-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_coin_select", 0, "Bnb represents the current state of the BnB algorithm.\nDetermines how we should limit rounds of branch and bound.\nStrategy in which we should branch.\nCoinSelector selects and deselects from a set of …\nWe continue exploring subtrees of this node, starting with …\nClosure to decide the branching strategy, alongside a …\nMin absolute fee is not met\nMin drain value is not met\nWe skip both the inclusion and omission branches of this …\nWe continue exploring ONLY the omission branch of this …\nTxin “base” fields include outpoint (32+4) and …\nThe target fee (given the feerate) is not met\nThe target is not met\nA WeightedValue represents an input candidate for …\nCompare the advertised score with the current best. The …\nAttempt to backtrack to the previously selected node’s …\nThe weight of the template transaction, including fixed …\nReturns the ExcessStrategy that results in the least waste.\nThis is a variation of the Branch and Bound Coin Selection …\nCurrent excess.\nCurrent weight of template tx + selected inputs.\nAdditional weight if we include the drain (change) output.\nThis is the effective target value.\nEffective value of this input candidate: …\nReturns feerate in sats/wu.\nContinue down this branch and skip the inclusion branch if …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nThe total number of inputs; so we can calculate extra …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nTurns our Bnb state into an iterator.\nWhether this WeightedValue contains at least one segwit …\nThe feerate\nAdditional leeway for the target value.\nThe minimum absolute fee. I.e., needed for RBF.\nMinimum value allowed for a drain (change) output.\nCreates a new Bnb.\nCreate a new WeightedValue that represents a single input.\nAbsolute value sum of all selected inputs.\nEffective value sum of all selected inputs.\nWaste sum of all selected inputs.\nWeight sum of all selected inputs.\nWeight of spending the drain (change) output in the future.\nThe feerate we should try and achieve in sats per weight …\nThe value we need to select. If the value is None, then …\nTotal value of the UTXO(s) that this WeightedValue …\nTotal weight of including this/these UTXO(s). txin fields: …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_electrum/bdk_electrum-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_electrum/bdk_electrum-desc-0-.js new file mode 100644 index 0000000000..1e38bb74a7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_electrum/bdk_electrum-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_electrum", 0, "This crate is used for updating structures of bdk_chain …\nTrait to extend electrum_client::Client functionality.\nThe result of ElectrumExt::full_scan.\nThe result of ElectrumExt::sync.\nReturns the argument unchanged.\nReturns the argument unchanged.\nFull scan the keychain scripts specified with the …\nCalls U::from(self).\nCalls U::from(self).\nSync a set of scripts with the blockchain (via an Electrum …\nReturn FullScanResult with ConfirmationHeightAnchor.\nReturn SyncResult with ConfirmationHeightAnchor.\nReturn FullScanResult with ConfirmationTimeHeightAnchor.\nReturn SyncResult with ConfirmationTimeHeightAnchor.") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_esplora/bdk_esplora-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_esplora/bdk_esplora-desc-0-.js new file mode 100644 index 0000000000..b269821e93 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_esplora/bdk_esplora-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_esplora", 0, "BDK Esplora\nesplora_client::Error\nTrait to extend the functionality of …\nTrait to extend the functionality of …\nScan keychain scripts for transactions against Esplora, …\nScan keychain scripts for transactions against Esplora, …\nSync a set of scripts with the blockchain (via an Esplora …\nSync a set of scripts with the blockchain (via an Esplora …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_file_store/bdk_file_store-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_file_store/bdk_file_store-desc-0-.js new file mode 100644 index 0000000000..0c5a49584a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_file_store/bdk_file_store-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_file_store", 0, "BDK File Store\nError type for Store::aggregate_changesets.\nFailure to decode data from the file.\nIterator over entries in a file store.\nError that occurs due to problems encountered with the …\nMagic bytes do not match what is expected.\nFailure to read from the file.\nIO error, this may mean that the file is too short.\nError type for EntryIter.\nPersists an append-only list of changesets (C) to a single …\nLoads all the changesets that have been stored as one …\nAppend a new changeset to the file and truncate the file …\nThe partially-aggregated changeset.\nCreate a new Store file in write-only mode; error if the …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nIterates over the stored changeset from first to last, …\nThe error returned by EntryIter.\nOpen an existing Store.\nAttempt to open existing Store file; create it if the file …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_hwi/bdk_hwi-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_hwi/bdk_hwi-desc-0-.js new file mode 100644 index 0000000000..6b9887f01f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_hwi/bdk_hwi-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_hwi", 0, "HWI Signer\nCustom signer for Hardware Wallets\nReturns the argument unchanged.\nCreate a instance from the specified device and chain\nCalls U::from(self).") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_persist/bdk_persist-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_persist/bdk_persist-desc-0-.js new file mode 100644 index 0000000000..8e9bebaac5 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_persist/bdk_persist-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_persist", 0, "BDK Persist\nChanges from a combination of bdk_chain structures.\nPersist wraps a PersistBackend to create a convenient …\nA persistence backend for Persist.\nChanges to the LocalChain.\nCommit the staged changes to the underlying persistence …\nReturns the argument unchanged.\nReturns the argument unchanged.\nChanges to IndexedTxGraph.\nCalls U::from(self).\nCalls U::from(self).\nReturn the aggregate changeset C from persistence.\nStores the network type of the transaction data.\nCreate a new Persist from PersistBackend.\nStage a changeset to be committed later with commit.\nStages a new changeset and commits it (along with any …\nGet the changes that have not been committed yet.\nWrites a changeset to the persistence backend.") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_sqlite/bdk_sqlite-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_sqlite/bdk_sqlite-desc-0-.js new file mode 100644 index 0000000000..560e95367e --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_sqlite/bdk_sqlite-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_sqlite", 0, "BDK SQLite\nError that occurs while reading or writing change sets …\nInvalid network, cannot change the one already stored in …\nSQLite error.\nPersists data in to a relational schema based SQLite …\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCreates a new store from a Connection.") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_testenv/bdk_testenv-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_testenv/bdk_testenv-desc-0-.js new file mode 100644 index 0000000000..854553e552 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_testenv/bdk_testenv-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_testenv", 0, "Struct for running a regtest environment with a single …\nExposes the ElectrumApi calls from the Electrum client.\nReturns the argument unchanged.\nGet the genesis hash of the blockchain.\nCalls U::from(self).\nInvalidate a number of blocks of a given size count.\nCreate a checkpoint linked list of all the blocks in the …\nMine a number of blocks of a given size count, which may …\nMine a block that is guaranteed to be empty even with …\nConstruct a new TestEnv instance with default …\nReorg a number of blocks of a given size count. Refer to …\nReorg with a number of empty blocks of a given size count.\nExposes the RpcApi calls from bitcoincore_rpc.\nSend a tx of a given amount to a given address.\nThis method waits for the Electrum notification indicating …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_tmp_plan/bdk_tmp_plan-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_tmp_plan/bdk_tmp_plan-desc-0-.js new file mode 100644 index 0000000000..561ed54c3f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_tmp_plan/bdk_tmp_plan-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_tmp_plan", 0, "A spending plan or plan for short is a representation of a …\nThe plan is complete\nLegacy ECDSA signatures are required\nA plan represents a particular spending path for a …\nA plan key contains the asset key originally provided …\nThe returned value from Plan::try_complete.\nThe signatures required to complete the plan\nSignatures and hash pre-images that must be provided to …\nSignatures and hash pre-images that can be used to …\nSegwitv0 ECDSA signatures are required\nA Taproot key spend signature is required\nTaproot script path signatures are required\nThe key the planner will sign with\nA hint from how to get from the asset key to the concrete …\nThe key that was in the descriptor that we are satisfying …\nECDSA signatures under their keys\nThe expected satisfaction weight for the plan if it is …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nrequired hash160 pre-images\nhash160 pre-images under their images\nrequired hash256 pre-images\nhash256 pre-images under their images\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nThe minimum required transaction version required on the …\nThe minimum required locktime height or time on the …\nThe minimum required sequence (height or time) on the …\nWhether any hash pre-images are required in the plan\nrequired ripemd160 pre-images\nripemd160 pre-images under their images\nSchnorr signautres under their keys\nrequired sha256 pre-images\nSHA256 pre-images under their images\nrequired signatures\nWitness version for the plan\nThe script sig that should be set on the input\nThe witness that should be set on the input\nThe leaf hash of the script being used\nThe merkle root of the taproot output\nthe internal key\nThe keys in the script that require signatures") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_wallet/bdk_wallet-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_wallet/bdk_wallet-desc-0-.js new file mode 100644 index 0000000000..d1adc8c911 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/bdk_wallet/bdk_wallet-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("bdk_wallet", 0, "BDK Wallet\nExternal keychain, used for deriving recipient addresses.\nA UTXO owned by another wallet.\nInternal keychain, used for deriving change addresses.\nTypes of keychains\nA UTXO owned by the local wallet.\nAn unspent output owned by a Wallet.\nAn unspent transaction output (UTXO).\nA Utxo with its satisfaction_weight.\nReturn KeychainKind as a byte\nThe confirmation time for transaction containing this utxo\nThe derivation index for the script pubkey in the wallet\nDescriptors\nMacro to write full descriptors with code\nMacro to write descriptor fragments with code\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nWhether this UTXO is spent or not\nType of keychain\nKey formats\nGet the location of the UTXO\nReference to a transaction output\nAdditional functions on the rust-bitcoin Psbt structure.\nThe weight of the witness data and scriptSig expressed in …\nGet the sequence number if an explicit sequence number has …\nGet the TxOut of the UTXO\nTransaction output\nThe UTXO\nGet the version of BDK at runtime\nWallet\nThe location of the output.\nThe information about the input we require to add it to a …\nThe nSequence value to set for this input.\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nA raw scriptpubkey (including pay-to-pubkey) under Legacy …\nAlias for a Descriptor that contains extended derived keys\nScript descriptor\nThe descriptor pubkey, either a single pubkey or an xpub.\nAlias for a Descriptor that can contain extended keys …\nTrait implemented on Descriptors to add a method to …\nAlias for the type of maps that represent derivation paths …\nTrait for types which can be converted into an …\nThe consensus key associated with the type. Must be a …\nLegacy ScriptContext To be used as P2SH scripts For …\nThe top-level miniscript abstract syntax tree (AST).\nMultiple extended public keys.\nPay-to-PubKey-Hash\nPay-to-PubKey-Hash\nPay-to-PubKey-Hash\nThe ScriptContext for Miniscript. Additional type …\nSegwitv0 ScriptContext\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nPay-to-ScriptHash(includes nested wsh/wpkh/sorted multi)\nSingle public key.\nAlias for the type of maps that represent taproot key …\nPay-to-Taproot\nPay-to-Taproot\nPay-to-Taproot\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-PubKey-Hash\nPay-to-Witness-ScriptHash with Segwitv0 context\nPay-to-Witness-ScriptHash with Segwitv0 context\nPay-to-Witness-ScriptHash with Segwitv0 context\nExtended public key (xpub).\nComputes the Bitcoin address of the descriptor, if one …\nGet a reference to the inner AstElem representing the root …\nReplaces all wildcards (i.e. /*) in the descriptor with a …\nEnumerates all child nodes of the current AST node (self) …\nAttempt to produce a non-malleable witness template given …\nAttempt to produce a malleable witness template given the …\nDepending on script Context, some of the Terminals might …\nDepending on script Context, some of the script resource …\nCheck the consensus + policy(if not disabled) rules that …\nConsensus rules at the Miniscript satisfaction time. It is …\nPolicy rules at the Miniscript satisfaction time. It is …\nCheck the consensus + policy(if not disabled) rules …\nEach context has slightly different rules on what Pks are …\nDepending on ScriptContext, fragments can be malleable. …\nCheck whether the given satisfaction is valid under the …\nDescriptor checksum\nWhether the given miniscript contains a raw pkh fragment\nDeprecated name for Self::at_derivation_index.\nConvert all the public keys in the descriptor to …\nConvert all the public keys in the descriptor to …\nGet the DescriptorType of Descriptor\nEncode as a Bitcoin script\nDescriptor errors\nComputes the the underlying script before any hashing is …\nAdditional information helpful for extra analysis.\nCheck whether the miniscript follows the given Extra …\nExtract the spending policy\nUtility method for deriving the descriptor at each index …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nAdd type information(Type and Extdata) to Miniscript based …\nCreate a new Miniscript from a Terminal node and a Type …\nParse a Miniscript from string and perform sanity checks …\nAttempt to parse an Miniscripts that don’t follow the …\nAttempt to parse an insane(scripts don’t clear sanity …\nParse an expression tree into a descriptor.\nParse an expression tree into a Miniscript. As a general …\nReturns child node with given index, if any\nReturns Option::Some with cloned n’th public key from …\nReturns satisfying non-malleable witness and scriptSig to …\nReturns a possilbly mallable satisfying non-malleable …\nWhether the miniscript contains a combination of timelocks\nWhether the miniscript has repeated Pk or Pkh\nWhether or not the descriptor has any wildcards i.e. /*.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nExtracts the AstElem representing the root of the …\nGet as many descriptors as different paths in this …\nConvert to wallet descriptor\nWhether or not the descriptor has any wildcards\nWhether this descriptor contains a key that has multiple …\nWhether the miniscript is malleable\nCreates a new Iter iterator that will iterate over all …\nCreates a new PkIter iterator that will iterate over all …\nLifting corresponds to conversion of a miniscript into a …\nDepending on script context, the size of a satifaction …\nMaximum size, in bytes, of a satisfying witness. For …\nComputes an upper bound on the weight of a satisfying …\nMaximum number of witness elements used to satisfy the …\nComputes an upper bound on the difference between a …\nLocal helper function to display error messages with …\nCreate a new bare descriptor from witness script Errors …\nCreate a new pk descriptor\nCreate a new PkH descriptor\nCreate a new sh for a given redeem script Errors when …\nCreate a new sh sortedmulti descriptor with threshold k …\nCreate a new sh wrapper for the given wpkh descriptor\nCreate a new sh wrapper for the given wsh descriptor\nCreate a new sh wrapped wpkh from Pk. Errors when …\nCreate a new sh wrapped wsh descriptor with witness script …\nCreate a new sh wrapped wsh sortedmulti descriptor from …\nCreate new tr descriptor Errors when miniscript exceeds …\nCreate a new Wpkh descriptor Will return Err if …\nCreate a new wsh descriptor from witness script Errors …\nCreate a new wsh sorted multi descriptor Errors when …\nA node in the AST.\nOther top level checks that are context specific\nAttempt to parse a Script into Miniscript representation.\nParse a descriptor that may contain secret keys\nAttempt to parse an insane(scripts don’t clear sanity …\nAttempt to parse an miniscript with extra features that …\nGet the len of public key when serialized based on context …\nReturns a plan if the provided assets are sufficient to …\nReturns a plan if the provided assets are sufficient to …\nDescriptor policy\nWhether all spend paths of miniscript require a signature\nChecks whether the descriptor is safe.\nCheck whether the underlying Miniscript is safe under the …\nAttempts to produce a non-malleable satisfying witness and …\nAttempt to produce non-malleable satisfying witness for the\nAttempt to produce a malleable satisfying witness for the …\nComputes the scriptCode of a transaction output.\nComputes the scriptpubkey of the descriptor.\nSize, in bytes of the script-pubkey. If this Miniscript is …\nThe type of signature required for satisfaction\nSubstitutes raw public keys hashes with the public keys as …\nDescriptor templates\nSerialize a descriptor to string with its secret keys\nCheck top level consensus rules.\nCheck whether the top-level is type B\nConverts a descriptor using abstract keys to one using …\nTranslates a struct from one generic to another where the …\nThe correctness and malleability type information for the …\nComputes the scriptSig that will be in place for an …\nWhether the miniscript can exceed the resource …\nCompute the checksum of a descriptor, excludes any …\nCompute the checksum bytes of a descriptor, excludes any …\nError during base58 decoding\nBIP32 error\nErrors related to the parsing and usage of descriptors\nThe descriptor contains hardened derivation steps on …\nHex decoding error\nInvalid byte found in the descriptor checksum\nThe provided descriptor doesn’t match its checksum\nInvalid HD Key path, such as having a wildcard but a …\nError thrown while working with keys\nMiniscript error\nThe descriptor contains multipath keys\nKey-related error\nError while extracting and manipulating policies\nReturns the argument unchanged.\nCalls U::from(self).\nAbsolute timeclock timestamp\nCan not add to an item that is Satisfaction::None or …\nCan not add to an item that is …\nOptions to build the satisfaction field in the policy\nCan satisfy the policy item\nAn extra condition that must be satisfied but that is out …\nType for a map of sets of Condition items keyed by each set…\nECDSA Signature for a raw public key\nAn extended key fingerprint\nType for a map of folded sets of Condition items keyed by …\nSHA256 then RIPEMD160 preimage hash\nDouble SHA256 preimage hash\nIncompatible conditions (not currently used)\nIndex out of range for an item to satisfy a …\nCan not merge CSV or timelock values unless both are less …\nMulti-signature public keys with threshold count\nCannot satisfy or contribute to the policy item\nDon’t generate satisfaction field\nNot enough items are selected to satisfy a …\nOnly a partial satisfaction of some kind of threshold …\nCan reach the threshold of some kind of threshold policy\nA unique identifier for a key\nDescriptor spending policy\nErrors that can happen while extracting and manipulating …\nAnalyze the given PSBT to check for existing signatures\nLike Psbt variant and also check for expired timelocks\nA legacy public key\nRelative timelock locktime\nRIPEMD160 preimage hash\nRepresent if and how much a policy item is satisfied by …\nAn item that needs to be satisfied\nSchnorr Signature for a raw public key\nSHA256 preimage hash\nThreshold items with threshold count\nA x-only public key\nHow the wallet’s descriptor can satisfy this policy node\nOptional CheckSequenceVerify condition\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturn the conditions that are set by the spending policy …\nReturns a unique id for the SatisfiableItem\nIdentifier for this policy node\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns whether the SatisfiableItem is a leaf item\nReturns whether the Satisfaction is a leaf item\nReturns true if there are no extra conditions to verify\nType of this policy node\nReturn whether or not a specific path in the policy tree …\nHow much a given PSBT already satisfies this policy node …\nOptional timelock condition\nCurrent blockchain height\nThe highest confirmation height between the inputs CSV …\nGiven PSBT\nExtra conditions that also need to be satisfied\nExtra conditions that also need to be satisfied\nExtra conditions that also need to be satisfied\nThe items that can be satisfied by the descriptor or are …\nThe items that can be satisfied by the descriptor\nThreshold\nThreshold\nTotal number of items\nTotal number of items\nWhether the items are sorted in lexicographic order (used …\nWhether the items are sorted in lexicographic order (used …\nThe digest value\nThe digest value\nThe digest value\nThe digest value\nThe policy items\nThe raw public key or extended key fingerprint\nThe required threshold count\nThe required threshold count\nThe timelock value\nThe timelock value\nBIP44 template. Expands to pkh(key/44'/{0,1}'/0'/{0,1}/*)\nBIP44 public template. Expands to pkh(key/{0,1}/*)\nBIP49 template. Expands to …\nBIP49 public template. Expands to sh(wpkh(key/{0,1}/*))\nBIP84 template. Expands to wpkh(key/84'/{0,1}'/0'/{0,1}/*)\nBIP84 public template. Expands to wpkh(key/{0,1}/*)\nBIP86 template. Expands to tr(key/86'/{0,1}'/0'/{0,1}/*)\nBIP86 public template. Expands to tr(key/{0,1}/*)\nTrait for descriptor templates that can be built into a …\nType alias for the return type of DescriptorTemplate, …\nP2PKH template. Expands to a descriptor pkh(key)\nP2TR template. Expands to a descriptor tr(key)\nP2WPKH template. Expands to a descriptor wpkh(key)\nP2WPKH-P2SH template. Expands to a descriptor sh(wpkh(key))\nBuild the complete descriptor\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nBIP32 error\nTrait for keys that can be derived.\nContainer for public or secret keys\nThe descriptor pubkey, either a single pubkey or an xpub.\nThe descriptor secret key, either a single private key or …\nType specifying the amount of entropy required e.g. [u8;32]\nReturned error in case of failure\nTrait that adds extra useful methods to ScriptContexts\nEnum for extended keys that can be either xprv or xpub\nA bitcoin public key (compressed or uncompressed).\nTrait that allows generating a key with the default options\nTrait for keys that can be generated\nOutput of a GeneratableKey key generation\nTrait for objects that can be turned into a public or …\nThe key has an invalid checksum\nThe key is not valid for the given network\nThe key cannot exist in the given script context\nThe consensus key associated with the type. Must be a …\nErrors thrown while working with keys\nAlias type for a map of public key to secret key\nLegacy scripts\nCustom error message\nMiniscript error\nMultiple extended private keys.\nMultiple extended public keys.\nExtra options required by the generate_with_entropy\nA private extended key, aka an xprv\nOptions for generating a PrivateKey\nA public extended key, aka an xpub\nThe ScriptContext for Miniscript. Additional type …\nEnum representation of the known valid ScriptContexts\nSegwitv0 scripts\nSingle public key.\nSingle private key.\nA descriptor bitcoin::PrivateKey with optional origin …\nA descriptor SinglePubKey with optional origin information.\nSingle public key without any origin or range information.\nContents of a “sortedmulti” descriptor\nTaproot scripts\nSet of valid networks for a key\nAn xonly public key.\nExtended private key (xpriv).\nExtended public key (xpub).\nCreate a set containing mainnet, testnet, signet, and …\nReturns the ScriptContext as a ScriptContextEnum\nReplaces any wildcard (i.e. /*) in the key with a …\nAttempt to produce a witness template given the assets …\nDepending on script Context, some of the Terminals might …\nDepending on script Context, some of the script resource …\nCheck the consensus + policy(if not disabled) rules that …\nConsensus rules at the Miniscript satisfaction time. It is …\nPolicy rules at the Miniscript satisfaction time. It is …\nCheck the consensus + policy(if not disabled) rules …\nEach context has slightly different rules on what Pks are …\nDepending on ScriptContext, fragments can be malleable. …\nCheck whether the given satisfaction is valid under the …\nWhether the generated key should be “compressed” or not\nDeprecated name for Self::at_derivation_index.\nEncode as a Bitcoin script\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate an instance given a public key and a set of valid …\nCreate an instance given a secret key and a set of valid …\nParse an expression tree into a SortedMultiVec\nFull path, from the master key\nReturns a vector containing the full derivation paths from …\nGenerate a key given the options with a random entropy\nGenerate a key with the default options and a random …\nGenerate a key given the extra options and the entropy\nGenerate a key with the default options and a given entropy\nReturn whether or not the key contains the private data\nWhether or not the key has a wildcard\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nTurn the key into a DescriptorKey within the requested …\nConsume self and turn it into a DescriptorKey by adding …\nConsume self and turn it into an ExtendedKey\nConsumes self and returns the key\nGet as many keys as derivation paths in this key.\nGet as many keys as derivation paths in this key.\nTransform the ExtendedKey into an Xpriv for the given …\nTransform the ExtendedKey into an Xpub for the given …\nWhether or not the key has a wildcard\nReturns whether the script context is Legacy\nReturns whether the script context is …\nWhether or not this key has multiple derivation paths.\nWhether or not this key has multiple derivation paths.\nReturns whether the script context is Segwitv0\nReturns whether the script context is …\nReturns whether the script context is Tap, aka Taproot or …\nReturns whether the script context is …\nsignatures required\nThe public key.\nThe private key.\nCreate a set only containing mainnet\nThe fingerprint of the master key associated with this …\nDepending on script context, the size of a satifaction …\nMaximum size, in bytes, of a satisfying witness. In …\nMaximum number of witness elements used to satisfy the …\nCompute the intersection of two sets\nLocal helper function to display error messages with …\nCreate a new instance of SortedMultiVec given a list of …\nOrigin information (fingerprint and derivation path).\nOrigin information (fingerprint and derivation path).\nOther top level checks that are context specific\nOverride the computed set of valid networks\nGet the len of public key when serialized based on context …\npublic keys inside sorted Multi\nutility function to sanity a sorted multi vec\nAttempt to produce a satisfying witness for the witness …\nSize, in bytes of the script-pubkey. If this Miniscript is …\nThe type of signature required for satisfaction\nCreate Terminal::Multi containing sorted pubkeys\nCreate a set containing testnet and regtest\nReturns the public version of this key.\nCheck top level consensus rules.\nCheck whether the top-level is type B\nThis will panic if fpk returns an uncompressed key when …\nTrait to add functions to extract utxos and calculate fees.\nThe total transaction fee amount, sum of input amounts …\nThe transaction’s fee rate. This value will only be …\nGet the TxOut for the specified input index, if it doesn’…\nA derived address and the index it was found at. For …\nAn error that may occur when applying a block to Wallet.\nBalance, differentiated into various categories.\nOccurs when the update chain cannot connect with original …\nThe changes made to a wallet by applying an Update.\nThe error variant that occurs when the caller attempts to …\nThere was problem with the passed-in descriptor(s).\nThere was a problem with the passed-in descriptor(s).\nThere is a problem with the passed-in descriptor.\nAn error that may occur when inserting a transaction into …\nTrait to check if a value is below the dust limit. We are …\nThe error type when loading a Wallet from persistence.\nThe loaded desccriptor does not match what was provided.\nThe loaded genesis hash does not match what was provided.\nThe loaded network type does not match what was provided.\nData loaded from persistence is missing descriptor.\nData loaded from persistence is missing genesis hash.\nData loaded from persistence is missing network type.\nThe error type when constructing a fresh Wallet.\nError type for when we try load a Wallet from persistence …\nDatabase already has data.\nWallet not initialized, persistence backend is empty.\nWallet is not initialized, persistence backend is empty.\nWe were unable to write the wallet’s data to the …\nLoading data from the persistence backend failed.\nEither writing to or loading from the persistence backend …\nOccurs when the connected_to hash does not match the hash …\nAn update to Wallet.\nA Bitcoin wallet\nAdd an external signer\nAddress\nGet unbounded script pubkey iterators for both Internal …\nIntroduces a block of height to the wallet, and tries to …\nApplies relevant transactions from block of height to the …\nApply relevant unconfirmed transactions to the wallet.\nApplies an update to the wallet and stages the changes …\nBump the fee of a transaction previously created with this …\nStart building a transaction.\nCalculates the fee of a given transaction. Returns 0 if tx …\nCalculate the FeeRate for a given transaction.\nInforms the wallet that you no longer intend to broadcast …\nChanges to the LocalChain.\nUpdate for the wallet’s internal LocalChain.\nGet all the checkpoints the wallet is currently storing …\nCoin selection\nCommits all currently staged changed to the persistence …\nConfirmed and immediately spendable balance\nThe derivation index of this wallet. It will return None …\nFinds how the wallet derived the script pubkey spk.\nReturn the checksum of the public descriptor associated to …\nErrors that can be thrown by the Wallet\nWallet export\nFinalize a PSBT, i.e., for each input determine if …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturn the balance, separated into available, …\nReturns the descriptor used to create addresses for a …\nget the corresponding PSBT Input for a LocalUtxo\nGet the signers\nGet a single transaction from the wallet as a CanonicalTx …\nReturns the utxo owned by this wallet corresponding to …\nUpdate for the wallet’s internal TxGraph.\nAll coinbase outputs not yet matured\nChild index of this address\nChanges to IndexedTxGraph.\nAdd a new checkpoint to the wallet’s internal view of …\nAdd a transaction to the wallet’s internal view of the …\nInserts a TxOut at OutPoint into the wallet’s …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCheck whether or not a value is below dust limit\nReturn whether or not a script is part of this wallet …\nType of keychain\nIterator over all keychains in this wallet\nContains the last active derivation indices per keychain (K…\nReturns the latest checkpoint.\nList all relevant outputs (includes both spent and …\nReturn the list of unspent outputs of this wallet\nList addresses that are revealed but unused.\nLoad Wallet from the given persistence backend.\nGet a reference to the inner LocalChain.\nMarks an address used of the given keychain at index.\nGet the Bitcoin network the wallet is using.\nStores the network type of the transaction data.\nInitialize an empty Wallet.\nCreates a wallet that does not persist data.\nCreates a wallet that does not persist data, with a custom …\nEither loads Wallet from persistence, or initializes it if …\nEither loads Wallet from persistence, or initializes it if …\nInitialize an empty Wallet with a custom genesis hash.\nThe index of the next address that you would get if you …\nGet the next unused address for the given keychain, i.e. …\nPeek an address of the given keychain at index without …\nReturn the spending policies for the wallet’s descriptor\nReturn the “public” version of the wallet’s …\nReveal addresses up to and including the target index and …\nAttempt to reveal the next address of the given keychain.\nReturn the secp256k1 context used for all signing …\nCompute the tx’s sent and received Amounts.\nSign a transaction with all the wallet’s signers, in the …\nGeneralized signers\nGet a reference to the inner KeychainTxOutIndex.\nReturns the changes that will be committed with the next …\nCreate a `FullScanRequest for this wallet.\nCreate a partial SyncRequest for this wallet for all …\nGet the whole balance visible to the wallet.\nIterate over the transactions in the wallet.\nUnconfirmed UTXOs generated by a wallet tx\nGet sum of trusted_pending and confirmed coins.\nTransaction builder\nGet a reference to the inner TxGraph.\nGet an unbounded script pubkey iterator for the given …\nUndoes the effect of mark_used and returns whether the …\nUnconfirmed UTXOs received from an external wallet\nDeterministically generate a unique name given the …\nBlock hash of connected_to.\nExpected block hash of connected_to, as derived from block.\nThe internal chain’s tip height.\nThe introduced transaction’s confirmation height.\nThe expected genesis block hash.\nThe expected network type.\nThe block hash loaded from persistence.\nThe network type loaded from persistence.\nThe descriptor loaded from persistence.\nThe keychain of the descriptor not matching\nBranch and bound coin selection tries to avoid needing a …\nBranch and bound coin selection possible attempts with …\nBranch and bound coin selection\nIt’s possible to create spendable output from excess …\nTrait for generalized coin selection algorithms\nResult of a successful coin selection\nDefault coin selection algorithm used by TxBuilder if not …\nErrors that can be thrown by the coin_selection module\nRemaining amount after performing coin selection\nWallet’s UTXO set is not enough to cover recipient’s …\nSimple and dumb coin selection\nIt’s not possible to create spendable output from excess …\nOldestFirstCoinSelection always picks the utxo with the …\nPerform the coin selection\nDecide if change can be created\nRemaining amount after deducing fees and outgoing outputs\nTotal fee amount for the selected utxos in satoshis\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nThe total value of the inputs selected from the local …\nCreate new instance with target size for change output\nList of outputs selected for use as inputs\nThe total value of the inputs selected.\nSats available for spending\nSats needed for some transaction\nEffective amount available to create change after …\nThe calculated fee for the drain TxOut with the selected …\nThreshold to consider amount as dust for this particular …\nThe deducted change output fee\nExceeding amount of current selection over outgoing value …\nError returned from Wallet::build_fee_bump\nThe change_policy was set but the wallet does not have a …\nThere was an error with coin selection\nDescriptor key conversion error\nError returned from TxBuilder::finish\nThere was a problem with the descriptors passed in\nWhen bumping a tx the fee rate requested is lower than …\nNode doesn’t have data to estimate a fee rate\nWhen bumping a tx the absolute fee requested is lower than …\nWallet’s UTXO set is not enough to cover recipient’s …\nTrying to replace a tx that has a sequence >= 0xFFFFFFFE\nRequested LockTime is less than is required to spend from …\nMiniscript PSBT error\nErrors returned by miniscript when updating inconsistent …\nIn order to use the TxBuilder::add_global_xpubs option …\nMissing non_witness_utxo on foreign utxo for given OutPoint\nCannot build a tx without recipients\nmanually_selected_only option is selected but no utxo has …\nOutput created is under the dust limit, 546 satoshis\nReturn error type for …\nWe were unable to load wallet data from or write wallet …\nThere was a problem while extracting and manipulating …\nPartially signed bitcoin transaction error\nCannot enable RBF with a Sequence >= 0xFFFFFFFE\nCannot enable RBF with Sequence given a required OP_CSV\nSpending policy is not compatible with this KeychainKind\nHappens when trying to bump a transaction that is already …\nThrown when a tx is not found in the internal database\nHappens when trying to spend an UTXO that is not in the …\nHappens when trying to spend an UTXO that is not in the …\nReturn error type for PsbtExt::update_input_with_descriptor\nRequested invalid transaction version ‘0’\nRequested transaction version 1, but at least 2 is needed …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nSats available for spending\nRequired OP_CSV Sequence\nSats needed for some transaction\nGiven RBF Sequence\nRequested LockTime\nRequired LockTime\nRequired fee absolute value (satoshi)\nRequired fee rate\nStructure that contains the export of a wallet\nAlias for FullyNodedExport\nEarliest block to rescan when looking for the wallet’s …\nEarliest block to rescan when looking for the wallet’s …\nReturn the internal descriptor, if present\nReturn the external descriptor\nExport a wallet\nReturns the argument unchanged.\nCalls U::from(self).\nArbitrary label for the wallet\nArbitrary label for the wallet\nThe signer will sign all the leaves it has a key for.\nDummy identifier\nThe signer won’t sign the specified leaves.\nTo be used only by external libraries implementing …\nThe fingerprint of a BIP32 extended key\nThe signer won’t sign leaves other than the ones …\nInput index is out of range\nPSBT Input signer\nThe private key in use has the right fingerprint but …\nThe non_witness_utxo specified is invalid\nInvalid SIGHASH for the signing context in use\nLegacy context\nMiniscript PSBT error\nThe fingerprint and derivation path are missing from the …\nThe private key is missing for the required public key\nThe non_witness_utxo field of the transaction is required …\nThe witness_script field of the transaction is required to …\nThe witness_utxo field of the transaction is required to …\nThe psbt contains a non-SIGHASH_ALL sighash in one of its …\nThe signer won’t sign any leaf.\nBitcoin HASH160 (RIPEMD160 after SHA256) hash of an ECDSA …\nSegwit v0 context (BIP 143)\nError while computing the hash to sign\nOptions for a software signer\nCommon signer methods\nSigning context\nSigning error\nIdentifier of a signer in the SignersContainers. Used as a …\nDefines the order in which signers are called\nWrapper to pair a signer with its context\nContainer for multiple signers\nTaproot context (BIP 340)\nCustomize which taproot script-path leaves the signer …\nPSBT signer\nThe user canceled the operation\nAdds an external signer to the container for the specified …\nWhether the signer should use the sighash_type set in the …\nWhether we should grind ECDSA signature to ensure signing …\nCreate a map of public keys to secret keys\nWhether the wallet should assume a specific height has …\nBuild a new signer container from a KeyMap\nReturn the secret key for the signer\nFinds the signer with lowest ordering for a given id in …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturn the SignerId for this signer\nReturns the list of identifiers of all the signers in the …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCreate a wrapped signer from a signer and a context\nDefault constructor\nRemoves a signer from the container and returns it\nWhether to remove partial signatures from the PSBT inputs …\nWhether to remove taproot specific fields from the PSBT on …\nSign a single psbt input\nSign all the inputs of the psbt\nWhether we should try to sign a taproot transaction with …\nReturns the list of signers in the container, sorted by …\nSpecifies which Taproot script-spend leaves we should sign …\nWhether the signer should trust the witness_utxo, if the …\nWhether to try finalizing the PSBT after the inputs are …\nWhether the signer can sign for the internal key or not\nError returned from TxBuilder::add_foreign_utxo.\nError returned from TxBuilder::add_utxo and …\nError returned from TxBuilder::allow_shrinking\nBIP69 / Lexicographic\nMarker type to indicate the TxBuilder is being used to …\nUse both change and non-change outputs (default)\nOnly use non-change outputs (see …\nPolicy regarding the use of change outputs when creating a …\nMarker type to indicate the TxBuilder is being used to …\nRequested outpoint doesn’t exist in the tx (vout greater …\nForeign utxo outpoint txid does not match PSBT input txid\nScript/PubKey was not in the original transaction\nForeign utxo missing witness_utxo or non_witness_utxo\nOnly use change outputs (see TxBuilder::only_spend_change)\nRandomized (default)\nA transaction builder\nContext in which the TxBuilder is valid\nOrdering of the transaction’s inputs and outputs\nHappens when trying to spend an UTXO that is not in the …\nUnchanged\nAdd data as an output, using OP_RETURN\nAdd a foreign UTXO i.e. a UTXO not owned by this wallet.\nSame as add_foreign_utxo but allows to set the nSequence …\nFill-in the PSBT_GLOBAL_XPUB field with the extended keys …\nAdd a recipient to the internal list\nAdd a utxo to the internal list of unspendable utxos\nAdd a utxo to the internal list of utxos that must be spent\nAdd the list of outpoints to the internal list of UTXOs …\nSet whether or not the dust limit is checked.\nExplicitly tells the wallet that it is allowed to reduce …\nSet a specific ChangeSpendPolicy. See …\nChoose the coin selection algorithm\nSet the current blockchain height.\nDo not spend change outputs\nSets the address to drain excess coins to.\nSpend all the available inputs. This respects filters like …\nEnable signaling RBF\nEnable signaling RBF with a specific nSequence value\nSet an absolute fee The fee_absolute method refers to the …\nSet a custom fee rate.\nFinish building the transaction.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nFill-in the psbt::Output::redeem_script and …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nOnly spend utxos added by add_utxo.\nUse a specific nLockTime while creating the transaction\nOnly spend change outputs\nOnly Fill-in the psbt::Input::witness_utxo field when …\nChoose the ordering for inputs and outputs of the …\nSet the policy path to use while creating the transaction …\nReplace the recipients already added with a new list\nSign with a specific sig hash\nSort transaction inputs and outputs by TxOrdering variant\nReplace the internal list of unspendable utxos with a new …\nBuild a transaction with a specific version\nForeign UTXO outpoint\nPSBT input txid") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_bitcoind_rpc_polling/example_bitcoind_rpc_polling-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_bitcoind_rpc_polling/example_bitcoind_rpc_polling-desc-0-.js new file mode 100644 index 0000000000..39007d4352 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_bitcoind_rpc_polling/example_bitcoind_rpc_polling-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("example_bitcoind_rpc_polling", 0, "The mpsc channel bound for emissions from Emitter.\nDelay for committing to persistence.\nSync by having the emitter logic in a separate thread\nDelay between mempool emissions.\nDelay for printing status to stdout.\nSyncs local state with remote state via RPC (starting from …\nStarting block height to fallback to if no point of …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nRPC auth cookie file\nRPC auth password\nRPC auth username\nRPC URL") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_cli/example_cli-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_cli/example_cli-desc-0-.js new file mode 100644 index 0000000000..ec2bebd411 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_cli/example_cli-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("example_cli", 0, "Address generation and inspection.\nGet the wallet balance.\nGet last revealed address index for each keychain.\nThe initial state returned by init.\nList all addresses\nList transaction outputs.\nGet a new address regardless of the existing unused …\nGet the next unused address.\nSend coins to an address.\nTxOut related commands.\nArguments parsed by the cli.\nPersistence backend.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nTransaction index.\nKeychain-txout index.\nParses command line arguments and initializes all …\nInitial changeset.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nDescriptor keymap.\nList change addresses\nDestination address\nAmount to send in satoshis\nReturn only confirmed outputs.\nReturn only spent outputs.\nReturn only unconfirmed outputs.\nReturn only unspent outputs.") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_electrum/example_electrum-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_electrum/example_electrum-desc-0-.js new file mode 100644 index 0000000000..700ff460bc --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_electrum/example_electrum-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("example_electrum", 0, "Scans the addresses in the wallet using the electrum API.\nScans particular addresses using the electrum API.\nSet batch size for each script_history call to electrum …\nThe electrum url to use to connect to. If not provided it …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nScan every address that you have derived.\nWhen a gap this large has been found for a keychain, it …\nScan unconfirmed transactions for updates.\nScan all the unused addresses.\nScan unspent outpoints for spends or changes to …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_esplora/example_esplora-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_esplora/example_esplora-desc-0-.js new file mode 100644 index 0000000000..b1c7d3c632 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/example_esplora/example_esplora-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("example_esplora", 0, "Scans the addresses in the wallet using the esplora API.\nScan for particular addresses and unconfirmed transactions …\nThe esplora url endpoint to connect to e.g. …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nMax number of concurrent esplora server requests.\nScan every address that you have derived.\nWhen a gap this large has been found for a keychain, it …\nScan unconfirmed transactions for updates.\nScan all the unused addresses.\nScan unspent outpoints for spends or changes to …") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_electrum_example/wallet_electrum_example-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_electrum_example/wallet_electrum_example-desc-0-.js new file mode 100644 index 0000000000..ff164d5dc7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_electrum_example/wallet_electrum_example-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("wallet_electrum_example", 0, "") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_esplora_async/wallet_esplora_async-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_esplora_async/wallet_esplora_async-desc-0-.js new file mode 100644 index 0000000000..f705aff164 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_esplora_async/wallet_esplora_async-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("wallet_esplora_async", 0, "") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_esplora_blocking/wallet_esplora_blocking-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_esplora_blocking/wallet_esplora_blocking-desc-0-.js new file mode 100644 index 0000000000..030b7be792 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_esplora_blocking/wallet_esplora_blocking-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("wallet_esplora_blocking", 0, "") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_rpc/wallet_rpc-desc-0-.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_rpc/wallet_rpc-desc-0-.js new file mode 100644 index 0000000000..2dbb3342b0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/search.desc/wallet_rpc/wallet_rpc-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("wallet_rpc", 0, "Bitcoind RPC example using bdk_wallet::Wallet.\nWallet change descriptor\nWhere to store wallet data\nWallet descriptor\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nBitcoin network to connect to\nRPC auth cookie file\nRPC auth password\nRPC auth username\nEarliest block height to start sync from\nRPC URL") \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/settings.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/settings.html index 000377f46d..d75e264032 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/settings.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/settings.html @@ -1 +1 @@ -Rustdoc settings

    Rustdoc settings

    Back
    \ No newline at end of file +Settings

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/source-files.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/source-files.js deleted file mode 100644 index ca4e884b90..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/source-files.js +++ /dev/null @@ -1,22 +0,0 @@ -var sourcesIndex = JSON.parse('{\ -"bdk_bitcoind_rpc":["",[],["lib.rs"]],\ -"bdk_chain":["",[["keychain",[],["txout_index.rs"]]],["chain_data.rs","chain_oracle.rs","descriptor_ext.rs","example_utils.rs","indexed_tx_graph.rs","keychain.rs","lib.rs","local_chain.rs","spk_client.rs","spk_iter.rs","spk_txout_index.rs","tx_data_traits.rs","tx_graph.rs"]],\ -"bdk_coin_select":["",[],["bnb.rs","coin_selector.rs","lib.rs"]],\ -"bdk_electrum":["",[],["electrum_ext.rs","lib.rs"]],\ -"bdk_esplora":["",[],["async_ext.rs","blocking_ext.rs","lib.rs"]],\ -"bdk_file_store":["",[],["entry_iter.rs","lib.rs","store.rs"]],\ -"bdk_hwi":["",[],["lib.rs","signer.rs"]],\ -"bdk_persist":["",[],["lib.rs","persist.rs"]],\ -"bdk_testenv":["",[],["lib.rs"]],\ -"bdk_tmp_plan":["",[],["lib.rs","plan_impls.rs","requirements.rs","template.rs"]],\ -"bdk_wallet":["",[["descriptor",[],["checksum.rs","dsl.rs","error.rs","mod.rs","policy.rs","template.rs"]],["keys",[],["mod.rs"]],["psbt",[],["mod.rs"]],["wallet",[],["coin_selection.rs","error.rs","export.rs","mod.rs","signer.rs","tx_builder.rs","utils.rs"]]],["lib.rs","types.rs"]],\ -"example_bitcoind_rpc_polling":["",[],["main.rs"]],\ -"example_cli":["",[],["lib.rs"]],\ -"example_electrum":["",[],["main.rs"]],\ -"example_esplora":["",[],["main.rs"]],\ -"wallet_electrum_example":["",[],["main.rs"]],\ -"wallet_esplora_async":["",[],["main.rs"]],\ -"wallet_esplora_blocking":["",[],["main.rs"]],\ -"wallet_rpc":["",[],["main.rs"]]\ -}'); -createSourceSidebar(); diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src-files.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src-files.js new file mode 100644 index 0000000000..56d02409dd --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src-files.js @@ -0,0 +1,23 @@ +var srcIndex = new Map(JSON.parse('[\ +["bdk_bitcoind_rpc",["",[],["lib.rs"]]],\ +["bdk_chain",["",[["keychain",[],["txout_index.rs"]]],["chain_data.rs","chain_oracle.rs","descriptor_ext.rs","example_utils.rs","indexed_tx_graph.rs","keychain.rs","lib.rs","local_chain.rs","spk_client.rs","spk_iter.rs","spk_txout_index.rs","tx_data_traits.rs","tx_graph.rs"]]],\ +["bdk_coin_select",["",[],["bnb.rs","coin_selector.rs","lib.rs"]]],\ +["bdk_electrum",["",[],["electrum_ext.rs","lib.rs"]]],\ +["bdk_esplora",["",[],["async_ext.rs","blocking_ext.rs","lib.rs"]]],\ +["bdk_file_store",["",[],["entry_iter.rs","lib.rs","store.rs"]]],\ +["bdk_hwi",["",[],["lib.rs","signer.rs"]]],\ +["bdk_persist",["",[],["changeset.rs","lib.rs","persist.rs"]]],\ +["bdk_sqlite",["",[],["lib.rs","schema.rs","store.rs"]]],\ +["bdk_testenv",["",[],["lib.rs"]]],\ +["bdk_tmp_plan",["",[],["lib.rs","plan_impls.rs","requirements.rs","template.rs"]]],\ +["bdk_wallet",["",[["descriptor",[],["checksum.rs","dsl.rs","error.rs","mod.rs","policy.rs","template.rs"]],["keys",[],["mod.rs"]],["psbt",[],["mod.rs"]],["wallet",[],["coin_selection.rs","error.rs","export.rs","mod.rs","signer.rs","tx_builder.rs","utils.rs"]]],["lib.rs","types.rs"]]],\ +["example_bitcoind_rpc_polling",["",[],["main.rs"]]],\ +["example_cli",["",[],["lib.rs"]]],\ +["example_electrum",["",[],["main.rs"]]],\ +["example_esplora",["",[],["main.rs"]]],\ +["wallet_electrum_example",["",[],["main.rs"]]],\ +["wallet_esplora_async",["",[],["main.rs"]]],\ +["wallet_esplora_blocking",["",[],["main.rs"]]],\ +["wallet_rpc",["",[],["main.rs"]]]\ +]')); +createSrcSidebar(); diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_bitcoind_rpc/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_bitcoind_rpc/lib.rs.html index c1ca3ef764..1f748fd971 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_bitcoind_rpc/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_bitcoind_rpc/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -326,7 +326,7 @@
     326
     327
     328
    -
    //! This crate is used for emitting blockchain data from the `bitcoind` RPC interface. It does not
    +
    //! This crate is used for emitting blockchain data from the `bitcoind` RPC interface. It does not
     //! use the wallet RPC API, so this crate can be used with wallet-disabled Bitcoin Core nodes.
     //!
     //! [`Emitter`] is the main structure which sources blockchain data from [`bitcoincore_rpc::Client`].
    @@ -347,8 +347,8 @@
     /// Refer to [module-level documentation] for more.
     ///
     /// [module-level documentation]: crate
    -pub struct Emitter<'c, C> {
    -    client: &'c C,
    +pub struct Emitter<'c, C> {
    +    client: &'c C,
         start_height: u32,
     
         /// The checkpoint of the last-emitted block that is in the best chain. If it is later found
    @@ -356,7 +356,7 @@
         last_cp: CheckPoint,
     
         /// The block result returned from rpc of the last-emitted block. As this result contains the
    -    /// next block's block hash (which we use to fetch the next block), we set this to `None`
    +    /// next block's block hash (which we use to fetch the next block), we set this to `None`
         /// whenever there are no more blocks, or the next block is no longer in the best chain. This
         /// gives us an opportunity to re-fetch this result.
         last_block: Option<bitcoincore_rpc_json::GetBlockResult>,
    @@ -370,7 +370,7 @@
         last_mempool_tip: Option<u32>,
     }
     
    -impl<'c, C: bitcoincore_rpc::RpcApi> Emitter<'c, C> {
    +impl<'c, C: bitcoincore_rpc::RpcApi> Emitter<'c, C> {
         /// Construct a new [`Emitter`].
         ///
         /// `last_cp` informs the emitter of the chain we are starting off with. This way, the emitter
    @@ -378,7 +378,7 @@
         ///
         /// `start_height` starts emission from a given height (if there are no conflicts with the
         /// original chain).
    -    pub fn new(client: &'c C, last_cp: CheckPoint, start_height: u32) -> Self {
    +    pub fn new(client: &'c C, last_cp: CheckPoint, start_height: u32) -> Self {
             Self {
                 client,
                 start_height,
    @@ -391,7 +391,7 @@
     
         /// Emit mempool transactions, alongside their first-seen unix timestamps.
         ///
    -    /// This method emits each transaction only once, unless we cannot guarantee the transaction's
    +    /// This method emits each transaction only once, unless we cannot guarantee the transaction's
         /// ancestors are already emitted.
         ///
         /// To understand why, consider a receiver which filters transactions based on whether it
    @@ -410,7 +410,7 @@
                 .unwrap_or(self.start_height.saturating_sub(1));
     
             // Mempool txs come with a timestamp of when the tx is introduced to the mempool. We keep
    -        // track of the latest mempool tx's timestamp to determine whether we have seen a tx
    +        // track of the latest mempool tx's timestamp to determine whether we have seen a tx
             // before. `prev_mempool_time` is the previous timestamp and `last_time` records what will
             // be the new latest timestamp.
             let prev_mempool_time = self.last_mempool_time;
    @@ -518,7 +518,7 @@
         /// Fetched block is not in the best chain.
         BlockNotInBestChain,
         AgreementFound(bitcoincore_rpc_json::GetBlockResult, CheckPoint),
    -    /// Force the genesis checkpoint down the receiver's throat.
    +    /// Force the genesis checkpoint down the receiver's throat.
         AgreementPointNotFound(BlockHash),
     }
     
    @@ -561,7 +561,7 @@
                     if cp.height() > 0 {
                         continue;
                     }
    -                // if we can't find genesis block, we can't create an update that connects
    +                // if we can't find genesis block, we can't create an update that connects
                     break;
                 }
                 Err(e) => return Err(e),
    @@ -594,7 +594,7 @@
                         .last_cp
                         .clone()
                         .push(BlockId { height, hash })
    -                    .expect("must push");
    +                    .expect("must push");
                     emitter.last_cp = new_cp.clone();
                     emitter.last_block = Some(res);
                     return Ok(Some((new_cp, item)));
    @@ -637,7 +637,7 @@
     
     /// Extends [`bitcoincore_rpc::Error`].
     pub trait BitcoindRpcErrorExt {
    -    /// Returns whether the error is a "not found" error.
    +    /// Returns whether the error is a "not found" error.
         ///
         /// This is useful since [`Emitter`] emits [`Result<_, bitcoincore_rpc::Error>`]s as
         /// [`Iterator::Item`].
    @@ -654,5 +654,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/chain_data.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/chain_data.rs.html index 2423326374..d915cb20a2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/chain_data.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/chain_data.rs.html @@ -1,4 +1,4 @@ -chain_data.rs - source
    1
    +chain_data.rs - source
    1
     2
     3
     4
    @@ -330,7 +330,7 @@
     330
     331
     332
    -
    use bitcoin::{hashes::Hash, BlockHash, OutPoint, TxOut, Txid};
    +
    use bitcoin::{hashes::Hash, BlockHash, OutPoint, TxOut, Txid};
     
     use crate::{Anchor, AnchorFromBlockPosition, COINBASE_MATURITY};
     
    @@ -375,9 +375,9 @@
     /// Block height and timestamp at which a transaction is confirmed.
     #[derive(Debug, Clone, PartialEq, Eq, Copy, PartialOrd, Ord, core::hash::Hash)]
     #[cfg_attr(
    -    feature = "serde",
    +    feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
    -    serde(crate = "serde_crate")
    +    serde(crate = "serde_crate")
     )]
     pub enum ConfirmationTime {
         /// The transaction is confirmed
    @@ -424,9 +424,9 @@
     /// block and anchor block are the same block.
     #[derive(Debug, Clone, PartialEq, Eq, Copy, PartialOrd, Ord, core::hash::Hash)]
     #[cfg_attr(
    -    feature = "serde",
    +    feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
    -    serde(crate = "serde_crate")
    +    serde(crate = "serde_crate")
     )]
     pub struct BlockId {
         /// The height of the block.
    @@ -484,9 +484,9 @@
     /// Refer to [`Anchor`] for more details.
     #[derive(Debug, Default, Clone, PartialEq, Eq, Copy, PartialOrd, Ord, core::hash::Hash)]
     #[cfg_attr(
    -    feature = "serde",
    +    feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
    -    serde(crate = "serde_crate")
    +    serde(crate = "serde_crate")
     )]
     pub struct ConfirmationHeightAnchor {
         /// The exact confirmation height of the transaction.
    @@ -524,9 +524,9 @@
     /// Refer to [`Anchor`] for more details.
     #[derive(Debug, Default, Clone, PartialEq, Eq, Copy, PartialOrd, Ord, core::hash::Hash)]
     #[cfg_attr(
    -    feature = "serde",
    +    feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
    -    serde(crate = "serde_crate")
    +    serde(crate = "serde_crate")
     )]
     pub struct ConfirmationTimeHeightAnchor {
         /// The confirmation height of the transaction being anchored.
    @@ -585,7 +585,7 @@
                 let tx_height = match &self.chain_position {
                     ChainPosition::Confirmed(anchor) => anchor.confirmation_height_upper_bound(),
                     ChainPosition::Unconfirmed(_) => {
    -                    debug_assert!(false, "coinbase tx can never be unconfirmed");
    +                    debug_assert!(false, "coinbase tx can never be unconfirmed");
                         return false;
                     }
                 };
    @@ -654,13 +654,12 @@
                 },
             });
     
    -        assert!(unconf2 > unconf1, "higher last_seen means higher ord");
    -        assert!(unconf1 > conf1, "unconfirmed is higher ord than confirmed");
    +        assert!(unconf2 > unconf1, "higher last_seen means higher ord");
    +        assert!(unconf1 > conf1, "unconfirmed is higher ord than confirmed");
             assert!(
                 conf2 > conf1,
    -            "confirmation_height is higher then it should be higher ord"
    +            "confirmation_height is higher then it should be higher ord"
             );
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/chain_oracle.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/chain_oracle.rs.html index 320907a87f..2cbfdc6b39 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/chain_oracle.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/chain_oracle.rs.html @@ -1,4 +1,4 @@ -chain_oracle.rs - source
    1
    +chain_oracle.rs - source
    1
     2
     3
     4
    @@ -23,7 +23,7 @@
     23
     24
     25
    -
    use crate::BlockId;
    +
    use crate::BlockId;
     
     /// Represents a service that tracks the blockchain.
     ///
    @@ -45,8 +45,7 @@
             chain_tip: BlockId,
         ) -> Result<Option<bool>, Self::Error>;
     
    -    /// Get the best chain's chain tip.
    +    /// Get the best chain's chain tip.
         fn get_chain_tip(&self) -> Result<BlockId, Self::Error>;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/descriptor_ext.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/descriptor_ext.rs.html index 10c8da4d6a..d8d9af7f55 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/descriptor_ext.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/descriptor_ext.rs.html @@ -1,4 +1,4 @@ -descriptor_ext.rs - source
    1
    +descriptor_ext.rs - source
    1
     2
     3
     4
    @@ -42,13 +42,13 @@
     42
     43
     44
    -
    use crate::{
    +
    use crate::{
         alloc::{string::ToString, vec::Vec},
         miniscript::{Descriptor, DescriptorPublicKey},
     };
     use bitcoin::hashes::{hash_newtype, sha256, Hash};
     
    -hash_newtype! {
    +hash_newtype! {
         /// Represents the ID of a descriptor, defined as the sha256 hash of
         /// the descriptor string, checksum excluded.
         ///
    @@ -73,7 +73,7 @@
     impl DescriptorExt for Descriptor<DescriptorPublicKey> {
         fn dust_value(&self) -> u64 {
             self.at_derivation_index(0)
    -            .expect("descriptor can't have hardened derivation")
    +            .expect("descriptor can't have hardened derivation")
                 .script_pubkey()
                 .dust_value()
                 .to_sat()
    @@ -81,10 +81,9 @@
     
         fn descriptor_id(&self) -> DescriptorId {
             let desc = self.to_string();
    -        let desc_without_checksum = desc.split('#').next().expect("Must be here");
    +        let desc_without_checksum = desc.split('#').next().expect("Must be here");
             let descriptor_bytes = <Vec<u8>>::from(desc_without_checksum.as_bytes());
             DescriptorId(sha256::Hash::hash(&descriptor_bytes))
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/example_utils.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/example_utils.rs.html index 2f323d0436..cc5ecd1c89 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/example_utils.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/example_utils.rs.html @@ -1,4 +1,4 @@ -example_utils.rs - source
    1
    +example_utils.rs - source
    1
     2
     3
     4
    @@ -28,7 +28,7 @@
     28
     29
     30
    -
    #![allow(unused)]
    +
    #![allow(unused)]
     use alloc::vec::Vec;
     use bitcoin::{
         consensus,
    @@ -38,14 +38,14 @@
     
     use crate::BlockId;
     
    -pub const RAW_TX_1: &str = "0200000000010116d6174da7183d70d0a7d4dc314d517a7d135db79ad63515028b293a76f4f9d10000000000feffffff023a21fc8350060000160014531c405e1881ef192294b8813631e258bf98ea7a1027000000000000225120a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c024730440220591b1a172a122da49ba79a3e79f98aaa03fd7a372f9760da18890b6a327e6010022013e82319231da6c99abf8123d7c07e13cf9bd8d76e113e18dc452e5024db156d012102318a2d558b2936c52e320decd6d92a88d7f530be91b6fe0af5caf41661e77da3ef2e0100";
    -pub const RAW_TX_2: &str = "02000000000101a688607020cfae91a61e7c516b5ef1264d5d77f17200c3866826c6c808ebf1620000000000feffffff021027000000000000225120a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c20fd48ff530600001600146886c525e41d4522042bd0b159dfbade2504a6bb024730440220740ff7e665cd20565d4296b549df8d26b941be3f1e3af89a0b60e50c0dbeb69a02206213ab7030cf6edc6c90d4ccf33010644261e029950a688dc0b1a9ebe6ddcc5a012102f2ac6b396a97853cb6cd62242c8ae4842024742074475023532a51e9c53194253e760100";
    -pub const RAW_TX_3: &str = "0200000000010135d67ee47b557e68b8c6223958f597381965ed719f1207ee2b9e20432a24a5dc0100000000feffffff021027000000000000225120a82f29944d65b86ae6b5e5cc75e294ead6c59391a1edc5e016e3498c67fc7bbb62215a5055060000160014070df7671dea67a50c4799a744b5c9be8f4bac690247304402207ebf8d29f71fd03e7e6977b3ea78ca5fcc5c49a42ae822348fc401862fdd766c02201d7e4ff0684ecb008b6142f36ead1b0b4d615524c4f58c261113d361f4427e25012103e6a75e2fab85e5ecad641afc4ffba7222f998649d9f18cac92f0fcc8618883b3ee760100";
    -pub const RAW_TX_4: &str = "02000000000101d00e8f76ed313e19b339ee293c0f52b0325c95e24c8f3966fa353fb2bedbcf580100000000feffffff021027000000000000225120882d74e5d0572d5a816cef0041a96b6c1de832f6f9676d9605c44d5e9a97d3dc9cda55fe53060000160014852b5864b8edd42fab4060c87f818e50780865ff0247304402201dccbb9bed7fba924b6d249c5837cc9b37470c0e3d8fbea77cb59baba3efe6fa0220700cc170916913b9bfc2bc0fefb6af776e8b542c561702f136cddc1c7aa43141012103acec3fc79dbbca745815c2a807dc4e81010c80e308e84913f59cb42a275dad97f3760100";
    +pub const RAW_TX_1: &str = "0200000000010116d6174da7183d70d0a7d4dc314d517a7d135db79ad63515028b293a76f4f9d10000000000feffffff023a21fc8350060000160014531c405e1881ef192294b8813631e258bf98ea7a1027000000000000225120a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c024730440220591b1a172a122da49ba79a3e79f98aaa03fd7a372f9760da18890b6a327e6010022013e82319231da6c99abf8123d7c07e13cf9bd8d76e113e18dc452e5024db156d012102318a2d558b2936c52e320decd6d92a88d7f530be91b6fe0af5caf41661e77da3ef2e0100";
    +pub const RAW_TX_2: &str = "02000000000101a688607020cfae91a61e7c516b5ef1264d5d77f17200c3866826c6c808ebf1620000000000feffffff021027000000000000225120a60869f0dbcf1dc659c9cecbaf8050135ea9e8cdc487053f1dc6880949dc684c20fd48ff530600001600146886c525e41d4522042bd0b159dfbade2504a6bb024730440220740ff7e665cd20565d4296b549df8d26b941be3f1e3af89a0b60e50c0dbeb69a02206213ab7030cf6edc6c90d4ccf33010644261e029950a688dc0b1a9ebe6ddcc5a012102f2ac6b396a97853cb6cd62242c8ae4842024742074475023532a51e9c53194253e760100";
    +pub const RAW_TX_3: &str = "0200000000010135d67ee47b557e68b8c6223958f597381965ed719f1207ee2b9e20432a24a5dc0100000000feffffff021027000000000000225120a82f29944d65b86ae6b5e5cc75e294ead6c59391a1edc5e016e3498c67fc7bbb62215a5055060000160014070df7671dea67a50c4799a744b5c9be8f4bac690247304402207ebf8d29f71fd03e7e6977b3ea78ca5fcc5c49a42ae822348fc401862fdd766c02201d7e4ff0684ecb008b6142f36ead1b0b4d615524c4f58c261113d361f4427e25012103e6a75e2fab85e5ecad641afc4ffba7222f998649d9f18cac92f0fcc8618883b3ee760100";
    +pub const RAW_TX_4: &str = "02000000000101d00e8f76ed313e19b339ee293c0f52b0325c95e24c8f3966fa353fb2bedbcf580100000000feffffff021027000000000000225120882d74e5d0572d5a816cef0041a96b6c1de832f6f9676d9605c44d5e9a97d3dc9cda55fe53060000160014852b5864b8edd42fab4060c87f818e50780865ff0247304402201dccbb9bed7fba924b6d249c5837cc9b37470c0e3d8fbea77cb59baba3efe6fa0220700cc170916913b9bfc2bc0fefb6af776e8b542c561702f136cddc1c7aa43141012103acec3fc79dbbca745815c2a807dc4e81010c80e308e84913f59cb42a275dad97f3760100";
     
     pub fn tx_from_hex(s: &str) -> Transaction {
    -    let raw = Vec::from_hex(s).expect("data must be in hex");
    -    consensus::deserialize(raw.as_slice()).expect("must deserialize")
    +    let raw = Vec::from_hex(s).expect("data must be in hex");
    +    consensus::deserialize(raw.as_slice()).expect("must deserialize")
     }
     
     pub fn new_hash<H: Hash>(s: &str) -> H {
    @@ -58,5 +58,4 @@
             hash: new_hash(hash),
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html index ce18ece41a..05297f2d48 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/indexed_tx_graph.rs.html @@ -1,4 +1,4 @@ -indexed_tx_graph.rs - source
    1
    +indexed_tx_graph.rs - source
    1
     2
     3
     4
    @@ -352,7 +352,7 @@
     352
     353
     354
    -
    //! Contains the [`IndexedTxGraph`] and associated types. Refer to the
    +
    //! Contains the [`IndexedTxGraph`] and associated types. Refer to the
     //! [`IndexedTxGraph`] documentation for more.
     use alloc::vec::Vec;
     use bitcoin::{Block, OutPoint, Transaction, TxOut, Txid};
    @@ -477,13 +477,13 @@
         ///
         /// Relevancy is determined by the [`Indexer::is_tx_relevant`] implementation of `I`. Irrelevant
         /// transactions in `txs` will be ignored. `txs` do not need to be in topological order.
    -    pub fn batch_insert_relevant<'t>(
    +    pub fn batch_insert_relevant<'t>(
             &mut self,
    -        txs: impl IntoIterator<Item = (&'t Transaction, impl IntoIterator<Item = A>)>,
    +        txs: impl IntoIterator<Item = (&'t Transaction, impl IntoIterator<Item = A>)>,
         ) -> ChangeSet<A, I::ChangeSet> {
             // The algorithm below allows for non-topologically ordered transactions by using two loops.
             // This is achieved by:
    -        // 1. insert all txs into the index. If they are irrelevant then that's fine it will just
    +        // 1. insert all txs into the index. If they are irrelevant then that's fine it will just
             //    not store anything about them.
             // 2. decide whether to insert them into the graph depending on whether `is_tx_relevant`
             //    returns true or not. (in a second loop).
    @@ -516,13 +516,13 @@
         /// Items of `txs` are tuples containing the transaction and a *last seen* timestamp. The
         /// *last seen* communicates when the transaction is last seen in the mempool which is used for
         /// conflict-resolution in [`TxGraph`] (refer to [`TxGraph::insert_seen_at`] for details).
    -    pub fn batch_insert_relevant_unconfirmed<'t>(
    +    pub fn batch_insert_relevant_unconfirmed<'t>(
             &mut self,
    -        unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)>,
    +        unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)>,
         ) -> ChangeSet<A, I::ChangeSet> {
             // The algorithm below allows for non-topologically ordered transactions by using two loops.
             // This is achieved by:
    -        // 1. insert all txs into the index. If they are irrelevant then that's fine it will just
    +        // 1. insert all txs into the index. If they are irrelevant then that's fine it will just
             //    not store anything about them.
             // 2. decide whether to insert them into the graph depending on whether `is_tx_relevant`
             //    returns true or not. (in a second loop).
    @@ -570,7 +570,7 @@
         /// Batch insert all transactions of the given `block` of `height`, filtering out those that are
         /// irrelevant.
         ///
    -    /// Each inserted transaction's anchor will be constructed from
    +    /// Each inserted transaction's anchor will be constructed from
         /// [`AnchorFromBlockPosition::from_block_position`].
         ///
         /// Relevancy is determined by the internal [`Indexer::is_tx_relevant`] implementation of `I`.
    @@ -601,7 +601,7 @@
     
         /// Batch insert all transactions of the given `block` of `height`.
         ///
    -    /// Each inserted transaction's anchor will be constructed from
    +    /// Each inserted transaction's anchor will be constructed from
         /// [`AnchorFromBlockPosition::from_block_position`].
         ///
         /// To only insert relevant transactions, use [`apply_block_relevant`] instead.
    @@ -626,13 +626,13 @@
     /// Represents changes to an [`IndexedTxGraph`].
     #[derive(Clone, Debug, PartialEq)]
     #[cfg_attr(
    -    feature = "serde",
    +    feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
         serde(
    -        crate = "serde_crate",
    +        crate = "serde_crate",
             bound(
    -            deserialize = "A: Ord + serde::Deserialize<'de>, IA: serde::Deserialize<'de>",
    -            serialize = "A: Ord + serde::Serialize, IA: serde::Serialize"
    +            deserialize = "A: Ord + serde::Deserialize<'de>, IA: serde::Deserialize<'de>",
    +            serialize = "A: Ord + serde::Serialize, IA: serde::Serialize"
             )
         )
     )]
    @@ -673,7 +673,7 @@
         }
     }
     
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     impl<A, K> From<crate::keychain::ChangeSet<K>> for ChangeSet<A, crate::keychain::ChangeSet<K>> {
         fn from(indexer: crate::keychain::ChangeSet<K>) -> Self {
             Self {
    @@ -686,9 +686,9 @@
     /// Utilities for indexing transaction data.
     ///
     /// Types which implement this trait can be used to construct an [`IndexedTxGraph`].
    -/// This trait's methods should rarely be called directly.
    +/// This trait's methods should rarely be called directly.
     pub trait Indexer {
    -    /// The resultant "changeset" when new transaction data is indexed.
    +    /// The resultant "changeset" when new transaction data is indexed.
         type ChangeSet;
     
         /// Scan and index the given `outpoint` and `txout`.
    @@ -706,5 +706,4 @@
         /// Determines whether the transaction should be included in the index.
         fn is_tx_relevant(&self, tx: &Transaction) -> bool;
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain.rs.html index ecfd61cbd4..7bc85dbfb0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain.rs.html @@ -1,4 +1,4 @@ -keychain.rs - source
    1
    +keychain.rs - source
    1
     2
     3
     4
    @@ -71,30 +71,30 @@
     71
     72
     73
    -
    //! Module for keychain related structures.
    +
    //! Module for keychain related structures.
     //!
     //! A keychain here is a set of application-defined indexes for a miniscript descriptor where we can
    -//! derive script pubkeys at a particular derivation index. The application's index is simply
    +//! derive script pubkeys at a particular derivation index. The application's index is simply
     //! anything that implements `Ord`.
     //!
     //! [`KeychainTxOutIndex`] indexes script pubkeys of keychains and scans in relevant outpoints (that
     //! has a `txout` containing an indexed script pubkey). Internally, this uses [`SpkTxOutIndex`], but
    -//! also maintains "revealed" and "lookahead" index counts per keychain.
    +//! also maintains "revealed" and "lookahead" index counts per keychain.
     //!
     //! [`SpkTxOutIndex`]: crate::SpkTxOutIndex
     
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     mod txout_index;
     use bitcoin::Amount;
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     pub use txout_index::*;
     
     /// Balance, differentiated into various categories.
     #[derive(Debug, PartialEq, Eq, Clone, Default)]
     #[cfg_attr(
    -    feature = "serde",
    +    feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
    -    serde(crate = "serde_crate",)
    +    serde(crate = "serde_crate",)
     )]
     pub struct Balance {
         /// All coinbase outputs not yet matured
    @@ -110,7 +110,7 @@
     impl Balance {
         /// Get sum of trusted_pending and confirmed coins.
         ///
    -    /// This is the balance you can spend right now that shouldn't get cancelled via another party
    +    /// This is the balance you can spend right now that shouldn't get cancelled via another party
         /// double spending it.
         pub fn trusted_spendable(&self) -> Amount {
             self.confirmed + self.trusted_pending
    @@ -123,10 +123,10 @@
     }
     
     impl core::fmt::Display for Balance {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             write!(
                 f,
    -            "{{ immature: {}, trusted_pending: {}, untrusted_pending: {}, confirmed: {} }}",
    +            "{{ immature: {}, trusted_pending: {}, untrusted_pending: {}, confirmed: {} }}",
                 self.immature, self.trusted_pending, self.untrusted_pending, self.confirmed
             )
         }
    @@ -144,5 +144,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain/txout_index.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain/txout_index.rs.html index 0de38aae3a..493e0df733 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain/txout_index.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/keychain/txout_index.rs.html @@ -1,4 +1,4 @@ -txout_index.rs - source
    1
    +txout_index.rs - source
    1
     2
     3
     4
    @@ -969,7 +969,7 @@
     969
     970
     971
    -
    use crate::{
    +
    use crate::{
         collections::*,
         indexed_tx_graph::Indexer,
         miniscript::{Descriptor, DescriptorPublicKey},
    @@ -994,13 +994,13 @@
     /// [`apply_changeset`]: crate::keychain::KeychainTxOutIndex::apply_changeset
     #[derive(Clone, Debug, PartialEq)]
     #[cfg_attr(
    -    feature = "serde",
    +    feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
         serde(
    -        crate = "serde_crate",
    +        crate = "serde_crate",
             bound(
    -            deserialize = "K: Ord + serde::Deserialize<'de>",
    -            serialize = "K: Ord + serde::Serialize"
    +            deserialize = "K: Ord + serde::Deserialize<'de>",
    +            serialize = "K: Ord + serde::Serialize"
             )
         )
     )]
    @@ -1019,7 +1019,7 @@
         /// If the keychain already exist with a different descriptor, we overwrite the old descriptor.
         ///
         /// For each `last_revealed` in the given [`ChangeSet`]:
    -    /// If the keychain already exists, increase the index when the other's index > self's index.
    +    /// If the keychain already exists, increase the index when the other's index > self's index.
         fn append(&mut self, other: Self) {
             // We use `extend` instead of `BTreeMap::append` due to performance issues with `append`.
             // Refer to https://github.com/rust-lang/rust/issues/34666#issuecomment-675658420
    @@ -1121,9 +1121,9 @@
     /// let mut txout_index = KeychainTxOutIndex::<MyKeychain>::default();
     ///
     /// # let secp = bdk_chain::bitcoin::secp256k1::Secp256k1::signing_only();
    -/// # let (external_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/0/*)").unwrap();
    -/// # let (internal_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/*)").unwrap();
    -/// # let (descriptor_42, _) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/2/*)").unwrap();
    +/// # let (external_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/0/*)").unwrap();
    +/// # let (internal_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/*)").unwrap();
    +/// # let (descriptor_42, _) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/2/*)").unwrap();
     /// let _ = txout_index.insert_descriptor(MyKeychain::External, external_descriptor);
     /// let _ = txout_index.insert_descriptor(MyKeychain::Internal, internal_descriptor);
     /// let _ = txout_index.insert_descriptor(MyKeychain::MyAppUser { user_id: 42 }, descriptor_42);
    @@ -1187,8 +1187,8 @@
         // keychain with it.
         descriptor_ids_to_keychain_set: HashMap<DescriptorId, BTreeSet<K>>,
         // descriptor_id -> descriptor map
    -    // This is a "monotone" map, meaning that its size keeps growing, i.e., we never delete
    -    // descriptors from it. This is useful for revealing spks for descriptors that don't have
    +    // This is a "monotone" map, meaning that its size keeps growing, i.e., we never delete
    +    // descriptors from it. This is useful for revealing spks for descriptors that don't have
         // keychains associated.
         descriptor_ids_to_descriptors: BTreeMap<DescriptorId, Descriptor<DescriptorPublicKey>>,
         // last revealed indexes
    @@ -1209,10 +1209,10 @@
         fn index_txout(&mut self, outpoint: OutPoint, txout: &TxOut) -> Self::ChangeSet {
             match self.inner.scan_txout(outpoint, txout).cloned() {
                 Some((descriptor_id, index)) => {
    -                // We want to reveal spks for descriptors that aren't tracked by any keychain, and
    +                // We want to reveal spks for descriptors that aren't tracked by any keychain, and
                     // so we call reveal with descriptor_id
                     let (_, changeset) = self.reveal_to_target_with_id(descriptor_id, index)
    -                    .expect("descriptors are added in a monotone manner, there cannot be a descriptor id with no corresponding descriptor");
    +                    .expect("descriptors are added in a monotone manner, there cannot be a descriptor id with no corresponding descriptor");
                     changeset
                 }
                 None => super::ChangeSet::default(),
    @@ -1286,7 +1286,7 @@
         }
     
         /// Get the set of indexed outpoints, corresponding to tracked keychains.
    -    pub fn outpoints(&self) -> impl DoubleEndedIterator<Item = ((K, u32), OutPoint)> + '_ {
    +    pub fn outpoints(&self) -> impl DoubleEndedIterator<Item = ((K, u32), OutPoint)> + '_ {
             self.inner
                 .outpoints()
                 .iter()
    @@ -1297,7 +1297,7 @@
         }
     
         /// Iterate over known txouts that spend to tracked script pubkeys.
    -    pub fn txouts(&self) -> impl DoubleEndedIterator<Item = (K, u32, OutPoint, &TxOut)> + '_ {
    +    pub fn txouts(&self) -> impl DoubleEndedIterator<Item = (K, u32, OutPoint, &TxOut)> + '_ {
             self.inner.txouts().filter_map(|((desc_id, i), op, txo)| {
                 let keychain = self.keychain_of_desc_id(desc_id)?;
                 Some((keychain.clone(), *i, op, txo))
    @@ -1320,7 +1320,7 @@
         /// Return the [`TxOut`] of `outpoint` if it has been indexed, and if it corresponds to a
         /// tracked keychain.
         ///
    -    /// The associated keychain and keychain index of the txout's spk is also returned.
    +    /// The associated keychain and keychain index of the txout's spk is also returned.
         ///
         /// This calls [`SpkTxOutIndex::txout`] internally.
         pub fn txout(&self, outpoint: OutPoint) -> Option<(K, u32, &TxOut)> {
    @@ -1329,7 +1329,7 @@
             Some((keychain.clone(), *index, txo))
         }
     
    -    /// Return the script that exists under the given `keychain`'s `index`.
    +    /// Return the script that exists under the given `keychain`'s `index`.
         ///
         /// This calls [`SpkTxOutIndex::spk_at_index`] internally.
         pub fn spk_at_index(&self, keychain: K, index: u32) -> Option<&Script> {
    @@ -1346,9 +1346,9 @@
             Some((keychain.clone(), *last_index))
         }
     
    -    /// Returns whether the spk under the `keychain`'s `index` has been used.
    +    /// Returns whether the spk under the `keychain`'s `index` has been used.
         ///
    -    /// Here, "unused" means that after the script pubkey was stored in the index, the index has
    +    /// Here, "unused" means that after the script pubkey was stored in the index, the index has
         /// never scanned a transaction output with it.
         ///
         /// This calls [`SpkTxOutIndex::is_used`] internally.
    @@ -1360,7 +1360,7 @@
             }
         }
     
    -    /// Marks the script pubkey at `index` as used even though the tracker hasn't seen an output
    +    /// Marks the script pubkey at `index` as used even though the tracker hasn't seen an output
         /// with it.
         ///
         /// This only has an effect when the `index` had been added to `self` already and was unused.
    @@ -1369,7 +1369,7 @@
         /// marked as used. Returns false either when there is no descriptor under the given
         /// keychain, or when the spk is already marked as used.
         ///
    -    /// This is useful when you want to reserve a script pubkey for something but don't want to add
    +    /// This is useful when you want to reserve a script pubkey for something but don't want to add
         /// the transaction output using it to the index yet. Other callers will consider `index` on
         /// `keychain` used until you call [`unmark_used`].
         ///
    @@ -1431,7 +1431,7 @@
         /// Return the map of the keychain to descriptors.
         pub fn keychains(
             &self,
    -    ) -> impl DoubleEndedIterator<Item = (&K, &Descriptor<DescriptorPublicKey>)> + ExactSizeIterator + '_
    +    ) -> impl DoubleEndedIterator<Item = (&K, &Descriptor<DescriptorPublicKey>)> + ExactSizeIterator + '_
         {
             self.keychains_to_descriptors
                 .iter()
    @@ -1470,7 +1470,7 @@
                 let _is_keychain_removed = self
                     .descriptor_ids_to_keychain_set
                     .get_mut(&old_desc_id)
    -                .expect("we must have already inserted this descriptor")
    +                .expect("we must have already inserted this descriptor")
                     .remove(&keychain);
                 debug_assert!(_is_keychain_removed);
             }
    @@ -1489,7 +1489,7 @@
             changeset
         }
     
    -    /// Gets the descriptor associated with the keychain. Returns `None` if the keychain doesn't
    +    /// Gets the descriptor associated with the keychain. Returns `None` if the keychain doesn't
         /// have a descriptor associated with it.
         pub fn get_descriptor(&self, keychain: &K) -> Option<&Descriptor<DescriptorPublicKey>> {
             self.keychains_to_descriptors.get(keychain).map(|(_, d)| d)
    @@ -1530,7 +1530,7 @@
                     next_store_index..next_reveal_index + lookahead,
                 ) {
                     let _inserted = self.inner.insert_spk((descriptor_id, new_index), new_spk);
    -                debug_assert!(_inserted, "replenish lookahead: must not have existing spk: keychain={:?}, lookahead={}, next_store_index={}, next_reveal_index={}", keychain, lookahead, next_store_index, next_reveal_index);
    +                debug_assert!(_inserted, "replenish lookahead: must not have existing spk: keychain={:?}, lookahead={}, next_store_index={}, next_reveal_index={}", keychain, lookahead, next_store_index, next_reveal_index);
                 }
             }
         }
    @@ -1539,14 +1539,14 @@
             self.inner()
                 .all_spks()
                 // This range is keeping only the spks with descriptor_id equal to
    -            // `descriptor_id`. We don't use filter here as range is more optimized.
    +            // `descriptor_id`. We don't use filter here as range is more optimized.
                 .range((descriptor_id, u32::MIN)..(descriptor_id, u32::MAX))
                 .last()
                 .map_or(0, |((_, index), _)| *index + 1)
         }
     
         /// Get an unbounded spk iterator over a given `keychain`. Returns `None` if the provided
    -    /// keychain doesn't exist
    +    /// keychain doesn't exist
         pub fn unbounded_spk_iter(
             &self,
             keychain: &K,
    @@ -1585,7 +1585,7 @@
                         .map(|((descriptor_id, i), spk)| {
                             (
                                 self.keychain_of_desc_id(descriptor_id)
    -                                .expect("must have keychain"),
    +                                .expect("must have keychain"),
                                 *i,
                                 spk.as_script(),
                             )
    @@ -1594,10 +1594,10 @@
         }
     
         /// Iterate over revealed spks of the given `keychain`.
    -    pub fn revealed_keychain_spks<'a>(
    -        &'a self,
    -        keychain: &'a K,
    -    ) -> impl DoubleEndedIterator<Item = (u32, &Script)> + 'a {
    +    pub fn revealed_keychain_spks<'a>(
    +        &'a self,
    +        keychain: &'a K,
    +    ) -> impl DoubleEndedIterator<Item = (u32, &Script)> + 'a {
             self.revealed_spks(keychain..=keychain)
                 .map(|(_, i, spk)| (i, spk))
         }
    @@ -1611,7 +1611,7 @@
         }
     
         /// Iterate over revealed, but unused, spks of the given `keychain`.
    -    /// Returns an empty iterator if the provided keychain doesn't exist.
    +    /// Returns an empty iterator if the provided keychain doesn't exist.
         pub fn unused_keychain_spks(
             &self,
             keychain: &K,
    @@ -1620,7 +1620,7 @@
                 .keychains_to_descriptors
                 .get(keychain)
                 .map(|(desc_id, _)| *desc_id)
    -            // We use a dummy desc id if we can't find the real one in our map. In this way,
    +            // We use a dummy desc id if we can't find the real one in our map. In this way,
                 // if this method was to be called with a non-existent keychain, we would return an
                 // empty iterator
                 .unwrap_or_else(|| DescriptorId::from_byte_array([0; 32]));
    @@ -1636,12 +1636,12 @@
         /// The second field in the returned tuple represents whether the next derivation index is new.
         /// There are two scenarios where the next derivation index is reused (not new):
         ///
    -    /// 1. The keychain's descriptor has no wildcard, and a script has already been revealed.
    +    /// 1. The keychain's descriptor has no wildcard, and a script has already been revealed.
         /// 2. The number of revealed scripts has already reached 2^31 (refer to BIP-32).
         ///
         /// Not checking the second field of the tuple may result in address reuse.
         ///
    -    /// Returns None if the provided `keychain` doesn't exist.
    +    /// Returns None if the provided `keychain` doesn't exist.
         pub fn next_index(&self, keychain: &K) -> Option<(u32, bool)> {
             let (descriptor_id, descriptor) = self.keychains_to_descriptors.get(keychain)?;
             let last_index = self.last_revealed.get(descriptor_id).cloned();
    @@ -1656,7 +1656,7 @@
                 Some(_) if !has_wildcard => (0, false),
                 // derivation index must be < 2^31 (BIP-32).
                 Some(index) if index > BIP32_MAX_INDEX => {
    -                unreachable!("index is out of bounds")
    +                unreachable!("index is out of bounds")
                 }
                 Some(index) if index == BIP32_MAX_INDEX => (index, false),
                 // get the next derivation index.
    @@ -1677,8 +1677,8 @@
                 .collect()
         }
     
    -    /// Get the last derivation index revealed for `keychain`. Returns None if the keychain doesn't
    -    /// exist, or if the keychain doesn't have any revealed scripts.
    +    /// Get the last derivation index revealed for `keychain`. Returns None if the keychain doesn't
    +    /// exist, or if the keychain doesn't have any revealed scripts.
         pub fn last_revealed_index(&self, keychain: &K) -> Option<u32> {
             let descriptor_id = self.keychains_to_descriptors.get(keychain)?.0;
             self.last_revealed.get(&descriptor_id).cloned()
    @@ -1708,11 +1708,11 @@
         }
     
         /// Convenience method to call `reveal_to_target` with a descriptor_id instead of a keychain.
    -    /// This is useful for revealing spks of descriptors for which we don't have a keychain
    +    /// This is useful for revealing spks of descriptors for which we don't have a keychain
         /// tracked.
         /// Refer to the `reveal_to_target` documentation for more.
         ///
    -    /// Returns None if the provided `descriptor_id` doesn't correspond to a tracked descriptor.
    +    /// Returns None if the provided `descriptor_id` doesn't correspond to a tracked descriptor.
         fn reveal_to_target_with_id(
             &mut self,
             descriptor_id: DescriptorId,
    @@ -1749,10 +1749,10 @@
             let range = next_reveal_index + self.lookahead..=target_index + self.lookahead;
             for (new_index, new_spk) in SpkIterator::new_with_range(descriptor.clone(), range) {
                 let _inserted = self.inner.insert_spk((descriptor_id, new_index), new_spk);
    -            debug_assert!(_inserted, "must not have existing spk");
    +            debug_assert!(_inserted, "must not have existing spk");
                 debug_assert!(
                     has_wildcard || new_index == 0,
    -                "non-wildcard descriptors must not iterate past index 0"
    +                "non-wildcard descriptors must not iterate past index 0"
                 );
             }
     
    @@ -1767,7 +1767,7 @@
             ))
         }
     
    -    /// Reveals script pubkeys of the `keychain`'s descriptor **up to and including** the
    +    /// Reveals script pubkeys of the `keychain`'s descriptor **up to and including** the
         /// `target_index`.
         ///
         /// If the `target_index` cannot be reached (due to the descriptor having no wildcard and/or
    @@ -1778,7 +1778,7 @@
         /// [`super::ChangeSet`], which reports updates to the latest revealed index. If no new script
         /// pubkeys are revealed, then both of these will be empty.
         ///
    -    /// Returns None if the provided `keychain` doesn't exist.
    +    /// Returns None if the provided `keychain` doesn't exist.
         pub fn reveal_to_target(
             &mut self,
             keychain: &K,
    @@ -1795,7 +1795,7 @@
         ///
         /// Returns the derivation index of the revealed script pubkey, the revealed script pubkey and a
         /// [`super::ChangeSet`] which represents changes in the last revealed index (if any).
    -    /// Returns None if the provided keychain doesn't exist.
    +    /// Returns None if the provided keychain doesn't exist.
         ///
         /// When a new script cannot be revealed, we return the last revealed script and an empty
         /// [`super::ChangeSet`]. There are two scenarios when a new script pubkey cannot be derived:
    @@ -1808,15 +1808,15 @@
             keychain: &K,
         ) -> Option<((u32, &Script), super::ChangeSet<K>)> {
             let descriptor_id = self.keychains_to_descriptors.get(keychain)?.0;
    -        let (next_index, _) = self.next_index(keychain).expect("We know keychain exists");
    +        let (next_index, _) = self.next_index(keychain).expect("We know keychain exists");
             let changeset = self
                 .reveal_to_target(keychain, next_index)
    -            .expect("We know keychain exists")
    +            .expect("We know keychain exists")
                 .1;
             let script = self
                 .inner
                 .spk_at_index(&(descriptor_id, next_index))
    -            .expect("script must already be stored");
    +            .expect("script must already be stored");
             Some(((next_index, script), changeset))
         }
     
    @@ -1829,7 +1829,7 @@
         /// has used all scripts up to the derivation bounds, then the last derived script pubkey will be
         /// returned.
         ///
    -    /// Returns None if the provided keychain doesn't exist.
    +    /// Returns None if the provided keychain doesn't exist.
         pub fn next_unused_spk(
             &mut self,
             keychain: &K,
    @@ -1842,7 +1842,7 @@
                 Some((
                     self.unused_keychain_spks(keychain)
                         .next()
    -                    .expect("we already know next exists"),
    +                    .expect("we already know next exists"),
                     super::ChangeSet::default(),
                 ))
             }
    @@ -1850,26 +1850,26 @@
     
         /// Iterate over all [`OutPoint`]s that have `TxOut`s with script pubkeys derived from
         /// `keychain`.
    -    pub fn keychain_outpoints<'a>(
    -        &'a self,
    -        keychain: &'a K,
    -    ) -> impl DoubleEndedIterator<Item = (u32, OutPoint)> + 'a {
    +    pub fn keychain_outpoints<'a>(
    +        &'a self,
    +        keychain: &'a K,
    +    ) -> impl DoubleEndedIterator<Item = (u32, OutPoint)> + 'a {
             self.keychain_outpoints_in_range(keychain..=keychain)
                 .map(move |(_, i, op)| (i, op))
         }
     
         /// Iterate over [`OutPoint`]s that have script pubkeys derived from keychains in `range`.
    -    pub fn keychain_outpoints_in_range<'a>(
    -        &'a self,
    -        range: impl RangeBounds<K> + 'a,
    -    ) -> impl DoubleEndedIterator<Item = (&'a K, u32, OutPoint)> + 'a {
    +    pub fn keychain_outpoints_in_range<'a>(
    +        &'a self,
    +        range: impl RangeBounds<K> + 'a,
    +    ) -> impl DoubleEndedIterator<Item = (&'a K, u32, OutPoint)> + 'a {
             let bounds = self.map_to_inner_bounds(range);
             self.inner
                 .outputs_in_range(bounds)
                 .map(move |((desc_id, i), op)| {
                     let keychain = self
                         .keychain_of_desc_id(desc_id)
    -                    .expect("keychain must exist");
    +                    .expect("keychain must exist");
                     (keychain, *i, op)
                 })
         }
    @@ -1899,13 +1899,13 @@
         }
     
         /// Returns the highest derivation index of the `keychain` where [`KeychainTxOutIndex`] has
    -    /// found a [`TxOut`] with it's script pubkey.
    +    /// found a [`TxOut`] with it's script pubkey.
         pub fn last_used_index(&self, keychain: &K) -> Option<u32> {
             self.keychain_outpoints(keychain).last().map(|(i, _)| i)
         }
     
         /// Returns the highest derivation index of each keychain that [`KeychainTxOutIndex`] has found
    -    /// a [`TxOut`] with it's script pubkey.
    +    /// a [`TxOut`] with it's script pubkey.
         pub fn last_used_indices(&self) -> BTreeMap<K, u32> {
             self.keychains_to_descriptors
                 .iter()
    @@ -1940,5 +1940,4 @@
             let _ = self.reveal_to_target_multi(&last_revealed);
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html index b6b797405e..4e559488b5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -95,10 +95,7 @@
     95
     96
     97
    -98
    -99
    -100
    -
    //! This crate is a collection of core structures for [Bitcoin Dev Kit].
    +
    //! This crate is a collection of core structures for [Bitcoin Dev Kit].
     //!
     //! The goal of this crate is to give wallets the mechanisms needed to:
     //!
    @@ -110,7 +107,7 @@
     //!
     //! 1. Data source agnostic -- nothing in `bdk_chain` cares about where you get data from or whether
     //!    you do it synchronously or asynchronously. If you know a fact about the blockchain, you can just
    -//!    tell `bdk_chain`'s APIs about it, and that information will be integrated, if it can be done
    +//!    tell `bdk_chain`'s APIs about it, and that information will be integrated, if it can be done
     //!    consistently.
     //! 2. Data persistence agnostic -- `bdk_chain` does not care where you cache on-chain data, what you
     //!    cache or how you retrieve it from persistent storage.
    @@ -139,15 +136,15 @@
     #[doc(hidden)]
     pub mod example_utils;
     
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     pub use miniscript;
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     mod descriptor_ext;
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     pub use descriptor_ext::{DescriptorExt, DescriptorId};
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     mod spk_iter;
    -#[cfg(feature = "miniscript")]
    +#[cfg(feature = "miniscript")]
     pub use spk_iter::*;
     pub mod spk_client;
     
    @@ -155,21 +152,18 @@
     #[macro_use]
     extern crate alloc;
     
    -#[cfg(feature = "serde")]
    +#[cfg(feature = "serde")]
     pub extern crate serde_crate as serde;
     
    -#[cfg(feature = "bincode")]
    -extern crate bincode;
    -
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     #[macro_use]
     extern crate std;
     
    -#[cfg(all(not(feature = "std"), feature = "hashbrown"))]
    +#[cfg(all(not(feature = "std"), feature = "hashbrown"))]
     extern crate hashbrown;
     
    -// When no-std use `alloc`'s Hash collections. This is activated by default
    -#[cfg(all(not(feature = "std"), not(feature = "hashbrown")))]
    +// When no-std use `alloc`'s Hash collections. This is activated by default
    +#[cfg(all(not(feature = "std"), not(feature = "hashbrown")))]
     #[doc(hidden)]
     pub mod collections {
         #![allow(dead_code)]
    @@ -178,15 +172,15 @@
         pub use alloc::collections::{btree_map as hash_map, *};
     }
     
    -// When we have std, use `std`'s all collections
    -#[cfg(all(feature = "std", not(feature = "hashbrown")))]
    +// When we have std, use `std`'s all collections
    +#[cfg(all(feature = "std", not(feature = "hashbrown")))]
     #[doc(hidden)]
     pub mod collections {
         pub use std::collections::{hash_map, *};
     }
     
    -// With this special feature `hashbrown`, use `hashbrown`'s hash collections, and else from `alloc`.
    -#[cfg(feature = "hashbrown")]
    +// With this special feature `hashbrown`, use `hashbrown`'s hash collections, and else from `alloc`.
    +#[cfg(feature = "hashbrown")]
     #[doc(hidden)]
     pub mod collections {
         #![allow(dead_code)]
    @@ -198,5 +192,4 @@
     
     /// How many confirmations are needed f or a coinbase output to be spent.
     pub const COINBASE_MATURITY: u32 = 100;
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/local_chain.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/local_chain.rs.html index c37992bf1f..94771ced01 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/local_chain.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/local_chain.rs.html @@ -1,4 +1,4 @@ -local_chain.rs - source
    1
    +local_chain.rs - source
    1
     2
     3
     4
    @@ -849,7 +849,7 @@
     849
     850
     851
    -
    //! The [`LocalChain`] is a local implementation of [`ChainOracle`].
    +
    //! The [`LocalChain`] is a local implementation of [`ChainOracle`].
     
     use core::convert::Infallible;
     use core::ops::RangeBounds;
    @@ -924,7 +924,7 @@
     
         /// Construct a checkpoint from the given `header` and block `height`.
         ///
    -    /// If `header` is of the genesis block, the checkpoint won't have a [`prev`] node. Otherwise,
    +    /// If `header` is of the genesis block, the checkpoint won't have a [`prev`] node. Otherwise,
         /// we return a checkpoint linked with the previous block.
         ///
         /// [`prev`]: CheckPoint::prev
    @@ -944,7 +944,7 @@
     
             CheckPoint::new(prev_block_id)
                 .push(this_block_id)
    -            .expect("must construct checkpoint")
    +            .expect("must construct checkpoint")
         }
     
         /// Puts another checkpoint onto the linked list representing the blockchain.
    @@ -1031,14 +1031,14 @@
     
         /// Inserts `block_id` at its height within the chain.
         ///
    -    /// The effect of `insert` depends on whether a height already exists. If it doesn't the
    +    /// The effect of `insert` depends on whether a height already exists. If it doesn't the
         /// `block_id` we inserted and all pre-existing blocks higher than it will be re-inserted after
         /// it. If the height already existed and has a conflicting block hash then it will be purged
         /// along with all block followin it. The returned chain will have a tip of the `block_id`
         /// passed in. Of course, if the `block_id` was already present then this just returns `self`.
         #[must_use]
         pub fn insert(self, block_id: BlockId) -> Self {
    -        assert_ne!(block_id.height, 0, "cannot insert the genesis block");
    +        assert_ne!(block_id.height, 0, "cannot insert the genesis block");
     
             let mut cp = self.clone();
             let mut tail = vec![];
    @@ -1050,7 +1050,7 @@
                     // if we have a conflict we just return the inserted block because the tail is by
                     // implication invalid.
                     tail = vec![];
    -                break cp.prev().expect("can't be called on genesis block");
    +                break cp.prev().expect("can't be called on genesis block");
                 }
     
                 if cp.height() < block_id.height {
    @@ -1058,11 +1058,11 @@
                 }
     
                 tail.push(cp.block_id());
    -            cp = cp.prev().expect("will break before genesis block");
    +            cp = cp.prev().expect("will break before genesis block");
             };
     
             base.extend(core::iter::once(block_id).chain(tail.into_iter().rev()))
    -            .expect("tail is in order")
    +            .expect("tail is in order")
         }
     
         /// Apply `changeset` to the checkpoint.
    @@ -1096,7 +1096,7 @@
                 let new_tip = match base {
                     Some(base) => base
                         .extend(extension.into_iter().map(BlockId::from))
    -                    .expect("extension is strictly greater than base"),
    +                    .expect("extension is strictly greater than base"),
                     None => LocalChain::from_blocks(extension)?.tip(),
                 };
                 self = new_tip;
    @@ -1166,7 +1166,7 @@
     impl LocalChain {
         /// Get the genesis hash.
         pub fn genesis_hash(&self) -> BlockHash {
    -        self.tip.get(0).expect("genesis must exist").hash()
    +        self.tip.get(0).expect("genesis must exist").hash()
         }
     
         /// Construct [`LocalChain`] from genesis `hash`.
    @@ -1198,7 +1198,7 @@
     
         /// Construct a [`LocalChain`] from a given `checkpoint` tip.
         pub fn from_tip(tip: CheckPoint) -> Result<Self, MissingGenesisError> {
    -        let genesis_cp = tip.iter().last().expect("must have at least one element");
    +        let genesis_cp = tip.iter().last().expect("must have at least one element");
             if genesis_cp.height() != 0 {
                 return Err(MissingGenesisError);
             }
    @@ -1220,7 +1220,7 @@
                     Some(curr) => {
                         tip = Some(
                             curr.push(BlockId::from(block))
    -                            .expect("BTreeMap is ordered"),
    +                            .expect("BTreeMap is ordered"),
                         )
                     }
                     None => tip = Some(CheckPoint::new(BlockId::from(block))),
    @@ -1228,7 +1228,7 @@
             }
     
             Ok(Self {
    -            tip: tip.expect("already checked to have genesis"),
    +            tip: tip.expect("already checked to have genesis"),
             })
         }
     
    @@ -1241,7 +1241,7 @@
         ///
         /// The method returns [`ChangeSet`] on success. This represents the changes applied to `self`.
         ///
    -    /// There must be no ambiguity about which of the existing chain's blocks are still valid and
    +    /// There must be no ambiguity about which of the existing chain's blocks are still valid and
         /// which are now invalid. That is, the new chain must implicitly connect to a definite block in
         /// the existing chain and invalidate the block after it (if it exists) by including a block at
         /// the same height but with a different hash to explicitly exclude it as a connection point.
    @@ -1261,12 +1261,12 @@
         /// Update the chain with a given [`Header`] at `height` which you claim is connected to a existing block in the chain.
         ///
         /// This is useful when you have a block header that you want to record as part of the chain but
    -    /// don't necessarily know that the `prev_blockhash` is in the chain.
    +    /// don't necessarily know that the `prev_blockhash` is in the chain.
         ///
    -    /// This will usually insert two new [`BlockId`]s into the chain: the header's block and the
    -    /// header's `prev_blockhash` block. `connected_to` must already be in the chain but is allowed
    +    /// This will usually insert two new [`BlockId`]s into the chain: the header's block and the
    +    /// header's `prev_blockhash` block. `connected_to` must already be in the chain but is allowed
         /// to be `prev_blockhash` (in which case only one new block id will be inserted).
    -    /// To be successful, `connected_to` must be chosen carefully so that `LocalChain`'s [update
    +    /// To be successful, `connected_to` must be chosen carefully so that `LocalChain`'s [update
         /// rules][`apply_update`] are satisfied.
         ///
         /// # Errors
    @@ -1274,7 +1274,7 @@
         /// [`ApplyHeaderError::InconsistentBlocks`] occurs if the `connected_to` block and the
         /// [`Header`] is inconsistent. For example, if the `connected_to` block is the same height as
         /// `header` or `prev_blockhash`, but has a different block hash. Or if the `connected_to`
    -    /// height is greater than the header's `height`.
    +    /// height is greater than the header's `height`.
         ///
         /// [`ApplyHeaderError::CannotConnect`] occurs if the internal call to [`apply_update`] fails.
         ///
    @@ -1307,7 +1307,7 @@
             };
     
             let update = CheckPoint::from_block_ids([conn, prev, Some(this)].into_iter().flatten())
    -            .expect("block ids must be in order");
    +            .expect("block ids must be in order");
     
             self.apply_update(update)
                 .map_err(ApplyHeaderError::CannotConnect)
    @@ -1338,7 +1338,7 @@
             self.apply_header_connected_to(header, height, connected_to)
                 .map_err(|err| match err {
                     ApplyHeaderError::InconsistentBlocks => {
    -                    unreachable!("connected_to is derived from the block so is always consistent")
    +                    unreachable!("connected_to is derived from the block so is always consistent")
                     }
                     ApplyHeaderError::CannotConnect(err) => err,
                 })
    @@ -1408,7 +1408,7 @@
                 // The checkpoint below the earliest checkpoint to remove will be the new tip.
                 Some(Some(new_tip)) => new_tip,
                 // If there is no checkpoint below the earliest checkpoint to remove, it means the
    -            // "earliest checkpoint to remove" is the genesis block. We disallow removing the
    +            // "earliest checkpoint to remove" is the genesis block. We disallow removing the
                 // genesis block.
                 Some(None) => return Err(MissingGenesisError),
                 // If there is nothing to remove, we return an empty changeset.
    @@ -1486,46 +1486,46 @@
     pub struct MissingGenesisError;
     
     impl core::fmt::Display for MissingGenesisError {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             write!(
                 f,
    -            "cannot construct `LocalChain` without a genesis checkpoint"
    +            "cannot construct `LocalChain` without a genesis checkpoint"
             )
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for MissingGenesisError {}
     
     /// Represents a failure when trying to insert/remove a checkpoint to/from [`LocalChain`].
     #[derive(Clone, Debug, PartialEq)]
     pub struct AlterCheckPointError {
    -    /// The checkpoint's height.
    +    /// The checkpoint's height.
         pub height: u32,
    -    /// The original checkpoint's block hash which cannot be replaced/removed.
    +    /// The original checkpoint's block hash which cannot be replaced/removed.
         pub original_hash: BlockHash,
         /// The attempted update to the `original_block` hash.
         pub update_hash: Option<BlockHash>,
     }
     
     impl core::fmt::Display for AlterCheckPointError {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             match self.update_hash {
                 Some(update_hash) => write!(
                     f,
    -                "failed to insert block at height {}: original={} update={}",
    +                "failed to insert block at height {}: original={} update={}",
                     self.height, self.original_hash, update_hash
                 ),
                 None => write!(
                     f,
    -                "failed to remove block at height {}: original={}",
    +                "failed to remove block at height {}: original={}",
                     self.height, self.original_hash
                 ),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for AlterCheckPointError {}
     
     /// Occurs when an update does not have a common checkpoint with the original chain.
    @@ -1536,16 +1536,16 @@
     }
     
     impl core::fmt::Display for CannotConnectError {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             write!(
                 f,
    -            "introduced chain cannot connect with the original chain, try include height {}",
    +            "introduced chain cannot connect with the original chain, try include height {}",
                 self.try_include_height,
             )
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for CannotConnectError {}
     
     /// The error type for [`LocalChain::apply_header_connected_to`].
    @@ -1558,18 +1558,18 @@
     }
     
     impl core::fmt::Display for ApplyHeaderError {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             match self {
                 ApplyHeaderError::InconsistentBlocks => write!(
                     f,
    -                "the `connected_to` block conflicts with either the current or previous block"
    +                "the `connected_to` block conflicts with either the current or previous block"
                 ),
                 ApplyHeaderError::CannotConnect(err) => core::fmt::Display::fmt(err, f),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for ApplyHeaderError {}
     
     /// Applies `update_tip` onto `original_tip`.
    @@ -1594,7 +1594,7 @@
         // If we can, we want to return the update tip as the new tip because this allows checkpoints
         // in multiple locations to keep the same `Arc` pointers when they are being updated from each
         // other using this function. We can do this as long as long as the update contains every
    -    // block's height of the original chain.
    +    // block's height of the original chain.
         let mut is_update_height_superset_of_original = true;
     
         // To find the difference between the new chain and the original we iterate over both of them
    @@ -1610,12 +1610,12 @@
             }
     
             match (curr_orig.as_ref(), curr_update.as_ref()) {
    -            // Update block that doesn't exist in the original chain
    +            // Update block that doesn't exist in the original chain
                 (o, Some(u)) if Some(u.height()) > o.map(|o| o.height()) => {
                     changeset.insert(u.height(), Some(u.hash()));
                     prev_update = curr_update.take();
                 }
    -            // Original block that isn't in the update
    +            // Original block that isn't in the update
                 (Some(o), u) if Some(o.height()) > u.map(|u| u.height()) => {
                     // this block might be gone if an earlier block gets invalidated
                     potentially_invalidated_heights.push(o.height());
    @@ -1624,8 +1624,8 @@
     
                     is_update_height_superset_of_original = false;
     
    -                // OPTIMIZATION: we have run out of update blocks so we don't need to continue
    -                // iterating because there's no possibility of adding anything to changeset.
    +                // OPTIMIZATION: we have run out of update blocks so we don't need to continue
    +                // iterating because there's no possibility of adding anything to changeset.
                     if u.is_none() {
                         break;
                     }
    @@ -1677,12 +1677,12 @@
                     break;
                 }
                 _ => {
    -                unreachable!("compiler cannot tell that everything has been covered")
    +                unreachable!("compiler cannot tell that everything has been covered")
                 }
             }
         }
     
    -    // When we don't have a point of agreement you can imagine it is implicitly the
    +    // When we don't have a point of agreement you can imagine it is implicitly the
         // genesis block so we need to do the final connectivity check which in this case
         // just means making sure the entire original chain was invalidated.
         if !prev_orig_was_invalidated && !point_of_agreement_found {
    @@ -1700,5 +1700,4 @@
             })?;
         Ok((new_tip, changeset))
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_client.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_client.rs.html index 240ced0846..b5674f7ead 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_client.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_client.rs.html @@ -1,4 +1,4 @@ -spk_client.rs - source
    1
    +spk_client.rs - source
    1
     2
     3
     4
    @@ -444,7 +444,7 @@
     444
     445
     446
    -
    //! Helper types for spk-based blockchain clients.
    +
    //! Helper types for spk-based blockchain clients.
     
     use crate::{
         collections::{BTreeMap, HashMap},
    @@ -521,7 +521,7 @@
         #[must_use]
         pub fn set_spks(
             mut self,
    -        spks: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = ScriptBuf> + Send + 'static>,
    +        spks: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = ScriptBuf> + Send + 'static>,
         ) -> Self {
             self.spks = Box::new(spks.into_iter());
             self
    @@ -533,7 +533,7 @@
         #[must_use]
         pub fn set_txids(
             mut self,
    -        txids: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = Txid> + Send + 'static>,
    +        txids: impl IntoIterator<IntoIter = impl ExactSizeIterator<Item = Txid> + Send + 'static>,
         ) -> Self {
             self.txids = Box::new(txids.into_iter());
             self
    @@ -546,7 +546,7 @@
         pub fn set_outpoints(
             mut self,
             outpoints: impl IntoIterator<
    -            IntoIter = impl ExactSizeIterator<Item = OutPoint> + Send + 'static,
    +            IntoIter = impl ExactSizeIterator<Item = OutPoint> + Send + 'static,
             >,
         ) -> Self {
             self.outpoints = Box::new(outpoints.into_iter());
    @@ -560,7 +560,7 @@
         pub fn chain_spks(
             mut self,
             spks: impl IntoIterator<
    -            IntoIter = impl ExactSizeIterator<Item = ScriptBuf> + Send + 'static,
    +            IntoIter = impl ExactSizeIterator<Item = ScriptBuf> + Send + 'static,
                 Item = ScriptBuf,
             >,
         ) -> Self {
    @@ -575,7 +575,7 @@
         pub fn chain_txids(
             mut self,
             txids: impl IntoIterator<
    -            IntoIter = impl ExactSizeIterator<Item = Txid> + Send + 'static,
    +            IntoIter = impl ExactSizeIterator<Item = Txid> + Send + 'static,
                 Item = Txid,
             >,
         ) -> Self {
    @@ -590,7 +590,7 @@
         pub fn chain_outpoints(
             mut self,
             outpoints: impl IntoIterator<
    -            IntoIter = impl ExactSizeIterator<Item = OutPoint> + Send + 'static,
    +            IntoIter = impl ExactSizeIterator<Item = OutPoint> + Send + 'static,
                 Item = OutPoint,
             >,
         ) -> Self {
    @@ -604,7 +604,7 @@
         #[must_use]
         pub fn inspect_spks(
             mut self,
    -        mut inspect: impl FnMut(&Script) + Send + Sync + 'static,
    +        mut inspect: impl FnMut(&Script) + Send + Sync + 'static,
         ) -> Self {
             self.spks = Box::new(self.spks.inspect(move |spk| inspect(spk)));
             self
    @@ -614,7 +614,7 @@
         ///
         /// This consumes the [`SyncRequest`] and returns the updated one.
         #[must_use]
    -    pub fn inspect_txids(mut self, mut inspect: impl FnMut(&Txid) + Send + Sync + 'static) -> Self {
    +    pub fn inspect_txids(mut self, mut inspect: impl FnMut(&Txid) + Send + Sync + 'static) -> Self {
             self.txids = Box::new(self.txids.inspect(move |txid| inspect(txid)));
             self
         }
    @@ -625,7 +625,7 @@
         #[must_use]
         pub fn inspect_outpoints(
             mut self,
    -        mut inspect: impl FnMut(&OutPoint) + Send + Sync + 'static,
    +        mut inspect: impl FnMut(&OutPoint) + Send + Sync + 'static,
         ) -> Self {
             self.outpoints = Box::new(self.outpoints.inspect(move |op| inspect(op)));
             self
    @@ -634,7 +634,7 @@
         /// Populate the request with revealed script pubkeys from `index` with the given `spk_range`.
         ///
         /// This consumes the [`SyncRequest`] and returns the updated one.
    -    #[cfg(feature = "miniscript")]
    +    #[cfg(feature = "miniscript")]
         #[must_use]
         pub fn populate_with_revealed_spks<K: Clone + Ord + Debug + Send + Sync>(
             self,
    @@ -720,7 +720,7 @@
         /// [`FullScanRequest`].
         ///
         /// [`KeychainTxOutIndex::all_unbounded_spk_iters`]: crate::keychain::KeychainTxOutIndex::all_unbounded_spk_iters
    -    #[cfg(feature = "miniscript")]
    +    #[cfg(feature = "miniscript")]
         #[must_use]
         pub fn from_keychain_txout_index(
             chain_tip: CheckPoint,
    @@ -743,7 +743,7 @@
         pub fn set_spks_for_keychain(
             mut self,
             keychain: K,
    -        spks: impl IntoIterator<IntoIter = impl Iterator<Item = (u32, ScriptBuf)> + Send + 'static>,
    +        spks: impl IntoIterator<IntoIter = impl Iterator<Item = (u32, ScriptBuf)> + Send + 'static>,
         ) -> Self {
             self.spks_by_keychain
                 .insert(keychain, Box::new(spks.into_iter()));
    @@ -757,7 +757,7 @@
         pub fn chain_spks_for_keychain(
             mut self,
             keychain: K,
    -        spks: impl IntoIterator<IntoIter = impl Iterator<Item = (u32, ScriptBuf)> + Send + 'static>,
    +        spks: impl IntoIterator<IntoIter = impl Iterator<Item = (u32, ScriptBuf)> + Send + 'static>,
         ) -> Self {
             match self.spks_by_keychain.remove(&keychain) {
                 // clippy here suggests to remove `into_iter` from `spks.into_iter()`, but doing so
    @@ -780,10 +780,10 @@
         #[must_use]
         pub fn inspect_spks_for_all_keychains(
             mut self,
    -        inspect: impl FnMut(K, u32, &Script) + Send + Sync + Clone + 'static,
    +        inspect: impl FnMut(K, u32, &Script) + Send + Sync + Clone + 'static,
         ) -> Self
         where
    -        K: Send + 'static,
    +        K: Send + 'static,
         {
             for (keychain, spks) in core::mem::take(&mut self.spks_by_keychain) {
                 let mut inspect = inspect.clone();
    @@ -803,10 +803,10 @@
         pub fn inspect_spks_for_keychain(
             mut self,
             keychain: K,
    -        mut inspect: impl FnMut(u32, &Script) + Send + Sync + 'static,
    +        mut inspect: impl FnMut(u32, &Script) + Send + Sync + 'static,
         ) -> Self
         where
    -        K: Send + 'static,
    +        K: Send + 'static,
         {
             if let Some(spks) = self.spks_by_keychain.remove(&keychain) {
                 self.spks_by_keychain.insert(
    @@ -890,5 +890,4 @@
             a_len + b_len
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_iter.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_iter.rs.html index 42463fa3ad..491aad8f58 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_iter.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_iter.rs.html @@ -1,4 +1,4 @@ -spk_iter.rs - source
    1
    +spk_iter.rs - source
    1
     2
     3
     4
    @@ -265,7 +265,7 @@
     265
     266
     267
    -
    use crate::{
    +
    use crate::{
         bitcoin::{secp256k1::Secp256k1, ScriptBuf},
         miniscript::{Descriptor, DescriptorPublicKey},
     };
    @@ -288,7 +288,7 @@
     /// # use bitcoin::{secp256k1::Secp256k1};
     /// # use std::str::FromStr;
     /// # let secp = bitcoin::secp256k1::Secp256k1::signing_only();
    -/// # let (descriptor, _) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "wpkh([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/0)").unwrap();
    +/// # let (descriptor, _) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "wpkh([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/0)").unwrap();
     /// # let external_spk_0 = descriptor.at_derivation_index(0).unwrap().script_pubkey();
     /// # let external_spk_3 = descriptor.at_derivation_index(3).unwrap().script_pubkey();
     /// # let external_spk_4 = descriptor.at_derivation_index(4).unwrap().script_pubkey();
    @@ -382,7 +382,7 @@
                 .descriptor
                 .borrow()
                 .derived_descriptor(&self.secp, self.next_index)
    -            .expect("the descriptor cannot need hardened derivation")
    +            .expect("the descriptor cannot need hardened derivation")
                 .script_pubkey();
             let output = (self.next_index, script);
     
    @@ -422,8 +422,8 @@
             let mut txout_index = KeychainTxOutIndex::<TestKeychain>::new(0);
     
             let secp = Secp256k1::signing_only();
    -        let (external_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/0/*)").unwrap();
    -        let (internal_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/*)").unwrap();
    +        let (external_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/0/*)").unwrap();
    +        let (internal_descriptor,_) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "tr([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/*)").unwrap();
     
             let _ = txout_index.insert_descriptor(TestKeychain::External, external_descriptor.clone());
             let _ = txout_index.insert_descriptor(TestKeychain::Internal, internal_descriptor.clone());
    @@ -467,7 +467,7 @@
         #[allow(clippy::iter_nth_zero)]
         fn test_spkiterator_non_wildcard() {
             let secp = bitcoin::secp256k1::Secp256k1::signing_only();
    -        let (no_wildcard_descriptor, _) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "wpkh([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/0)").unwrap();
    +        let (no_wildcard_descriptor, _) = Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, "wpkh([73c5da0a/86'/0'/0']xprv9xgqHN7yz9MwCkxsBPN5qetuNdQSUttZNKw1dcYTV4mkaAFiBVGQziHs3NRSWMkCzvgjEe3n9xV8oYywvM8at9yRqyaZVz6TYYhX98VjsUk/1/0)").unwrap();
             let external_spk_0 = no_wildcard_descriptor
                 .at_derivation_index(0)
                 .unwrap()
    @@ -529,8 +529,7 @@
     
     #[test]
     fn spk_iterator_is_send_and_static() {
    -    fn is_send_and_static<A: Send + 'static>() {}
    +    fn is_send_and_static<A: Send + 'static>() {}
         is_send_and_static::<SpkIterator<Descriptor<DescriptorPublicKey>>>()
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_txout_index.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_txout_index.rs.html index a7a8f4373f..5149ceefe6 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_txout_index.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/spk_txout_index.rs.html @@ -1,4 +1,4 @@ -spk_txout_index.rs - source
    1
    +spk_txout_index.rs - source
    1
     2
     3
     4
    @@ -330,7 +330,7 @@
     330
     331
     332
    -
    use core::ops::RangeBounds;
    +
    use core::ops::RangeBounds;
     
     use crate::{
         collections::{hash_map::Entry, BTreeMap, BTreeSet, HashMap},
    @@ -409,7 +409,7 @@
     }
     
     impl<I: Clone + Ord> SpkTxOutIndex<I> {
    -    /// Scans a transaction's outputs for matching script pubkeys.
    +    /// Scans a transaction's outputs for matching script pubkeys.
         ///
         /// Typically, this is used in two situations:
         ///
    @@ -498,14 +498,14 @@
     
         /// Returns the txout and script pubkey index of the `TxOut` at `OutPoint`.
         ///
    -    /// Returns `None` if the `TxOut` hasn't been scanned or if nothing matching was found there.
    +    /// Returns `None` if the `TxOut` hasn't been scanned or if nothing matching was found there.
         pub fn txout(&self, outpoint: OutPoint) -> Option<(&I, &TxOut)> {
             self.txouts.get(&outpoint).map(|v| (&v.0, &v.1))
         }
     
         /// Returns the script that has been inserted at the `index`.
         ///
    -    /// If that index hasn't been inserted yet, it will return `None`.
    +    /// If that index hasn't been inserted yet, it will return `None`.
         pub fn spk_at_index(&self, index: &I) -> Option<&Script> {
             self.spks.get(index).map(|s| s.as_script())
         }
    @@ -532,7 +532,7 @@
     
         /// Iterates over all unused script pubkeys in an index range.
         ///
    -    /// Here, "unused" means that after the script pubkey was stored in the index, the index has
    +    /// Here, "unused" means that after the script pubkey was stored in the index, the index has
         /// never scanned a transaction output with it.
         ///
         /// # Example
    @@ -553,23 +553,23 @@
         {
             self.unused
                 .range(range)
    -            .map(move |index| (index, self.spk_at_index(index).expect("must exist")))
    +            .map(move |index| (index, self.spk_at_index(index).expect("must exist")))
         }
     
         /// Returns whether the script pubkey at `index` has been used or not.
         ///
    -    /// Here, "unused" means that after the script pubkey was stored in the index, the index has
    +    /// Here, "unused" means that after the script pubkey was stored in the index, the index has
         /// never scanned a transaction output with it.
         pub fn is_used(&self, index: &I) -> bool {
             !self.unused.contains(index)
         }
     
    -    /// Marks the script pubkey at `index` as used even though it hasn't seen an output spending to it.
    +    /// Marks the script pubkey at `index` as used even though it hasn't seen an output spending to it.
         /// This only affects when the `index` had already been added to `self` and was unused.
         ///
         /// Returns whether the `index` was initially present as `unused`.
         ///
    -    /// This is useful when you want to reserve a script pubkey for something but don't want to add
    +    /// This is useful when you want to reserve a script pubkey for something but don't want to add
         /// the transaction output using it to the index yet. Other callers will consider the `index` used
         /// until you call [`unmark_used`].
         ///
    @@ -639,8 +639,8 @@
         /// [`sent_and_received`]: Self::sent_and_received
         pub fn net_value(&self, tx: &Transaction, range: impl RangeBounds<I>) -> SignedAmount {
             let (sent, received) = self.sent_and_received(tx, range);
    -        received.to_signed().expect("valid `SignedAmount`")
    -            - sent.to_signed().expect("valid `SignedAmount`")
    +        received.to_signed().expect("valid `SignedAmount`")
    +            - sent.to_signed().expect("valid `SignedAmount`")
         }
     
         /// Whether any of the inputs of this transaction spend a txout tracked or whether any output
    @@ -662,5 +662,4 @@
             input_matches || output_matches
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/tx_data_traits.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/tx_data_traits.rs.html index 2bb1225fdc..7754be41f0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/tx_data_traits.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/tx_data_traits.rs.html @@ -1,4 +1,4 @@ -tx_data_traits.rs - source
    1
    +tx_data_traits.rs - source
    1
     2
     3
     4
    @@ -183,12 +183,12 @@
     183
     184
     185
    -
    use crate::collections::BTreeMap;
    +
    use crate::collections::BTreeMap;
     use crate::collections::BTreeSet;
     use crate::BlockId;
     use alloc::vec::Vec;
     
    -/// Trait that "anchors" blockchain data to a specific block of height and hash.
    +/// Trait that "anchors" blockchain data to a specific block of height and hash.
     ///
     /// If transaction A is anchored in block B, and block B is in the best chain, we can
     /// assume that transaction A is also confirmed in the best chain. This does not necessarily mean
    @@ -196,9 +196,9 @@
     /// parent block of B.
     ///
     /// Every [`Anchor`] implementation must contain a [`BlockId`] parameter, and must implement
    -/// [`Ord`]. When implementing [`Ord`], the anchors' [`BlockId`]s should take precedence
    +/// [`Ord`]. When implementing [`Ord`], the anchors' [`BlockId`]s should take precedence
     /// over other elements inside the [`Anchor`]s for comparison purposes, i.e., you should first
    -/// compare the anchors' [`BlockId`]s and then care about the rest.
    +/// compare the anchors' [`BlockId`]s and then care about the rest.
     ///
     /// The example shows different types of anchors:
     /// ```
    @@ -212,8 +212,8 @@
     /// // Initialize the local chain with two blocks.
     /// let chain = LocalChain::from_blocks(
     ///     [
    -///         (1, Hash::hash("first".as_bytes())),
    -///         (2, Hash::hash("second".as_bytes())),
    +///         (1, Hash::hash("first".as_bytes())),
    +///         (2, Hash::hash("second".as_bytes())),
     ///     ]
     ///     .into_iter()
     ///     .collect(),
    @@ -231,7 +231,7 @@
     ///     tx.txid(),
     ///     BlockId {
     ///         height: 1,
    -///         hash: Hash::hash("first".as_bytes()),
    +///         hash: Hash::hash("first".as_bytes()),
     ///     },
     /// );
     ///
    @@ -247,7 +247,7 @@
     ///     ConfirmationHeightAnchor {
     ///         anchor_block: BlockId {
     ///             height: 2,
    -///             hash: Hash::hash("second".as_bytes()),
    +///             hash: Hash::hash("second".as_bytes()),
     ///         },
     ///         confirmation_height: 1,
     ///     },
    @@ -265,7 +265,7 @@
     ///     ConfirmationTimeHeightAnchor {
     ///         anchor_block: BlockId {
     ///             height: 2,
    -///             hash: Hash::hash("third".as_bytes()),
    +///             hash: Hash::hash("third".as_bytes()),
     ///         },
     ///         confirmation_height: 1,
     ///         confirmation_time: 123,
    @@ -273,10 +273,10 @@
     /// );
     /// ```
     pub trait Anchor: core::fmt::Debug + Clone + Eq + PartialOrd + Ord + core::hash::Hash {
    -    /// Returns the [`BlockId`] that the associated blockchain data is "anchored" in.
    +    /// Returns the [`BlockId`] that the associated blockchain data is "anchored" in.
         fn anchor_block(&self) -> BlockId;
     
    -    /// Get the upper bound of the chain data's confirmation height.
    +    /// Get the upper bound of the chain data's confirmation height.
         ///
         /// The default definition gives a pessimistic answer. This can be overridden by the `Anchor`
         /// implementation for a more accurate value.
    @@ -285,7 +285,7 @@
         }
     }
     
    -impl<'a, A: Anchor> Anchor for &'a A {
    +impl<'a, A: Anchor> Anchor for &'a A {
         fn anchor_block(&self) -> BlockId {
             <A as Anchor>::anchor_block(self)
         }
    @@ -341,7 +341,7 @@
         }
     }
     
    -macro_rules! impl_append_for_tuple {
    +macro_rules! impl_append_for_tuple {
         ($($a:ident $b:tt)*) => {
             impl<$($a),*> Append for ($($a,)*) where $($a: Append),* {
     
    @@ -368,5 +368,4 @@
     impl_append_for_tuple!(T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 T7 7 T8 8);
     impl_append_for_tuple!(T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 T7 7 T8 8 T9 9);
     impl_append_for_tuple!(T0 0 T1 1 T2 2 T3 3 T4 4 T5 5 T6 6 T7 7 T8 8 T9 9 T10 10);
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/tx_graph.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/tx_graph.rs.html index 865dd56e91..de442e8c94 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/tx_graph.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_chain/tx_graph.rs.html @@ -1,4 +1,4 @@ -tx_graph.rs - source
    1
    +tx_graph.rs - source
    1
     2
     3
     4
    @@ -1574,7 +1574,7 @@
     1574
     1575
     1576
    -
    //! Module for structures that store and traverse transactions.
    +
    //! Module for structures that store and traverse transactions.
     //!
     //! [`TxGraph`] contains transactions and indexes them so you can easily traverse the graph of
     //! those transactions. `TxGraph` is *monotone* in that you can always insert a transaction -- it
    @@ -1584,7 +1584,7 @@
     //! there is currently no way to delete a transaction.
     //!
     //! Transactions can be either whole or partial (i.e., transactions for which we only know some
    -//! outputs, which we usually call "floating outputs"; these are usually inserted using the
    +//! outputs, which we usually call "floating outputs"; these are usually inserted using the
     //! [`insert_txout`] method.).
     //!
     //! The graph contains transactions in the form of [`TxNode`]s. Each node contains the txid, the
    @@ -1594,8 +1594,8 @@
     //!
     //! Conflicting transactions are allowed to coexist within a [`TxGraph`]. This is useful for
     //! identifying and traversing conflicts and descendants of a given transaction. Some [`TxGraph`]
    -//! methods only consider transactions that are "canonical" (i.e., in the best chain or in mempool).
    -//! We decide which transactions are canonical based on the transaction's anchors and the
    +//! methods only consider transactions that are "canonical" (i.e., in the best chain or in mempool).
    +//! We decide which transactions are canonical based on the transaction's anchors and the
     //! `last_seen` (as unconfirmed) timestamp; see the [`try_get_chain_position`] documentation for
     //! more details.
     //!
    @@ -1635,7 +1635,7 @@
     //! let changeset = tx_graph.insert_tx(tx_a);
     //!
     //! // We can restore the state of the `tx_graph` by applying all
    -//! // the changesets obtained by mutating the original (the order doesn't matter).
    +//! // the changesets obtained by mutating the original (the order doesn't matter).
     //! let mut restored_tx_graph: TxGraph = TxGraph::default();
     //! restored_tx_graph.apply_changeset(changeset);
     //!
    @@ -1708,18 +1708,18 @@
     
     /// A transaction node in the [`TxGraph`].
     #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
    -pub struct TxNode<'a, T, A> {
    +pub struct TxNode<'a, T, A> {
         /// Txid of the transaction.
         pub txid: Txid,
         /// A partial or full representation of the transaction.
         pub tx: T,
    -    /// The blocks that the transaction is "anchored" in.
    -    pub anchors: &'a BTreeSet<A>,
    +    /// The blocks that the transaction is "anchored" in.
    +    pub anchors: &'a BTreeSet<A>,
         /// The last-seen unix timestamp of the transaction as unconfirmed.
         pub last_seen_unconfirmed: u64,
     }
     
    -impl<'a, T, A> Deref for TxNode<'a, T, A> {
    +impl<'a, T, A> Deref for TxNode<'a, T, A> {
         type Target = T;
     
         fn deref(&self) -> &Self::Target {
    @@ -1745,11 +1745,11 @@
     
     /// A transaction that is included in the chain, or is still in mempool.
     #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)]
    -pub struct CanonicalTx<'a, T, A> {
    +pub struct CanonicalTx<'a, T, A> {
         /// How the transaction is observed as (confirmed or unconfirmed).
    -    pub chain_position: ChainPosition<&'a A>,
    +    pub chain_position: ChainPosition<&'a A>,
         /// The transaction node (as part of the graph).
    -    pub tx_node: TxNode<'a, T, A>,
    +    pub tx_node: TxNode<'a, T, A>,
     }
     
     /// Errors returned by `TxGraph::calculate_fee`.
    @@ -1762,23 +1762,23 @@
     }
     
     impl fmt::Display for CalculateFeeError {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
             match self {
                 CalculateFeeError::MissingTxOut(outpoints) => write!(
                     f,
    -                "missing `TxOut` for one or more of the inputs of the tx: {:?}",
    +                "missing `TxOut` for one or more of the inputs of the tx: {:?}",
                     outpoints
                 ),
                 CalculateFeeError::NegativeFee(fee) => write!(
                     f,
    -                "transaction is invalid according to the graph and has negative fee: {}",
    +                "transaction is invalid according to the graph and has negative fee: {}",
                     fee
                 ),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for CalculateFeeError {}
     
     impl<A> TxGraph<A> {
    @@ -1820,7 +1820,7 @@
         }
     
         /// Iterate over all full transactions in the graph.
    -    pub fn full_txs(&self) -> impl Iterator<Item = TxNode<'_, Arc<Transaction>, A>> {
    +    pub fn full_txs(&self) -> impl Iterator<Item = TxNode<'_, Arc<Transaction>, A>> {
             self.txs
                 .iter()
                 .filter_map(|(&txid, (tx, anchors, last_seen))| match tx {
    @@ -1844,7 +1844,7 @@
         }
     
         /// Get a transaction node by txid. This only returns `Some` for full transactions.
    -    pub fn get_tx_node(&self, txid: Txid) -> Option<TxNode<'_, Arc<Transaction>, A>> {
    +    pub fn get_tx_node(&self, txid: Txid) -> Option<TxNode<'_, Arc<Transaction>, A>> {
             match &self.txs.get(&txid)? {
                 (TxNodeInternal::Whole(tx), anchors, last_seen) => Some(TxNode {
                     txid,
    @@ -1942,12 +1942,12 @@
         ///
         /// The iterator item is a union of `(vout, txid-set)` where:
         ///
    -    /// - `vout` is the provided `txid`'s outpoint that is being spent
    +    /// - `vout` is the provided `txid`'s outpoint that is being spent
         /// - `txid-set` is the set of txids spending the `vout`.
         pub fn tx_spends(
             &self,
             txid: Txid,
    -    ) -> impl DoubleEndedIterator<Item = (u32, &HashSet<Txid>)> + '_ {
    +    ) -> impl DoubleEndedIterator<Item = (u32, &HashSet<Txid>)> + '_ {
             let start = OutPoint::new(txid, 0);
             let end = OutPoint::new(txid, u32::MAX);
             self.spends
    @@ -1966,14 +1966,14 @@
         ///
         /// * `depth` is the distance between the starting `Transaction` and the `ancestor_tx`. I.e., if
         ///    the `Transaction` is spending an output of the `ancestor_tx` then `depth` will be 1.
    -    /// * `ancestor_tx` is the `Transaction`'s ancestor which we are considering to walk.
    +    /// * `ancestor_tx` is the `Transaction`'s ancestor which we are considering to walk.
         ///
         /// The supplied closure returns an `Option<T>`, allowing the caller to map each `Transaction`
         /// it visits and decide whether to visit ancestors.
    -    pub fn walk_ancestors<'g, T, F, O>(&'g self, tx: T, walk_map: F) -> TxAncestors<'g, A, F>
    +    pub fn walk_ancestors<'g, T, F, O>(&'g self, tx: T, walk_map: F) -> TxAncestors<'g, A, F>
         where
             T: Into<Arc<Transaction>>,
    -        F: FnMut(usize, Arc<Transaction>) -> Option<O> + 'g,
    +        F: FnMut(usize, Arc<Transaction>) -> Option<O> + 'g,
         {
             TxAncestors::new_exclude_root(self, tx, walk_map)
         }
    @@ -1984,13 +1984,13 @@
         ///
         /// * `depth` is the distance between the starting `txid` and the `descendant_txid`. I.e., if the
         ///     descendant is spending an output of the starting `txid` then `depth` will be 1.
    -    /// * `descendant_txid` is the descendant's txid which we are considering to walk.
    +    /// * `descendant_txid` is the descendant's txid which we are considering to walk.
         ///
         /// The supplied closure returns an `Option<T>`, allowing the caller to map each node it visits
         /// and decide whether to visit descendants.
    -    pub fn walk_descendants<'g, F, O>(&'g self, txid: Txid, walk_map: F) -> TxDescendants<A, F>
    +    pub fn walk_descendants<'g, F, O>(&'g self, txid: Txid, walk_map: F) -> TxDescendants<A, F>
         where
    -        F: FnMut(usize, Txid) -> Option<O> + 'g,
    +        F: FnMut(usize, Txid) -> Option<O> + 'g,
         {
             TxDescendants::new_exclude_root(self, txid, walk_map)
         }
    @@ -2001,29 +2001,29 @@
         /// descendants of directly-conflicting transactions, which are also considered conflicts).
         ///
         /// Refer to [`Self::walk_descendants`] for `walk_map` usage.
    -    pub fn walk_conflicts<'g, F, O>(
    -        &'g self,
    -        tx: &'g Transaction,
    +    pub fn walk_conflicts<'g, F, O>(
    +        &'g self,
    +        tx: &'g Transaction,
             walk_map: F,
         ) -> TxDescendants<A, F>
         where
    -        F: FnMut(usize, Txid) -> Option<O> + 'g,
    +        F: FnMut(usize, Txid) -> Option<O> + 'g,
         {
             let txids = self.direct_conflicts(tx).map(|(_, txid)| txid);
             TxDescendants::from_multiple_include_root(self, txids, walk_map)
         }
     
         /// Given a transaction, return an iterator of txids that directly conflict with the given
    -    /// transaction's inputs (spends). The conflicting txids are returned with the given
    -    /// transaction's vin (in which it conflicts).
    +    /// transaction's inputs (spends). The conflicting txids are returned with the given
    +    /// transaction's vin (in which it conflicts).
         ///
    -    /// Note that this only returns directly conflicting txids and won't include:
    +    /// Note that this only returns directly conflicting txids and won't include:
         /// - descendants of conflicting transactions (which are technically also conflicting)
    -    /// - transactions conflicting with the given transaction's ancestors
    -    pub fn direct_conflicts<'g>(
    -        &'g self,
    -        tx: &'g Transaction,
    -    ) -> impl Iterator<Item = (usize, Txid)> + '_ {
    +    /// - transactions conflicting with the given transaction's ancestors
    +    pub fn direct_conflicts<'g>(
    +        &'g self,
    +        tx: &'g Transaction,
    +    ) -> impl Iterator<Item = (usize, Txid)> + '_ {
             let txid = tx.txid();
             tx.input
                 .iter()
    @@ -2156,7 +2156,7 @@
         /// A normal use of this method is to call it with the current system time. Although
         /// block headers contain a timestamp, using the header time would be less effective
         /// at tracking mempool transactions, because it can drift from actual clock time, plus
    -    /// we may want to update a transaction's last seen time repeatedly between blocks.
    +    /// we may want to update a transaction's last seen time repeatedly between blocks.
         ///
         /// # Example
         ///
    @@ -2167,7 +2167,7 @@
         /// # let mut tx_graph = bdk_chain::TxGraph::<()>::new([tx]);
         /// let now = std::time::SystemTime::now()
         ///     .duration_since(UNIX_EPOCH)
    -    ///     .expect("valid duration")
    +    ///     .expect("valid duration")
         ///     .as_secs();
         /// let changeset = tx_graph.update_last_seen_unconfirmed(now);
         /// assert!(!changeset.last_seen.is_empty());
    @@ -2241,7 +2241,7 @@
                         debug_assert_eq!(
                             tx.as_ref().txid(),
                             txid,
    -                        "tx should produce txid that is same as key"
    +                        "tx should produce txid that is same as key"
                         );
                     }
                     None => {
    @@ -2347,8 +2347,8 @@
         /// 2. Unconfirmed transactions that spend from transactions that are evicted, are also
         ///    evicted.
         /// 3. Given two conflicting unconfirmed transactions, the transaction with the lower
    -    ///    `last_seen_unconfirmed` parameter is evicted. A transaction's `last_seen_unconfirmed`
    -    ///    parameter is the max of all it's descendants' `last_seen_unconfirmed` parameters. If the
    +    ///    `last_seen_unconfirmed` parameter is evicted. A transaction's `last_seen_unconfirmed`
    +    ///    parameter is the max of all it's descendants' `last_seen_unconfirmed` parameters. If the
         ///    final `last_seen_unconfirmed`s are the same, the transaction with the lower `txid` (by
         ///    lexicographical order) is evicted.
         ///
    @@ -2378,7 +2378,7 @@
     
             // The tx is not anchored to a block in the best chain, which means that it
             // might be in mempool, or it might have been dropped already.
    -        // Let's check conflicts to find out!
    +        // Let's check conflicts to find out!
             let tx = match tx_node {
                 TxNodeInternal::Whole(tx) => {
                     // A coinbase tx that is not anchored in the best chain cannot be unconfirmed and
    @@ -2400,12 +2400,12 @@
             // We only traverse unconfirmed ancestors since conflicts of confirmed transactions
             // cannot be in the best chain.
     
    -        // First of all, we retrieve all our ancestors. Since we're using `new_include_root`, the
    +        // First of all, we retrieve all our ancestors. Since we're using `new_include_root`, the
             // resulting array will also include `tx`
             let unconfirmed_ancestor_txs =
                 TxAncestors::new_include_root(self, tx.clone(), |_, ancestor_tx: Arc<Transaction>| {
                     let tx_node = self.get_tx_node(ancestor_tx.as_ref().txid())?;
    -                // We're filtering the ancestors to keep only the unconfirmed ones (= no anchors in
    +                // We're filtering the ancestors to keep only the unconfirmed ones (= no anchors in
                     // the best chain)
                     for block in tx_node.anchors {
                         match chain.is_block_in_chain(block.anchor_block(), chain_tip) {
    @@ -2418,14 +2418,14 @@
                 })
                 .collect::<Result<Vec<_>, C::Error>>()?;
     
    -        // We determine our tx's last seen, which is the max between our last seen,
    -        // and our unconf descendants' last seen.
    +        // We determine our tx's last seen, which is the max between our last seen,
    +        // and our unconf descendants' last seen.
             let unconfirmed_descendants_txs = TxDescendants::new_include_root(
                 self,
                 tx.as_ref().txid(),
                 |_, descendant_txid: Txid| {
                     let tx_node = self.get_tx_node(descendant_txid)?;
    -                // We're filtering the ancestors to keep only the unconfirmed ones (= no anchors in
    +                // We're filtering the ancestors to keep only the unconfirmed ones (= no anchors in
                     // the best chain)
                     for block in tx_node.anchors {
                         match chain.is_block_in_chain(block.anchor_block(), chain_tip) {
    @@ -2443,7 +2443,7 @@
                 .iter()
                 .max_by_key(|tx| tx.last_seen_unconfirmed)
                 .map(|tx| tx.last_seen_unconfirmed)
    -            .expect("descendants always includes at least one transaction (the root tx");
    +            .expect("descendants always includes at least one transaction (the root tx");
     
             // Now we traverse our ancestors and consider all their conflicts
             for tx_node in unconfirmed_ancestor_txs {
    @@ -2486,7 +2486,7 @@
             txid: Txid,
         ) -> Option<ChainPosition<&A>> {
             self.try_get_chain_position(chain, chain_tip, txid)
    -            .expect("error is infallible")
    +            .expect("error is infallible")
         }
     
         /// Get the txid of the spending transaction and where the spending transaction is observed in
    @@ -2536,7 +2536,7 @@
             outpoint: OutPoint,
         ) -> Option<(ChainPosition<&A>, Txid)> {
             self.try_get_chain_spend(chain, static_block, outpoint)
    -            .expect("error is infallible")
    +            .expect("error is infallible")
         }
     
         /// List graph transactions that are in `chain` with `chain_tip`.
    @@ -2552,11 +2552,11 @@
         /// If the [`ChainOracle`] is infallible, [`list_chain_txs`] can be used instead.
         ///
         /// [`list_chain_txs`]: Self::list_chain_txs
    -    pub fn try_list_chain_txs<'a, C: ChainOracle + 'a>(
    -        &'a self,
    -        chain: &'a C,
    +    pub fn try_list_chain_txs<'a, C: ChainOracle + 'a>(
    +        &'a self,
    +        chain: &'a C,
             chain_tip: BlockId,
    -    ) -> impl Iterator<Item = Result<CanonicalTx<'a, Arc<Transaction>, A>, C::Error>> {
    +    ) -> impl Iterator<Item = Result<CanonicalTx<'a, Arc<Transaction>, A>, C::Error>> {
             self.full_txs().filter_map(move |tx| {
                 self.try_get_chain_position(chain, chain_tip, tx.txid)
                     .map(|v| {
    @@ -2574,13 +2574,13 @@
         /// This is the infallible version of [`try_list_chain_txs`].
         ///
         /// [`try_list_chain_txs`]: Self::try_list_chain_txs
    -    pub fn list_chain_txs<'a, C: ChainOracle + 'a>(
    -        &'a self,
    -        chain: &'a C,
    +    pub fn list_chain_txs<'a, C: ChainOracle + 'a>(
    +        &'a self,
    +        chain: &'a C,
             chain_tip: BlockId,
    -    ) -> impl Iterator<Item = CanonicalTx<'a, Arc<Transaction>, A>> {
    +    ) -> impl Iterator<Item = CanonicalTx<'a, Arc<Transaction>, A>> {
             self.try_list_chain_txs(chain, chain_tip)
    -            .map(|r| r.expect("oracle is infallible"))
    +            .map(|r| r.expect("oracle is infallible"))
         }
     
         /// Get a filtered list of outputs from the given `outpoints` that are in `chain` with
    @@ -2590,7 +2590,7 @@
         /// (`OI`) for convenience. If `OI` is not necessary, the caller can use `()`, or
         /// [`Iterator::enumerate`] over a list of [`OutPoint`]s.
         ///
    -    /// Floating outputs (i.e., outputs for which we don't have the full transaction in the graph)
    +    /// Floating outputs (i.e., outputs for which we don't have the full transaction in the graph)
         /// are ignored.
         ///
         /// # Error
    @@ -2602,12 +2602,12 @@
         /// instead.
         ///
         /// [`filter_chain_txouts`]: Self::filter_chain_txouts
    -    pub fn try_filter_chain_txouts<'a, C: ChainOracle + 'a, OI: Clone + 'a>(
    -        &'a self,
    -        chain: &'a C,
    +    pub fn try_filter_chain_txouts<'a, C: ChainOracle + 'a, OI: Clone + 'a>(
    +        &'a self,
    +        chain: &'a C,
             chain_tip: BlockId,
    -        outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a,
    -    ) -> impl Iterator<Item = Result<(OI, FullTxOut<A>), C::Error>> + 'a {
    +        outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a,
    +    ) -> impl Iterator<Item = Result<(OI, FullTxOut<A>), C::Error>> + 'a {
             outpoints
                 .into_iter()
                 .map(
    @@ -2653,14 +2653,14 @@
         /// This is the infallible version of [`try_filter_chain_txouts`].
         ///
         /// [`try_filter_chain_txouts`]: Self::try_filter_chain_txouts
    -    pub fn filter_chain_txouts<'a, C: ChainOracle<Error = Infallible> + 'a, OI: Clone + 'a>(
    -        &'a self,
    -        chain: &'a C,
    +    pub fn filter_chain_txouts<'a, C: ChainOracle<Error = Infallible> + 'a, OI: Clone + 'a>(
    +        &'a self,
    +        chain: &'a C,
             chain_tip: BlockId,
    -        outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a,
    -    ) -> impl Iterator<Item = (OI, FullTxOut<A>)> + 'a {
    +        outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a,
    +    ) -> impl Iterator<Item = (OI, FullTxOut<A>)> + 'a {
             self.try_filter_chain_txouts(chain, chain_tip, outpoints)
    -            .map(|r| r.expect("oracle is infallible"))
    +            .map(|r| r.expect("oracle is infallible"))
         }
     
         /// Get a filtered list of unspent outputs (UTXOs) from the given `outpoints` that are in
    @@ -2681,12 +2681,12 @@
         /// instead.
         ///
         /// [`filter_chain_unspents`]: Self::filter_chain_unspents
    -    pub fn try_filter_chain_unspents<'a, C: ChainOracle + 'a, OI: Clone + 'a>(
    -        &'a self,
    -        chain: &'a C,
    +    pub fn try_filter_chain_unspents<'a, C: ChainOracle + 'a, OI: Clone + 'a>(
    +        &'a self,
    +        chain: &'a C,
             chain_tip: BlockId,
    -        outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a,
    -    ) -> impl Iterator<Item = Result<(OI, FullTxOut<A>), C::Error>> + 'a {
    +        outpoints: impl IntoIterator<Item = (OI, OutPoint)> + 'a,
    +    ) -> impl Iterator<Item = Result<(OI, FullTxOut<A>), C::Error>> + 'a {
             self.try_filter_chain_txouts(chain, chain_tip, outpoints)
                 .filter(|r| match r {
                     // keep unspents, drop spents
    @@ -2702,14 +2702,14 @@
         /// This is the infallible version of [`try_filter_chain_unspents`].
         ///
         /// [`try_filter_chain_unspents`]: Self::try_filter_chain_unspents
    -    pub fn filter_chain_unspents<'a, C: ChainOracle<Error = Infallible> + 'a, OI: Clone + 'a>(
    -        &'a self,
    -        chain: &'a C,
    +    pub fn filter_chain_unspents<'a, C: ChainOracle<Error = Infallible> + 'a, OI: Clone + 'a>(
    +        &'a self,
    +        chain: &'a C,
             chain_tip: BlockId,
    -        txouts: impl IntoIterator<Item = (OI, OutPoint)> + 'a,
    -    ) -> impl Iterator<Item = (OI, FullTxOut<A>)> + 'a {
    +        txouts: impl IntoIterator<Item = (OI, OutPoint)> + 'a,
    +    ) -> impl Iterator<Item = (OI, FullTxOut<A>)> + 'a {
             self.try_filter_chain_unspents(chain, chain_tip, txouts)
    -            .map(|r| r.expect("oracle is infallible"))
    +            .map(|r| r.expect("oracle is infallible"))
         }
     
         /// Get the total balance of `outpoints` that are in `chain` of `chain_tip`.
    @@ -2778,13 +2778,13 @@
             trust_predicate: impl FnMut(&OI, &Script) -> bool,
         ) -> Balance {
             self.try_balance(chain, chain_tip, outpoints, trust_predicate)
    -            .expect("oracle is infallible")
    +            .expect("oracle is infallible")
         }
     }
     
     /// The [`ChangeSet`] represents changes to a [`TxGraph`].
     ///
    -/// Since [`TxGraph`] is monotone, the "changeset" can only contain transactions to be added and
    +/// Since [`TxGraph`] is monotone, the "changeset" can only contain transactions to be added and
     /// not removed.
     ///
     /// Refer to [module-level documentation] for more.
    @@ -2792,13 +2792,13 @@
     /// [module-level documentation]: crate::tx_graph
     #[derive(Debug, Clone, PartialEq)]
     #[cfg_attr(
    -    feature = "serde",
    +    feature = "serde",
         derive(serde::Deserialize, serde::Serialize),
         serde(
    -        crate = "serde_crate",
    +        crate = "serde_crate",
             bound(
    -            deserialize = "A: Ord + serde::Deserialize<'de>",
    -            serialize = "A: Ord + serde::Serialize",
    +            deserialize = "A: Ord + serde::Deserialize<'de>",
    +            serialize = "A: Ord + serde::Serialize",
             )
         )
     )]
    @@ -2843,7 +2843,7 @@
         ///
         /// This is useful if you want to find which heights you need to fetch data about in order to
         /// confirm or exclude these anchors.
    -    pub fn anchor_heights(&self) -> impl Iterator<Item = u32> + '_
    +    pub fn anchor_heights(&self) -> impl Iterator<Item = u32> + '_
         where
             A: Anchor,
         {
    @@ -2918,17 +2918,17 @@
     /// Returned by the [`walk_ancestors`] method of [`TxGraph`].
     ///
     /// [`walk_ancestors`]: TxGraph::walk_ancestors
    -pub struct TxAncestors<'g, A, F> {
    -    graph: &'g TxGraph<A>,
    +pub struct TxAncestors<'g, A, F> {
    +    graph: &'g TxGraph<A>,
         visited: HashSet<Txid>,
         queue: VecDeque<(usize, Arc<Transaction>)>,
         filter_map: F,
     }
     
    -impl<'g, A, F> TxAncestors<'g, A, F> {
    +impl<'g, A, F> TxAncestors<'g, A, F> {
         /// Creates a `TxAncestors` that includes the starting `Transaction` when iterating.
         pub(crate) fn new_include_root(
    -        graph: &'g TxGraph<A>,
    +        graph: &'g TxGraph<A>,
             tx: impl Into<Arc<Transaction>>,
             filter_map: F,
         ) -> Self {
    @@ -2942,7 +2942,7 @@
     
         /// Creates a `TxAncestors` that excludes the starting `Transaction` when iterating.
         pub(crate) fn new_exclude_root(
    -        graph: &'g TxGraph<A>,
    +        graph: &'g TxGraph<A>,
             tx: impl Into<Arc<Transaction>>,
             filter_map: F,
         ) -> Self {
    @@ -2960,7 +2960,7 @@
         /// `Transaction`s when iterating.
         #[allow(unused)]
         pub(crate) fn from_multiple_include_root<I>(
    -        graph: &'g TxGraph<A>,
    +        graph: &'g TxGraph<A>,
             txs: I,
             filter_map: F,
         ) -> Self
    @@ -2980,7 +2980,7 @@
         /// `Transaction`s when iterating.
         #[allow(unused)]
         pub(crate) fn from_multiple_exclude_root<I>(
    -        graph: &'g TxGraph<A>,
    +        graph: &'g TxGraph<A>,
             txs: I,
             filter_map: F,
         ) -> Self
    @@ -3012,7 +3012,7 @@
         }
     }
     
    -impl<'g, A, F, O> Iterator for TxAncestors<'g, A, F>
    +impl<'g, A, F, O> Iterator for TxAncestors<'g, A, F>
     where
         F: FnMut(usize, Arc<Transaction>) -> Option<O>,
     {
    @@ -3038,17 +3038,17 @@
     /// Returned by the [`walk_descendants`] method of [`TxGraph`].
     ///
     /// [`walk_descendants`]: TxGraph::walk_descendants
    -pub struct TxDescendants<'g, A, F> {
    -    graph: &'g TxGraph<A>,
    +pub struct TxDescendants<'g, A, F> {
    +    graph: &'g TxGraph<A>,
         visited: HashSet<Txid>,
         queue: VecDeque<(usize, Txid)>,
         filter_map: F,
     }
     
    -impl<'g, A, F> TxDescendants<'g, A, F> {
    +impl<'g, A, F> TxDescendants<'g, A, F> {
         /// Creates a `TxDescendants` that includes the starting `txid` when iterating.
         #[allow(unused)]
    -    pub(crate) fn new_include_root(graph: &'g TxGraph<A>, txid: Txid, filter_map: F) -> Self {
    +    pub(crate) fn new_include_root(graph: &'g TxGraph<A>, txid: Txid, filter_map: F) -> Self {
             Self {
                 graph,
                 visited: Default::default(),
    @@ -3058,7 +3058,7 @@
         }
     
         /// Creates a `TxDescendants` that excludes the starting `txid` when iterating.
    -    pub(crate) fn new_exclude_root(graph: &'g TxGraph<A>, txid: Txid, filter_map: F) -> Self {
    +    pub(crate) fn new_exclude_root(graph: &'g TxGraph<A>, txid: Txid, filter_map: F) -> Self {
             let mut descendants = Self {
                 graph,
                 visited: Default::default(),
    @@ -3072,7 +3072,7 @@
         /// Creates a `TxDescendants` from multiple starting transactions that includes the starting
         /// `txid`s when iterating.
         pub(crate) fn from_multiple_include_root<I>(
    -        graph: &'g TxGraph<A>,
    +        graph: &'g TxGraph<A>,
             txids: I,
             filter_map: F,
         ) -> Self
    @@ -3091,7 +3091,7 @@
         /// `txid`s when iterating.
         #[allow(unused)]
         pub(crate) fn from_multiple_exclude_root<I>(
    -        graph: &'g TxGraph<A>,
    +        graph: &'g TxGraph<A>,
             txids: I,
             filter_map: F,
         ) -> Self
    @@ -3111,7 +3111,7 @@
         }
     }
     
    -impl<'g, A, F> TxDescendants<'g, A, F> {
    +impl<'g, A, F> TxDescendants<'g, A, F> {
         fn populate_queue(&mut self, depth: usize, txid: Txid) {
             let spend_paths = self
                 .graph
    @@ -3123,7 +3123,7 @@
         }
     }
     
    -impl<'g, A, F, O> Iterator for TxDescendants<'g, A, F>
    +impl<'g, A, F, O> Iterator for TxDescendants<'g, A, F>
     where
         F: FnMut(usize, Txid) -> Option<O>,
     {
    @@ -3150,5 +3150,4 @@
     fn tx_outpoint_range(txid: Txid) -> RangeInclusive<OutPoint> {
         OutPoint::new(txid, u32::MIN)..=OutPoint::new(txid, u32::MAX)
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/bnb.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/bnb.rs.html index 6a8478e0ec..1cf8238589 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/bnb.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/bnb.rs.html @@ -1,4 +1,4 @@ -bnb.rs - source
    1
    +bnb.rs - source
    1
     2
     3
     4
    @@ -643,7 +643,7 @@
     643
     644
     645
    -
    use super::*;
    +
    use super::*;
     
     /// Strategy in which we should branch.
     pub enum BranchStrategy {
    @@ -663,22 +663,22 @@
     
     /// Closure to decide the branching strategy, alongside a score (if the current selection is a
     /// candidate solution).
    -pub type DecideStrategy<'c, S> = dyn Fn(&Bnb<'c, S>) -> (BranchStrategy, Option<S>);
    +pub type DecideStrategy<'c, S> = dyn Fn(&Bnb<'c, S>) -> (BranchStrategy, Option<S>);
     
     /// [`Bnb`] represents the current state of the BnB algorithm.
    -pub struct Bnb<'c, S> {
    -    pub pool: Vec<(usize, &'c WeightedValue)>,
    +pub struct Bnb<'c, S> {
    +    pub pool: Vec<(usize, &'c WeightedValue)>,
         pub pool_pos: usize,
         pub best_score: S,
     
    -    pub selection: CoinSelector<'c>,
    +    pub selection: CoinSelector<'c>,
         pub rem_abs: u64,
         pub rem_eff: i64,
     }
     
    -impl<'c, S: Ord> Bnb<'c, S> {
    +impl<'c, S: Ord> Bnb<'c, S> {
         /// Creates a new [`Bnb`].
    -    pub fn new(selector: CoinSelector<'c>, pool: Vec<(usize, &'c WeightedValue)>, max: S) -> Self {
    +    pub fn new(selector: CoinSelector<'c>, pool: Vec<(usize, &'c WeightedValue)>, max: S) -> Self {
             let (rem_abs, rem_eff) = pool.iter().fold((0, 0), |(abs, eff), (_, c)| {
                 (
                     abs + c.value,
    @@ -700,7 +700,7 @@
         ///
         /// `strategy` should assess our current selection/node and determine the branching strategy and
         /// whether this selection is a candidate solution (if so, return the selection score).
    -    pub fn into_iter<'f>(self, strategy: &'f DecideStrategy<'c, S>) -> BnbIter<'c, 'f, S> {
    +    pub fn into_iter<'f>(self, strategy: &'f DecideStrategy<'c, S>) -> BnbIter<'c, 'f, S> {
             BnbIter {
                 state: self,
                 done: false,
    @@ -708,7 +708,7 @@
             }
         }
     
    -    /// Attempt to backtrack to the previously selected node's omission branch, return false
    +    /// Attempt to backtrack to the previously selected node's omission branch, return false
         /// otherwise (no more solutions).
         pub fn backtrack(&mut self) -> bool {
             (0..self.pool_pos).rev().any(|pos| {
    @@ -749,17 +749,17 @@
         }
     }
     
    -pub struct BnbIter<'c, 'f, S> {
    -    state: Bnb<'c, S>,
    +pub struct BnbIter<'c, 'f, S> {
    +    state: Bnb<'c, S>,
         done: bool,
     
         /// Check our current selection (node) and returns the branching strategy alongside a score
         /// (if the current selection is a candidate solution).
    -    strategy: &'f DecideStrategy<'c, S>,
    +    strategy: &'f DecideStrategy<'c, S>,
     }
     
    -impl<'c, 'f, S: Ord + Copy + Display> Iterator for BnbIter<'c, 'f, S> {
    -    type Item = Option<CoinSelector<'c>>;
    +impl<'c, 'f, S: Ord + Copy + Display> Iterator for BnbIter<'c, 'f, S> {
    +    type Item = Option<CoinSelector<'c>>;
     
         fn next(&mut self) -> Option<Self::Item> {
             if self.done {
    @@ -778,7 +778,7 @@
     
             debug_assert!(
                 !strategy.will_continue() || self.state.pool_pos < self.state.pool.len(),
    -            "Faulty strategy implementation! Strategy suggested that we continue traversing, however, we have already reached the end of the candidates pool! pool_len={}, pool_pos={}",
    +            "Faulty strategy implementation! Strategy suggested that we continue traversing, however, we have already reached the end of the candidates pool! pool_len={}, pool_pos={}",
                 self.state.pool.len(), self.state.pool_pos,
             );
     
    @@ -811,7 +811,7 @@
     /// Determines how we should limit rounds of branch and bound.
     pub enum BnbLimit {
         Rounds(usize),
    -    #[cfg(feature = "std")]
    +    #[cfg(feature = "std")]
         Duration(core::time::Duration),
     }
     
    @@ -821,7 +821,7 @@
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl From<core::time::Duration> for BnbLimit {
         fn from(v: core::time::Duration) -> Self {
             Self::Duration(v)
    @@ -837,7 +837,7 @@
     ///   RBF), and `max_extra_target` (which can be used to increase the possible solution set, given
     ///   that the sender is okay with sending extra to the receiver).
     ///
    -/// Murch's Master Thesis: <https://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf>
    +/// Murch's Master Thesis: <https://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf>
     /// Bitcoin Core Implementation: <https://github.com/bitcoin/bitcoin/blob/23.x/src/wallet/coinselection.cpp#L65>
     ///
     /// TODO: Another optimization we could do is figure out candidates with the smallest waste, and
    @@ -940,353 +940,352 @@
                     .take(rounds)
                     .reduce(|b, c| if c.is_some() { c } else { b })
             }
    -        #[cfg(feature = "std")]
    +        #[cfg(feature = "std")]
             BnbLimit::Duration(duration) => {
                 let start = std::time::SystemTime::now();
                 bnb.into_iter(&strategy)
    -                .take_while(|_| start.elapsed().expect("failed to get system time") <= duration)
    +                .take_while(|_| start.elapsed().expect("failed to get system time") <= duration)
                     .reduce(|b, c| if c.is_some() { c } else { b })
             }
         }?
     }
     
    -#[cfg(all(test, feature = "miniscript"))]
    -mod test {
    -    use bitcoin::secp256k1::Secp256k1;
    -
    -    use crate::coin_select::{evaluate_cs::evaluate, ExcessStrategyKind};
    -
    -    use super::{
    -        coin_select_bnb,
    -        evaluate_cs::{Evaluation, EvaluationError},
    -        tester::Tester,
    -        CoinSelector, CoinSelectorOpt, Vec, WeightedValue,
    -    };
    -
    -    fn tester() -> Tester {
    -        const DESC_STR: &str = "tr(xprv9uBuvtdjghkz8D1qzsSXS9Vs64mqrUnXqzNccj2xcvnCHPpXKYE1U2Gbh9CDHk8UPyF2VuXpVkDA7fk5ZP4Hd9KnhUmTscKmhee9Dp5sBMK)";
    -        Tester::new(&Secp256k1::default(), DESC_STR)
    -    }
    -
    -    fn evaluate_bnb(
    -        initial_selector: CoinSelector,
    -        max_tries: usize,
    -    ) -> Result<Evaluation, EvaluationError> {
    -        evaluate(initial_selector, |cs| {
    -            coin_select_bnb(max_tries, cs.clone()).map_or(false, |new_cs| {
    -                *cs = new_cs;
    -                true
    -            })
    -        })
    -    }
    -
    -    #[test]
    -    fn not_enough_coins() {
    -        let t = tester();
    -        let candidates: Vec<WeightedValue> = vec![
    -            t.gen_candidate(0, 100_000).into(),
    -            t.gen_candidate(1, 100_000).into(),
    -        ];
    -        let opts = t.gen_opts(200_000);
    -        let selector = CoinSelector::new(&candidates, &opts);
    -        assert!(!coin_select_bnb(10_000, selector).is_some());
    -    }
    -
    -    #[test]
    -    fn exactly_enough_coins_preselected() {
    -        let t = tester();
    -        let candidates: Vec<WeightedValue> = vec![
    -            t.gen_candidate(0, 100_000).into(), // to preselect
    -            t.gen_candidate(1, 100_000).into(), // to preselect
    -            t.gen_candidate(2, 100_000).into(),
    -        ];
    -        let opts = CoinSelectorOpt {
    -            target_feerate: 0.0,
    -            ..t.gen_opts(200_000)
    -        };
    -        let selector = {
    -            let mut selector = CoinSelector::new(&candidates, &opts);
    -            selector.select(0); // preselect
    -            selector.select(1); // preselect
    -            selector
    -        };
    -
    -        let evaluation = evaluate_bnb(selector, 10_000).expect("eval failed");
    -        println!("{}", evaluation);
    -        assert_eq!(evaluation.solution.selected, (0..=1).collect());
    -        assert_eq!(evaluation.solution.excess_strategies.len(), 1);
    -        assert_eq!(
    -            evaluation.feerate_offset(ExcessStrategyKind::ToFee).floor(),
    -            0.0
    -        );
    -    }
    -
    -    /// `cost_of_change` acts as the upper-bound in Bnb; we check whether these boundaries are
    -    /// enforced in code
    -    #[test]
    -    fn cost_of_change() {
    -        let t = tester();
    -        let candidates: Vec<WeightedValue> = vec![
    -            t.gen_candidate(0, 200_000).into(),
    -            t.gen_candidate(1, 200_000).into(),
    -            t.gen_candidate(2, 200_000).into(),
    -        ];
    -
    -        // lowest and highest possible `recipient_value` opts for derived `drain_waste`, assuming
    -        // that we want 2 candidates selected
    -        let (lowest_opts, highest_opts) = {
    -            let opts = t.gen_opts(0);
    -
    -            let fee_from_inputs =
    -                (candidates[0].weight as f32 * opts.target_feerate).ceil() as u64 * 2;
    -            let fee_from_template =
    -                ((opts.base_weight + 2) as f32 * opts.target_feerate).ceil() as u64;
    -
    -            let lowest_opts = CoinSelectorOpt {
    -                target_value: Some(
    -                    400_000 - fee_from_inputs - fee_from_template - opts.drain_waste() as u64,
    -                ),
    -                ..opts
    -            };
    -
    -            let highest_opts = CoinSelectorOpt {
    -                target_value: Some(400_000 - fee_from_inputs - fee_from_template),
    -                ..opts
    -            };
    -
    -            (lowest_opts, highest_opts)
    -        };
    -
    -        // test lowest possible target we can select
    -        let lowest_eval = evaluate_bnb(CoinSelector::new(&candidates, &lowest_opts), 10_000);
    -        assert!(lowest_eval.is_ok());
    -        let lowest_eval = lowest_eval.unwrap();
    -        println!("LB {}", lowest_eval);
    -        assert_eq!(lowest_eval.solution.selected.len(), 2);
    -        assert_eq!(lowest_eval.solution.excess_strategies.len(), 1);
    -        assert_eq!(
    -            lowest_eval
    -                .feerate_offset(ExcessStrategyKind::ToFee)
    -                .floor(),
    -            0.0
    -        );
    -
    -        // test the highest possible target we can select
    -        let highest_eval = evaluate_bnb(CoinSelector::new(&candidates, &highest_opts), 10_000);
    -        assert!(highest_eval.is_ok());
    -        let highest_eval = highest_eval.unwrap();
    -        println!("UB {}", highest_eval);
    -        assert_eq!(highest_eval.solution.selected.len(), 2);
    -        assert_eq!(highest_eval.solution.excess_strategies.len(), 1);
    -        assert_eq!(
    -            highest_eval
    -                .feerate_offset(ExcessStrategyKind::ToFee)
    -                .floor(),
    -            0.0
    -        );
    -
    -        // test lower out of bounds
    -        let loob_opts = CoinSelectorOpt {
    -            target_value: lowest_opts.target_value.map(|v| v - 1),
    -            ..lowest_opts
    -        };
    -        let loob_eval = evaluate_bnb(CoinSelector::new(&candidates, &loob_opts), 10_000);
    -        assert!(loob_eval.is_err());
    -        println!("Lower OOB: {}", loob_eval.unwrap_err());
    -
    -        // test upper out of bounds
    -        let uoob_opts = CoinSelectorOpt {
    -            target_value: highest_opts.target_value.map(|v| v + 1),
    -            ..highest_opts
    -        };
    -        let uoob_eval = evaluate_bnb(CoinSelector::new(&candidates, &uoob_opts), 10_000);
    -        assert!(uoob_eval.is_err());
    -        println!("Upper OOB: {}", uoob_eval.unwrap_err());
    -    }
    -
    -    #[test]
    -    fn try_select() {
    -        let t = tester();
    -        let candidates: Vec<WeightedValue> = vec![
    -            t.gen_candidate(0, 300_000).into(),
    -            t.gen_candidate(1, 300_000).into(),
    -            t.gen_candidate(2, 300_000).into(),
    -            t.gen_candidate(3, 200_000).into(),
    -            t.gen_candidate(4, 200_000).into(),
    -        ];
    -        let make_opts = |v: u64| -> CoinSelectorOpt {
    -            CoinSelectorOpt {
    -                target_feerate: 0.0,
    -                ..t.gen_opts(v)
    -            }
    -        };
    -
    -        let test_cases = vec![
    -            (make_opts(100_000), false, 0),
    -            (make_opts(200_000), true, 1),
    -            (make_opts(300_000), true, 1),
    -            (make_opts(500_000), true, 2),
    -            (make_opts(1_000_000), true, 4),
    -            (make_opts(1_200_000), false, 0),
    -            (make_opts(1_300_000), true, 5),
    -            (make_opts(1_400_000), false, 0),
    -        ];
    -
    -        for (opts, expect_solution, expect_selected) in test_cases {
    -            let res = evaluate_bnb(CoinSelector::new(&candidates, &opts), 10_000);
    -            assert_eq!(res.is_ok(), expect_solution);
    -
    -            match res {
    -                Ok(eval) => {
    -                    println!("{}", eval);
    -                    assert_eq!(eval.feerate_offset(ExcessStrategyKind::ToFee), 0.0);
    -                    assert_eq!(eval.solution.selected.len(), expect_selected as _);
    -                }
    -                Err(err) => println!("expected failure: {}", err),
    -            }
    -        }
    -    }
    -
    -    #[test]
    -    fn early_bailout_optimization() {
    -        let t = tester();
    -
    -        // target: 300_000
    -        // candidates: 2x of 125_000, 1000x of 100_000, 1x of 50_000
    -        // expected solution: 2x 125_000, 1x 50_000
    -        // set bnb max tries: 1100, should succeed
    -        let candidates = {
    -            let mut candidates: Vec<WeightedValue> = vec![
    -                t.gen_candidate(0, 125_000).into(),
    -                t.gen_candidate(1, 125_000).into(),
    -                t.gen_candidate(2, 50_000).into(),
    -            ];
    -            (3..3 + 1000_u32)
    -                .for_each(|index| candidates.push(t.gen_candidate(index, 100_000).into()));
    -            candidates
    -        };
    -        let opts = CoinSelectorOpt {
    -            target_feerate: 0.0,
    -            ..t.gen_opts(300_000)
    -        };
    -
    -        let result = evaluate_bnb(CoinSelector::new(&candidates, &opts), 1100);
    -        assert!(result.is_ok());
    -
    -        let eval = result.unwrap();
    -        println!("{}", eval);
    -        assert_eq!(eval.solution.selected, (0..=2).collect());
    -    }
    -
    -    #[test]
    -    fn should_exhaust_iteration() {
    -        static MAX_TRIES: usize = 1000;
    -        let t = tester();
    -        let candidates = (0..MAX_TRIES + 1)
    -            .map(|index| t.gen_candidate(index as _, 10_000).into())
    -            .collect::<Vec<WeightedValue>>();
    -        let opts = t.gen_opts(10_001 * MAX_TRIES as u64);
    -        let result = evaluate_bnb(CoinSelector::new(&candidates, &opts), MAX_TRIES);
    -        assert!(result.is_err());
    -        println!("error as expected: {}", result.unwrap_err());
    -    }
    -
    -    /// Solution should have fee >= min_absolute_fee (or no solution at all)
    -    #[test]
    -    fn min_absolute_fee() {
    -        let t = tester();
    -        let candidates = {
    -            let mut candidates = Vec::new();
    -            t.gen_weighted_values(&mut candidates, 5, 10_000);
    -            t.gen_weighted_values(&mut candidates, 5, 20_000);
    -            t.gen_weighted_values(&mut candidates, 5, 30_000);
    -            t.gen_weighted_values(&mut candidates, 10, 10_300);
    -            t.gen_weighted_values(&mut candidates, 10, 10_500);
    -            t.gen_weighted_values(&mut candidates, 10, 10_700);
    -            t.gen_weighted_values(&mut candidates, 10, 10_900);
    -            t.gen_weighted_values(&mut candidates, 10, 11_000);
    -            t.gen_weighted_values(&mut candidates, 10, 12_000);
    -            t.gen_weighted_values(&mut candidates, 10, 13_000);
    -            candidates
    -        };
    -        let mut opts = CoinSelectorOpt {
    -            min_absolute_fee: 1,
    -            ..t.gen_opts(100_000)
    -        };
    -
    -        (1..=120_u64).for_each(|fee_factor| {
    -            opts.min_absolute_fee = fee_factor * 31;
    -
    -            let result = evaluate_bnb(CoinSelector::new(&candidates, &opts), 21_000);
    -            match result {
    -                Ok(result) => {
    -                    println!("Solution {}", result);
    -                    let fee = result.solution.excess_strategies[&ExcessStrategyKind::ToFee].fee;
    -                    assert!(fee >= opts.min_absolute_fee);
    -                    assert_eq!(result.solution.excess_strategies.len(), 1);
    -                }
    -                Err(err) => {
    -                    println!("No Solution: {}", err);
    -                }
    -            }
    -        });
    -    }
    -
    -    /// For a decreasing feerate (long-term feerate is lower than effective feerate), we should
    -    /// select less. For increasing feerate (long-term feerate is higher than effective feerate), we
    -    /// should select more.
    -    #[test]
    -    fn feerate_difference() {
    -        let t = tester();
    -        let candidates = {
    -            let mut candidates = Vec::new();
    -            t.gen_weighted_values(&mut candidates, 10, 2_000);
    -            t.gen_weighted_values(&mut candidates, 10, 5_000);
    -            t.gen_weighted_values(&mut candidates, 10, 20_000);
    -            candidates
    -        };
    -
    -        let decreasing_feerate_opts = CoinSelectorOpt {
    -            target_feerate: 1.25,
    -            long_term_feerate: Some(0.25),
    -            ..t.gen_opts(100_000)
    -        };
    -
    -        let increasing_feerate_opts = CoinSelectorOpt {
    -            target_feerate: 0.25,
    -            long_term_feerate: Some(1.25),
    -            ..t.gen_opts(100_000)
    -        };
    -
    -        let decreasing_res = evaluate_bnb(
    -            CoinSelector::new(&candidates, &decreasing_feerate_opts),
    -            21_000,
    -        )
    -        .expect("no result");
    -        let decreasing_len = decreasing_res.solution.selected.len();
    -
    -        let increasing_res = evaluate_bnb(
    -            CoinSelector::new(&candidates, &increasing_feerate_opts),
    -            21_000,
    -        )
    -        .expect("no result");
    -        let increasing_len = increasing_res.solution.selected.len();
    -
    -        println!("decreasing_len: {}", decreasing_len);
    -        println!("increasing_len: {}", increasing_len);
    -        assert!(decreasing_len < increasing_len);
    -    }
    -
    -    /// TODO: UNIMPLEMENTED TESTS:
    -    /// * Excess strategies:
    -    ///     * We should always have `ExcessStrategy::ToFee`.
    -    ///     * We should only have `ExcessStrategy::ToRecipient` when `max_extra_target > 0`.
    -    ///     * We should only have `ExcessStrategy::ToDrain` when `drain_value >= min_drain_value`.
    -    /// * Fuzz
    -    ///     * Solution feerate should never be lower than target feerate
    -    ///     * Solution fee should never be lower than `min_absolute_fee`.
    -    ///     * Preselected should always remain selected
    -    fn _todo() {}
    -}
    -
    -
    \ No newline at end of file +// #[cfg(all(test, feature = "miniscript"))] +// mod test { +// use bitcoin::secp256k1::Secp256k1; +// +// use crate::coin_select::{evaluate_cs::evaluate, ExcessStrategyKind}; +// +// use super::{ +// coin_select_bnb, +// evaluate_cs::{Evaluation, EvaluationError}, +// tester::Tester, +// CoinSelector, CoinSelectorOpt, Vec, WeightedValue, +// }; +// +// fn tester() -> Tester { +// const DESC_STR: &str = "tr(xprv9uBuvtdjghkz8D1qzsSXS9Vs64mqrUnXqzNccj2xcvnCHPpXKYE1U2Gbh9CDHk8UPyF2VuXpVkDA7fk5ZP4Hd9KnhUmTscKmhee9Dp5sBMK)"; +// Tester::new(&Secp256k1::default(), DESC_STR) +// } +// +// fn evaluate_bnb( +// initial_selector: CoinSelector, +// max_tries: usize, +// ) -> Result<Evaluation, EvaluationError> { +// evaluate(initial_selector, |cs| { +// coin_select_bnb(max_tries, cs.clone()).map_or(false, |new_cs| { +// *cs = new_cs; +// true +// }) +// }) +// } +// +// #[test] +// fn not_enough_coins() { +// let t = tester(); +// let candidates: Vec<WeightedValue> = vec![ +// t.gen_candidate(0, 100_000).into(), +// t.gen_candidate(1, 100_000).into(), +// ]; +// let opts = t.gen_opts(200_000); +// let selector = CoinSelector::new(&candidates, &opts); +// assert!(!coin_select_bnb(10_000, selector).is_some()); +// } +// +// #[test] +// fn exactly_enough_coins_preselected() { +// let t = tester(); +// let candidates: Vec<WeightedValue> = vec![ +// t.gen_candidate(0, 100_000).into(), // to preselect +// t.gen_candidate(1, 100_000).into(), // to preselect +// t.gen_candidate(2, 100_000).into(), +// ]; +// let opts = CoinSelectorOpt { +// target_feerate: 0.0, +// ..t.gen_opts(200_000) +// }; +// let selector = { +// let mut selector = CoinSelector::new(&candidates, &opts); +// selector.select(0); // preselect +// selector.select(1); // preselect +// selector +// }; +// +// let evaluation = evaluate_bnb(selector, 10_000).expect("eval failed"); +// println!("{}", evaluation); +// assert_eq!(evaluation.solution.selected, (0..=1).collect()); +// assert_eq!(evaluation.solution.excess_strategies.len(), 1); +// assert_eq!( +// evaluation.feerate_offset(ExcessStrategyKind::ToFee).floor(), +// 0.0 +// ); +// } +// +// /// `cost_of_change` acts as the upper-bound in Bnb; we check whether these boundaries are +// /// enforced in code +// #[test] +// fn cost_of_change() { +// let t = tester(); +// let candidates: Vec<WeightedValue> = vec![ +// t.gen_candidate(0, 200_000).into(), +// t.gen_candidate(1, 200_000).into(), +// t.gen_candidate(2, 200_000).into(), +// ]; +// +// // lowest and highest possible `recipient_value` opts for derived `drain_waste`, assuming +// // that we want 2 candidates selected +// let (lowest_opts, highest_opts) = { +// let opts = t.gen_opts(0); +// +// let fee_from_inputs = +// (candidates[0].weight as f32 * opts.target_feerate).ceil() as u64 * 2; +// let fee_from_template = +// ((opts.base_weight + 2) as f32 * opts.target_feerate).ceil() as u64; +// +// let lowest_opts = CoinSelectorOpt { +// target_value: Some( +// 400_000 - fee_from_inputs - fee_from_template - opts.drain_waste() as u64, +// ), +// ..opts +// }; +// +// let highest_opts = CoinSelectorOpt { +// target_value: Some(400_000 - fee_from_inputs - fee_from_template), +// ..opts +// }; +// +// (lowest_opts, highest_opts) +// }; +// +// // test lowest possible target we can select +// let lowest_eval = evaluate_bnb(CoinSelector::new(&candidates, &lowest_opts), 10_000); +// assert!(lowest_eval.is_ok()); +// let lowest_eval = lowest_eval.unwrap(); +// println!("LB {}", lowest_eval); +// assert_eq!(lowest_eval.solution.selected.len(), 2); +// assert_eq!(lowest_eval.solution.excess_strategies.len(), 1); +// assert_eq!( +// lowest_eval +// .feerate_offset(ExcessStrategyKind::ToFee) +// .floor(), +// 0.0 +// ); +// +// // test the highest possible target we can select +// let highest_eval = evaluate_bnb(CoinSelector::new(&candidates, &highest_opts), 10_000); +// assert!(highest_eval.is_ok()); +// let highest_eval = highest_eval.unwrap(); +// println!("UB {}", highest_eval); +// assert_eq!(highest_eval.solution.selected.len(), 2); +// assert_eq!(highest_eval.solution.excess_strategies.len(), 1); +// assert_eq!( +// highest_eval +// .feerate_offset(ExcessStrategyKind::ToFee) +// .floor(), +// 0.0 +// ); +// +// // test lower out of bounds +// let loob_opts = CoinSelectorOpt { +// target_value: lowest_opts.target_value.map(|v| v - 1), +// ..lowest_opts +// }; +// let loob_eval = evaluate_bnb(CoinSelector::new(&candidates, &loob_opts), 10_000); +// assert!(loob_eval.is_err()); +// println!("Lower OOB: {}", loob_eval.unwrap_err()); +// +// // test upper out of bounds +// let uoob_opts = CoinSelectorOpt { +// target_value: highest_opts.target_value.map(|v| v + 1), +// ..highest_opts +// }; +// let uoob_eval = evaluate_bnb(CoinSelector::new(&candidates, &uoob_opts), 10_000); +// assert!(uoob_eval.is_err()); +// println!("Upper OOB: {}", uoob_eval.unwrap_err()); +// } +// +// #[test] +// fn try_select() { +// let t = tester(); +// let candidates: Vec<WeightedValue> = vec![ +// t.gen_candidate(0, 300_000).into(), +// t.gen_candidate(1, 300_000).into(), +// t.gen_candidate(2, 300_000).into(), +// t.gen_candidate(3, 200_000).into(), +// t.gen_candidate(4, 200_000).into(), +// ]; +// let make_opts = |v: u64| -> CoinSelectorOpt { +// CoinSelectorOpt { +// target_feerate: 0.0, +// ..t.gen_opts(v) +// } +// }; +// +// let test_cases = vec![ +// (make_opts(100_000), false, 0), +// (make_opts(200_000), true, 1), +// (make_opts(300_000), true, 1), +// (make_opts(500_000), true, 2), +// (make_opts(1_000_000), true, 4), +// (make_opts(1_200_000), false, 0), +// (make_opts(1_300_000), true, 5), +// (make_opts(1_400_000), false, 0), +// ]; +// +// for (opts, expect_solution, expect_selected) in test_cases { +// let res = evaluate_bnb(CoinSelector::new(&candidates, &opts), 10_000); +// assert_eq!(res.is_ok(), expect_solution); +// +// match res { +// Ok(eval) => { +// println!("{}", eval); +// assert_eq!(eval.feerate_offset(ExcessStrategyKind::ToFee), 0.0); +// assert_eq!(eval.solution.selected.len(), expect_selected as _); +// } +// Err(err) => println!("expected failure: {}", err), +// } +// } +// } +// +// #[test] +// fn early_bailout_optimization() { +// let t = tester(); +// +// // target: 300_000 +// // candidates: 2x of 125_000, 1000x of 100_000, 1x of 50_000 +// // expected solution: 2x 125_000, 1x 50_000 +// // set bnb max tries: 1100, should succeed +// let candidates = { +// let mut candidates: Vec<WeightedValue> = vec![ +// t.gen_candidate(0, 125_000).into(), +// t.gen_candidate(1, 125_000).into(), +// t.gen_candidate(2, 50_000).into(), +// ]; +// (3..3 + 1000_u32) +// .for_each(|index| candidates.push(t.gen_candidate(index, 100_000).into())); +// candidates +// }; +// let opts = CoinSelectorOpt { +// target_feerate: 0.0, +// ..t.gen_opts(300_000) +// }; +// +// let result = evaluate_bnb(CoinSelector::new(&candidates, &opts), 1100); +// assert!(result.is_ok()); +// +// let eval = result.unwrap(); +// println!("{}", eval); +// assert_eq!(eval.solution.selected, (0..=2).collect()); +// } +// +// #[test] +// fn should_exhaust_iteration() { +// static MAX_TRIES: usize = 1000; +// let t = tester(); +// let candidates = (0..MAX_TRIES + 1) +// .map(|index| t.gen_candidate(index as _, 10_000).into()) +// .collect::<Vec<WeightedValue>>(); +// let opts = t.gen_opts(10_001 * MAX_TRIES as u64); +// let result = evaluate_bnb(CoinSelector::new(&candidates, &opts), MAX_TRIES); +// assert!(result.is_err()); +// println!("error as expected: {}", result.unwrap_err()); +// } +// +// /// Solution should have fee >= min_absolute_fee (or no solution at all) +// #[test] +// fn min_absolute_fee() { +// let t = tester(); +// let candidates = { +// let mut candidates = Vec::new(); +// t.gen_weighted_values(&mut candidates, 5, 10_000); +// t.gen_weighted_values(&mut candidates, 5, 20_000); +// t.gen_weighted_values(&mut candidates, 5, 30_000); +// t.gen_weighted_values(&mut candidates, 10, 10_300); +// t.gen_weighted_values(&mut candidates, 10, 10_500); +// t.gen_weighted_values(&mut candidates, 10, 10_700); +// t.gen_weighted_values(&mut candidates, 10, 10_900); +// t.gen_weighted_values(&mut candidates, 10, 11_000); +// t.gen_weighted_values(&mut candidates, 10, 12_000); +// t.gen_weighted_values(&mut candidates, 10, 13_000); +// candidates +// }; +// let mut opts = CoinSelectorOpt { +// min_absolute_fee: 1, +// ..t.gen_opts(100_000) +// }; +// +// (1..=120_u64).for_each(|fee_factor| { +// opts.min_absolute_fee = fee_factor * 31; +// +// let result = evaluate_bnb(CoinSelector::new(&candidates, &opts), 21_000); +// match result { +// Ok(result) => { +// println!("Solution {}", result); +// let fee = result.solution.excess_strategies[&ExcessStrategyKind::ToFee].fee; +// assert!(fee >= opts.min_absolute_fee); +// assert_eq!(result.solution.excess_strategies.len(), 1); +// } +// Err(err) => { +// println!("No Solution: {}", err); +// } +// } +// }); +// } +// +// /// For a decreasing feerate (long-term feerate is lower than effective feerate), we should +// /// select less. For increasing feerate (long-term feerate is higher than effective feerate), we +// /// should select more. +// #[test] +// fn feerate_difference() { +// let t = tester(); +// let candidates = { +// let mut candidates = Vec::new(); +// t.gen_weighted_values(&mut candidates, 10, 2_000); +// t.gen_weighted_values(&mut candidates, 10, 5_000); +// t.gen_weighted_values(&mut candidates, 10, 20_000); +// candidates +// }; +// +// let decreasing_feerate_opts = CoinSelectorOpt { +// target_feerate: 1.25, +// long_term_feerate: Some(0.25), +// ..t.gen_opts(100_000) +// }; +// +// let increasing_feerate_opts = CoinSelectorOpt { +// target_feerate: 0.25, +// long_term_feerate: Some(1.25), +// ..t.gen_opts(100_000) +// }; +// +// let decreasing_res = evaluate_bnb( +// CoinSelector::new(&candidates, &decreasing_feerate_opts), +// 21_000, +// ) +// .expect("no result"); +// let decreasing_len = decreasing_res.solution.selected.len(); +// +// let increasing_res = evaluate_bnb( +// CoinSelector::new(&candidates, &increasing_feerate_opts), +// 21_000, +// ) +// .expect("no result"); +// let increasing_len = increasing_res.solution.selected.len(); +// +// println!("decreasing_len: {}", decreasing_len); +// println!("increasing_len: {}", increasing_len); +// assert!(decreasing_len < increasing_len); +// } +// +// /// TODO: UNIMPLEMENTED TESTS: +// /// * Excess strategies: +// /// * We should always have `ExcessStrategy::ToFee`. +// /// * We should only have `ExcessStrategy::ToRecipient` when `max_extra_target > 0`. +// /// * We should only have `ExcessStrategy::ToDrain` when `drain_value >= min_drain_value`. +// /// * Fuzz +// /// * Solution feerate should never be lower than target feerate +// /// * Solution fee should never be lower than `min_absolute_fee`. +// /// * Preselected should always remain selected +// fn _todo() {} +// } + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/coin_selector.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/coin_selector.rs.html index a9cfd0ec41..edc8197ea4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/coin_selector.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/coin_selector.rs.html @@ -1,4 +1,4 @@ -coin_selector.rs - source
    1
    +coin_selector.rs - source
    1
     2
     3
     4
    @@ -615,7 +615,7 @@
     615
     616
     617
    -
    use super::*;
    +
    use super::*;
     
     /// A [`WeightedValue`] represents an input candidate for [`CoinSelector`]. This can either be a
     /// single UTXO, or a group of UTXOs that should be spent together.
    @@ -650,8 +650,8 @@
     
         /// Effective value of this input candidate: `actual_value - input_weight * feerate (sats/wu)`.
         pub fn effective_value(&self, effective_feerate: f32) -> i64 {
    -        // We prefer undershooting the candidate's effective value (so we over-estimate the fee of a
    -        // candidate). If we overshoot the candidate's effective value, it may be possible to find a
    +        // We prefer undershooting the candidate's effective value (so we over-estimate the fee of a
    +        // candidate). If we overshoot the candidate's effective value, it may be possible to find a
             // solution which does not meet the target feerate.
             self.value as i64 - (self.weight as f32 * effective_feerate).ceil() as i64
         }
    @@ -751,18 +751,18 @@
     
     /// [`CoinSelector`] selects and deselects from a set of candidates.
     #[derive(Debug, Clone)]
    -pub struct CoinSelector<'a> {
    -    pub opts: &'a CoinSelectorOpt,
    -    pub candidates: &'a Vec<WeightedValue>,
    +pub struct CoinSelector<'a> {
    +    pub opts: &'a CoinSelectorOpt,
    +    pub candidates: &'a Vec<WeightedValue>,
         selected: BTreeSet<usize>,
     }
     
    -impl<'a> CoinSelector<'a> {
    +impl<'a> CoinSelector<'a> {
         pub fn candidate(&self, index: usize) -> &WeightedValue {
             &self.candidates[index]
         }
     
    -    pub fn new(candidates: &'a Vec<WeightedValue>, opts: &'a CoinSelectorOpt) -> Self {
    +    pub fn new(candidates: &'a Vec<WeightedValue>, opts: &'a CoinSelectorOpt) -> Self {
             Self {
                 candidates,
                 selected: Default::default(),
    @@ -860,24 +860,24 @@
             self.selected.len()
         }
     
    -    pub fn selected(&self) -> impl Iterator<Item = (usize, &'a WeightedValue)> + '_ {
    +    pub fn selected(&self) -> impl Iterator<Item = (usize, &'a WeightedValue)> + '_ {
             self.selected
                 .iter()
                 .map(move |&index| (index, &self.candidates[index]))
         }
     
    -    pub fn unselected(&self) -> impl Iterator<Item = (usize, &'a WeightedValue)> + '_ {
    +    pub fn unselected(&self) -> impl Iterator<Item = (usize, &'a WeightedValue)> + '_ {
             self.candidates
                 .iter()
                 .enumerate()
                 .filter(move |(index, _)| !self.selected.contains(index))
         }
     
    -    pub fn selected_indexes(&self) -> impl Iterator<Item = usize> + '_ {
    +    pub fn selected_indexes(&self) -> impl Iterator<Item = usize> + '_ {
             self.selected.iter().cloned()
         }
     
    -    pub fn unselected_indexes(&self) -> impl Iterator<Item = usize> + '_ {
    +    pub fn unselected_indexes(&self) -> impl Iterator<Item = usize> + '_ {
             (0..self.candidates.len()).filter(move |index| !self.selected.contains(index))
         }
     
    @@ -923,7 +923,7 @@
                 let selected = self.selected_absolute_value();
     
                 // find the largest unsatisfied constraint (if any), and return the error of that constraint
    -            // "selected" should always be greater than or equal to these selected values
    +            // "selected" should always be greater than or equal to these selected values
                 [
                     (
                         SelectionConstraint::TargetValue,
    @@ -988,7 +988,7 @@
                 );
     
                 // no drain, send the excess to the recipient
    -            // if `excess == 0`, this result will be the same as the previous, so don't consider it
    +            // if `excess == 0`, this result will be the same as the previous, so don't consider it
                 // if `max_extra_target == 0`, there is no leeway for this strategy
                 if excess_without_drain > 0 && self.opts.max_extra_target > 0 {
                     let extra_recipient_value =
    @@ -1025,7 +1025,7 @@
     
             debug_assert!(
                 !excess_strategies.is_empty(),
    -            "should have at least one excess strategy."
    +            "should have at least one excess strategy."
             );
     
             Ok(Selection {
    @@ -1044,7 +1044,7 @@
     }
     
     impl core::fmt::Display for SelectionError {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             let SelectionError {
                 selected,
                 missing,
    @@ -1052,13 +1052,13 @@
             } = self;
             write!(
                 f,
    -            "insufficient coins selected; selected={}, missing={}, unsatisfied_constraint={:?}",
    +            "insufficient coins selected; selected={}, missing={}, unsatisfied_constraint={:?}",
                 selected, missing, constraint
             )
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for SelectionError {}
     
     #[derive(Clone, Copy, Debug, PartialEq, Eq)]
    @@ -1074,12 +1074,12 @@
     }
     
     impl core::fmt::Display for SelectionConstraint {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             match self {
    -            SelectionConstraint::TargetValue => core::write!(f, "target_value"),
    -            SelectionConstraint::TargetFee => core::write!(f, "target_fee"),
    -            SelectionConstraint::MinAbsoluteFee => core::write!(f, "min_absolute_fee"),
    -            SelectionConstraint::MinDrainValue => core::write!(f, "min_drain_value"),
    +            SelectionConstraint::TargetValue => core::write!(f, "target_value"),
    +            SelectionConstraint::TargetFee => core::write!(f, "target_fee"),
    +            SelectionConstraint::MinAbsoluteFee => core::write!(f, "min_absolute_fee"),
    +            SelectionConstraint::MinDrainValue => core::write!(f, "min_drain_value"),
             }
         }
     }
    @@ -1108,10 +1108,10 @@
     }
     
     impl Selection {
    -    pub fn apply_selection<'a, T>(
    -        &'a self,
    -        candidates: &'a [T],
    -    ) -> impl Iterator<Item = &'a T> + 'a {
    +    pub fn apply_selection<'a, T>(
    +        &'a self,
    +        candidates: &'a [T],
    +    ) -> impl Iterator<Item = &'a T> + 'a {
             self.selected.iter().map(move |i| &candidates[*i])
         }
     
    @@ -1120,16 +1120,16 @@
             self.excess_strategies
                 .iter()
                 .min_by_key(|&(_, a)| a.waste)
    -            .expect("selection has no excess strategy")
    +            .expect("selection has no excess strategy")
         }
     }
     
     impl core::fmt::Display for ExcessStrategyKind {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             match self {
    -            ExcessStrategyKind::ToFee => core::write!(f, "to_fee"),
    -            ExcessStrategyKind::ToRecipient => core::write!(f, "to_recipient"),
    -            ExcessStrategyKind::ToDrain => core::write!(f, "to_drain"),
    +            ExcessStrategyKind::ToFee => core::write!(f, "to_fee"),
    +            ExcessStrategyKind::ToRecipient => core::write!(f, "to_recipient"),
    +            ExcessStrategyKind::ToDrain => core::write!(f, "to_drain"),
             }
         }
     }
    @@ -1147,7 +1147,7 @@
     
         use super::{CoinSelector, CoinSelectorOpt, WeightedValue};
     
    -    /// Ensure `target_value` is respected. Can't have any disrespect.
    +    /// Ensure `target_value` is respected. Can't have any disrespect.
         #[test]
         fn target_value_respected() {
             let target_value = 1000_u64;
    @@ -1179,12 +1179,12 @@
     
                 let res = selector.finish();
                 if v.value < opts.target_value.unwrap_or(0) {
    -                let err = res.expect_err("should have failed");
    +                let err = res.expect_err("should have failed");
                     assert_eq!(err.selected, v.value);
                     assert_eq!(err.missing, target_value - v.value);
                     assert_eq!(err.constraint, SelectionConstraint::MinAbsoluteFee);
                 } else {
    -                let sel = res.expect("should have succeeded");
    +                let sel = res.expect("should have succeeded");
                     assert_eq!(sel.excess, v.value - opts.target_value.unwrap_or(0));
                 }
             }
    @@ -1215,7 +1215,7 @@
     
             let selection = CoinSelector::new(&candidates, &opts)
                 .select_until_finished()
    -            .expect("should succeed");
    +            .expect("should succeed");
     
             assert!(selection.selected.len() > 1);
             assert_eq!(selection.excess_strategies.len(), 1);
    @@ -1232,5 +1232,4 @@
         /// * actual drain value should be equal to or higher than `min_drain_value` (or else no drain).
         fn _todo() {}
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/lib.rs.html index 7185aba6bc..d48ec97de5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_coin_select/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -31,9 +31,9 @@
     31
     32
     33
    -
    #![no_std]
    +
    #![no_std]
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     extern crate std;
     
     #[macro_use]
    @@ -54,7 +54,7 @@
     mod bnb;
     pub use bnb::*;
     
    -/// Txin "base" fields include `outpoint` (32+4) and `nSequence` (4). This does not include
    +/// Txin "base" fields include `outpoint` (32+4) and `nSequence` (4). This does not include
     /// `scriptSigLen` or `scriptSig`.
     pub const TXIN_BASE_WEIGHT: u32 = (32 + 4 + 4) * 4;
     
    @@ -64,5 +64,4 @@
     pub(crate) fn varint_size(v: usize) -> u32 {
         bitcoin::VarInt(v as u64).size() as u32
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_electrum/electrum_ext.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_electrum/electrum_ext.rs.html index edd0c3a24b..a919f05ad4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_electrum/electrum_ext.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_electrum/electrum_ext.rs.html @@ -1,4 +1,4 @@ -electrum_ext.rs - source
    1
    +electrum_ext.rs - source
    1
     2
     3
     4
    @@ -584,7 +584,7 @@
     584
     585
     586
    -
    use bdk_chain::{
    +
    use bdk_chain::{
         bitcoin::{OutPoint, ScriptBuf, Transaction, Txid},
         collections::{BTreeMap, HashMap, HashSet},
         local_chain::CheckPoint,
    @@ -653,7 +653,7 @@
             let mut request_spks = request.spks_by_keychain;
     
             // We keep track of already-scanned spks just in case a reorg happens and we need to do a
    -        // rescan. We need to keep track of this as iterators in `keychain_spks` are "unbounded" so
    +        // rescan. We need to keep track of this as iterators in `keychain_spks` are "unbounded" so
             // cannot be collected. In addition, we keep track of whether an spk has an active tx
             // history for determining the `last_active_index`.
             // * key: (keychain, spk_index) that identifies the spk.
    @@ -892,7 +892,7 @@
             (start_height..).zip(hashes).collect::<BTreeMap<u32, _>>()
         };
     
    -    // Find the "point of agreement" (if any).
    +    // Find the "point of agreement" (if any).
         let agreement_cp = {
             let mut agreement_cp = Option::<CheckPoint>::None;
             for cp in prev_tip.iter() {
    @@ -902,7 +902,7 @@
                     None => {
                         assert!(
                             new_tip_height >= cp_block.height,
    -                        "already checked that electrum's tip cannot be smaller"
    +                        "already checked that electrum's tip cannot be smaller"
                         );
                         let hash = client.block_header(cp_block.height as _)?.block_hash();
                         new_blocks.insert(cp_block.height, hash);
    @@ -926,11 +926,11 @@
             .map(|(height, hash)| BlockId { height, hash })
             .fold(agreement_cp, |prev_cp, block| {
                 Some(match prev_cp {
    -                Some(cp) => cp.push(block).expect("must extend checkpoint"),
    +                Some(cp) => cp.push(block).expect("must extend checkpoint"),
                     None => CheckPoint::new(block),
                 })
             })
    -        .expect("must have at least one checkpoint");
    +        .expect("must have at least one checkpoint");
     
         Ok((new_tip, agreement_height))
     }
    @@ -952,8 +952,8 @@
         // transactions residing in the genesis block to have height 0, then interpret a height of 0 as
         // unconfirmed for all other transactions.
         if txid
    -        == Txid::from_str("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b")
    -            .expect("must deserialize genesis coinbase txid")
    +        == Txid::from_str("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b")
    +            .expect("must deserialize genesis coinbase txid")
         {
             let anchor_block = cps.values().next()?.block_id();
             return Some(ConfirmationHeightAnchor {
    @@ -963,7 +963,7 @@
         }
         match raw_height {
             h if h <= 0 => {
    -            debug_assert!(h == 0 || h == -1, "unexpected height ({}) from electrum", h);
    +            debug_assert!(h == 0 || h == -1, "unexpected height ({}) from electrum", h);
                 None
             }
             h => {
    @@ -1059,7 +1059,7 @@
                 .output
                 .first()
                 .map(|txo| &txo.script_pubkey)
    -            .expect("tx must have an output");
    +            .expect("tx must have an output");
     
             // because of restrictions of the Electrum API, we have to use the `script_get_history`
             // call to get confirmation status of our transaction
    @@ -1082,7 +1082,7 @@
     
     /// Fetch transaction of given `txid`.
     ///
    -/// We maintain a `tx_cache` so that we won't need to fetch from Electrum with every call.
    +/// We maintain a `tx_cache` so that we won't need to fetch from Electrum with every call.
     fn fetch_tx<C: ElectrumApi>(
         client: &C,
         tx_cache: &mut TxCache,
    @@ -1097,7 +1097,7 @@
         })
     }
     
    -// Helper function which fetches the `TxOut`s of our relevant transactions' previous transactions,
    +// Helper function which fetches the `TxOut`s of our relevant transactions' previous transactions,
     // which we do not have by default. This data is needed to calculate the transaction fee.
     fn fetch_prev_txout<C: ElectrumApi>(
         client: &C,
    @@ -1170,5 +1170,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_electrum/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_electrum/lib.rs.html index 219c7c02dc..831153d750 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_electrum/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_electrum/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -19,14 +19,14 @@
     19
     20
     21
    -
    //! This crate is used for updating structures of [`bdk_chain`] with data from an Electrum server.
    +
    //! This crate is used for updating structures of [`bdk_chain`] with data from an Electrum server.
     //!
     //! The two primary methods are [`ElectrumExt::sync`] and [`ElectrumExt::full_scan`]. In most cases
     //! [`ElectrumExt::sync`] is used to sync the transaction histories of scripts that the application
    -//! cares about, for example the scripts for all the receive addresses of a Wallet's keychain that it
    +//! cares about, for example the scripts for all the receive addresses of a Wallet's keychain that it
     //! has shown a user. [`ElectrumExt::full_scan`] is meant to be used when importing or restoring a
     //! keychain where the range of possibly used scripts is not known. In this case it is necessary to
    -//! scan all keychain scripts until a number (the "stop gap") of unused scripts is discovered. For a
    +//! scan all keychain scripts until a number (the "stop gap") of unused scripts is discovered. For a
     //! sync or full scan the user receives relevant blockchain data and output updates for
     //! [`bdk_chain`].
     //!
    @@ -40,5 +40,4 @@
     pub use bdk_chain;
     pub use electrum_client;
     pub use electrum_ext::*;
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/async_ext.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/async_ext.rs.html index 13897b747d..38baa80197 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/async_ext.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/async_ext.rs.html @@ -1,4 +1,4 @@ -async_ext.rs - source
    1
    +async_ext.rs - source
    1
     2
     3
     4
    @@ -588,7 +588,7 @@
     588
     589
     590
    -
    use std::collections::BTreeSet;
    +
    use std::collections::BTreeSet;
     
     use async_trait::async_trait;
     use bdk_chain::spk_client::{FullScanRequest, FullScanResult, SyncRequest, SyncResult};
    @@ -612,8 +612,8 @@
     /// Refer to [crate-level documentation] for more.
     ///
     /// [crate-level documentation]: crate
    -#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
    -#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
    +#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
    +#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
     pub trait EsploraAsyncExt {
         /// Scan keychain scripts for transactions against Esplora, returning an update that can be
         /// applied to the receiving structures.
    @@ -627,7 +627,7 @@
         ///
         /// ## Note
         ///
    -    /// `stop_gap` is defined as "the maximum number of consecutive unused addresses".
    +    /// `stop_gap` is defined as "the maximum number of consecutive unused addresses".
         /// For example, with a `stop_gap` of  3, `full_scan` will keep scanning
         /// until it encounters 3 consecutive script pubkeys with no associated transactions.
         ///
    @@ -661,8 +661,8 @@
         ) -> Result<SyncResult, Error>;
     }
     
    -#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
    -#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
    +#[cfg_attr(target_arch = "wasm32", async_trait(?Send))]
    +#[cfg_attr(not(target_arch = "wasm32"), async_trait)]
     impl EsploraAsyncExt for esplora_client::AsyncClient {
         async fn full_scan<K: Ord + Clone + Send>(
             &self,
    @@ -724,7 +724,7 @@
     ///
     /// We want to do this before fetching transactions and anchors as we cannot fetch latest blocks AND
     /// transactions atomically, and the checkpoint tip is used to determine last-scanned block (for
    -/// block-based chain-sources). Therefore it's better to be conservative when setting the tip (use
    +/// block-based chain-sources). Therefore it's better to be conservative when setting the tip (use
     /// an earlier tip rather than a later tip) otherwise the caller may accidentally skip blocks when
     /// alternating between chain-sources.
     async fn fetch_latest_blocks(
    @@ -755,7 +755,7 @@
         let &tip_height = latest_blocks
             .keys()
             .last()
    -        .expect("must have atleast one entry");
    +        .expect("must have atleast one entry");
         if height > tip_height {
             return Ok(None);
         }
    @@ -785,7 +785,7 @@
                 break;
             } else {
                 // it is not strictly necessary to include all the conflicted heights (we do need the
    -            // first one) but it seems prudent to make sure the updated chain's heights are a
    +            // first one) but it seems prudent to make sure the updated chain's heights are a
                 // superset of the existing chain after update.
                 conflicts.push(BlockId {
                     height: local_cp.height(),
    @@ -794,11 +794,11 @@
             }
         }
     
    -    let mut tip = point_of_agreement.expect("remote esplora should have same genesis block");
    +    let mut tip = point_of_agreement.expect("remote esplora should have same genesis block");
     
         tip = tip
             .extend(conflicts.into_iter().rev())
    -        .expect("evicted are in order");
    +        .expect("evicted are in order");
     
         for anchor in anchors {
             let height = anchor.0.anchor_block().height;
    @@ -898,7 +898,7 @@
                     }
                 }
     
    -            let last_index = last_index.expect("Must be set since handles wasn't empty.");
    +            let last_index = last_index.expect("Must be set since handles wasn't empty.");
                 let gap_limit_reached = if let Some(i) = last_active_index {
                     last_index >= i.saturating_add(stop_gap as u32)
                 } else {
    @@ -1006,7 +1006,7 @@
     
         use crate::async_ext::{chain_update, fetch_latest_blocks};
     
    -    macro_rules! h {
    +    macro_rules! h {
             ($index:literal) => {{
                 bdk_chain::bitcoin::hashes::Hash::hash($index.as_bytes())
             }};
    @@ -1015,48 +1015,48 @@
         /// Ensure that update does not remove heights (from original), and all anchor heights are included.
         #[tokio::test]
         pub async fn test_finalize_chain_update() -> anyhow::Result<()> {
    -        struct TestCase<'a> {
    -            name: &'a str,
    +        struct TestCase<'a> {
    +            name: &'a str,
                 /// Initial blockchain height to start the env with.
                 initial_env_height: u32,
                 /// Initial checkpoint heights to start with.
    -            initial_cps: &'a [u32],
    +            initial_cps: &'a [u32],
                 /// The final blockchain height of the env.
                 final_env_height: u32,
                 /// The anchors to test with: `(height, txid)`. Only the height is provided as we can fetch
                 /// the blockhash from the env.
    -            anchors: &'a [(u32, Txid)],
    +            anchors: &'a [(u32, Txid)],
             }
     
             let test_cases = [
                 TestCase {
    -                name: "chain_extends",
    +                name: "chain_extends",
                     initial_env_height: 60,
                     initial_cps: &[59, 60],
                     final_env_height: 90,
                     anchors: &[],
                 },
                 TestCase {
    -                name: "introduce_older_heights",
    +                name: "introduce_older_heights",
                     initial_env_height: 50,
                     initial_cps: &[10, 15],
                     final_env_height: 50,
    -                anchors: &[(11, h!("A")), (14, h!("B"))],
    +                anchors: &[(11, h!("A")), (14, h!("B"))],
                 },
                 TestCase {
    -                name: "introduce_older_heights_after_chain_extends",
    +                name: "introduce_older_heights_after_chain_extends",
                     initial_env_height: 50,
                     initial_cps: &[10, 15],
                     final_env_height: 100,
    -                anchors: &[(11, h!("A")), (14, h!("B"))],
    +                anchors: &[(11, h!("A")), (14, h!("B"))],
                 },
             ];
     
             for (i, t) in test_cases.into_iter().enumerate() {
    -            println!("[{}] running test case: {}", i, t.name);
    +            println!("[{}] running test case: {}", i, t.name);
     
                 let env = TestEnv::new()?;
    -            let base_url = format!("http://{}", &env.electrsd.esplora_url.clone().unwrap());
    +            let base_url = format!("http://{}", &env.electrsd.esplora_url.clone().unwrap());
                 let client = Builder::new(base_url.as_str()).build_async()?;
     
                 // set env to `initial_env_height`
    @@ -1097,7 +1097,7 @@
                     chain.apply_update(update)?;
                     chain
                 };
    -            println!("local chain height: {}", local_chain.tip().height());
    +            println!("local chain height: {}", local_chain.tip().height());
     
                 // extend env chain
                 if let Some(to_mine) = t
    @@ -1138,7 +1138,7 @@
                 let mut updated_local_chain = local_chain.clone();
                 updated_local_chain.apply_update(update)?;
                 println!(
    -                "updated local chain height: {}",
    +                "updated local chain height: {}",
                     updated_local_chain.tip().height()
                 );
     
    @@ -1154,7 +1154,7 @@
                             .collect::<BTreeSet<_>>();
                         updated_heights.is_superset(&initial_heights)
                     },
    -                "heights from the initial chain must all be in the updated chain",
    +                "heights from the initial chain must all be in the updated chain",
                 );
     
                 assert!(
    @@ -1171,12 +1171,11 @@
                             .collect::<BTreeSet<_>>();
                         anchor_heights.is_superset(&exp_anchor_heights)
                     },
    -                "anchor heights must all be in updated chain",
    +                "anchor heights must all be in updated chain",
                 );
             }
     
             Ok(())
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/blocking_ext.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/blocking_ext.rs.html index 3b6ca52077..6da4a77492 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/blocking_ext.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/blocking_ext.rs.html @@ -1,4 +1,4 @@ -blocking_ext.rs - source
    1
    +blocking_ext.rs - source
    1
     2
     3
     4
    @@ -784,7 +784,7 @@
     784
     785
     786
    -
    use std::collections::BTreeSet;
    +
    use std::collections::BTreeSet;
     use std::thread::JoinHandle;
     use std::usize;
     
    @@ -821,7 +821,7 @@
         ///
         /// ## Note
         ///
    -    /// `stop_gap` is defined as "the maximum number of consecutive unused addresses".
    +    /// `stop_gap` is defined as "the maximum number of consecutive unused addresses".
         /// For example, with a `stop_gap` of  3, `full_scan` will keep scanning
         /// until it encounters 3 consecutive script pubkeys with no associated transactions.
         ///
    @@ -904,7 +904,7 @@
     ///
     /// We want to do this before fetching transactions and anchors as we cannot fetch latest blocks AND
     /// transactions atomically, and the checkpoint tip is used to determine last-scanned block (for
    -/// block-based chain-sources). Therefore it's better to be conservative when setting the tip (use
    +/// block-based chain-sources). Therefore it's better to be conservative when setting the tip (use
     /// an earlier tip rather than a later tip) otherwise the caller may accidentally skip blocks when
     /// alternating between chain-sources.
     fn fetch_latest_blocks(
    @@ -934,7 +934,7 @@
         let &tip_height = latest_blocks
             .keys()
             .last()
    -        .expect("must have atleast one entry");
    +        .expect("must have atleast one entry");
         if height > tip_height {
             return Ok(None);
         }
    @@ -964,7 +964,7 @@
                 break;
             } else {
                 // it is not strictly necessary to include all the conflicted heights (we do need the
    -            // first one) but it seems prudent to make sure the updated chain's heights are a
    +            // first one) but it seems prudent to make sure the updated chain's heights are a
                 // superset of the existing chain after update.
                 conflicts.push(BlockId {
                     height: local_cp.height(),
    @@ -973,11 +973,11 @@
             }
         }
     
    -    let mut tip = point_of_agreement.expect("remote esplora should have same genesis block");
    +    let mut tip = point_of_agreement.expect("remote esplora should have same genesis block");
     
         tip = tip
             .extend(conflicts.into_iter().rev())
    -        .expect("evicted are in order");
    +        .expect("evicted are in order");
     
         for anchor in anchors {
             let height = anchor.0.anchor_block().height;
    @@ -1046,7 +1046,7 @@
                 }
     
                 for handle in handles {
    -                let (index, txs) = handle.join().expect("thread must not panic")?;
    +                let (index, txs) = handle.join().expect("thread must not panic")?;
                     last_index = Some(index);
                     if !txs.is_empty() {
                         last_active_index = Some(index);
    @@ -1077,7 +1077,7 @@
                     }
                 }
     
    -            let last_index = last_index.expect("Must be set since handles wasn't empty.");
    +            let last_index = last_index.expect("Must be set since handles wasn't empty.");
                 let gap_limit_reached = if let Some(i) = last_active_index {
                     last_index >= i.saturating_add(stop_gap as u32)
                 } else {
    @@ -1144,7 +1144,7 @@
             }
     
             for handle in handles {
    -            let (txid, status) = handle.join().expect("thread must not panic")?;
    +            let (txid, status) = handle.join().expect("thread must not panic")?;
                 if let Some(anchor) = anchor_from_status(&status) {
                     let _ = tx_graph.insert_anchor(txid, anchor);
                 }
    @@ -1192,65 +1192,65 @@
         use std::collections::{BTreeMap, BTreeSet};
         use std::time::Duration;
     
    -    macro_rules! h {
    +    macro_rules! h {
             ($index:literal) => {{
                 bdk_chain::bitcoin::hashes::Hash::hash($index.as_bytes())
             }};
         }
     
    -    macro_rules! local_chain {
    +    macro_rules! local_chain {
             [ $(($height:expr, $block_hash:expr)), * ] => {{
                 #[allow(unused_mut)]
                 bdk_chain::local_chain::LocalChain::from_blocks([$(($height, $block_hash).into()),*].into_iter().collect())
    -                .expect("chain must have genesis block")
    +                .expect("chain must have genesis block")
             }};
         }
     
         /// Ensure that update does not remove heights (from original), and all anchor heights are included.
         #[test]
         pub fn test_finalize_chain_update() -> anyhow::Result<()> {
    -        struct TestCase<'a> {
    -            name: &'a str,
    +        struct TestCase<'a> {
    +            name: &'a str,
                 /// Initial blockchain height to start the env with.
                 initial_env_height: u32,
                 /// Initial checkpoint heights to start with in the local chain.
    -            initial_cps: &'a [u32],
    +            initial_cps: &'a [u32],
                 /// The final blockchain height of the env.
                 final_env_height: u32,
                 /// The anchors to test with: `(height, txid)`. Only the height is provided as we can fetch
                 /// the blockhash from the env.
    -            anchors: &'a [(u32, Txid)],
    +            anchors: &'a [(u32, Txid)],
             }
     
             let test_cases = [
                 TestCase {
    -                name: "chain_extends",
    +                name: "chain_extends",
                     initial_env_height: 60,
                     initial_cps: &[59, 60],
                     final_env_height: 90,
                     anchors: &[],
                 },
                 TestCase {
    -                name: "introduce_older_heights",
    +                name: "introduce_older_heights",
                     initial_env_height: 50,
                     initial_cps: &[10, 15],
                     final_env_height: 50,
    -                anchors: &[(11, h!("A")), (14, h!("B"))],
    +                anchors: &[(11, h!("A")), (14, h!("B"))],
                 },
                 TestCase {
    -                name: "introduce_older_heights_after_chain_extends",
    +                name: "introduce_older_heights_after_chain_extends",
                     initial_env_height: 50,
                     initial_cps: &[10, 15],
                     final_env_height: 100,
    -                anchors: &[(11, h!("A")), (14, h!("B"))],
    +                anchors: &[(11, h!("A")), (14, h!("B"))],
                 },
             ];
     
             for (i, t) in test_cases.into_iter().enumerate() {
    -            println!("[{}] running test case: {}", i, t.name);
    +            println!("[{}] running test case: {}", i, t.name);
     
                 let env = TestEnv::new()?;
    -            let base_url = format!("http://{}", &env.electrsd.esplora_url.clone().unwrap());
    +            let base_url = format!("http://{}", &env.electrsd.esplora_url.clone().unwrap());
                 let client = Builder::new(base_url.as_str()).build_blocking();
     
                 // set env to `initial_env_height`
    @@ -1290,7 +1290,7 @@
                     chain.apply_update(update)?;
                     chain
                 };
    -            println!("local chain height: {}", local_chain.tip().height());
    +            println!("local chain height: {}", local_chain.tip().height());
     
                 // extend env chain
                 if let Some(to_mine) = t
    @@ -1330,7 +1330,7 @@
                 let mut updated_local_chain = local_chain.clone();
                 updated_local_chain.apply_update(update)?;
                 println!(
    -                "updated local chain height: {}",
    +                "updated local chain height: {}",
                     updated_local_chain.tip().height()
                 );
     
    @@ -1346,7 +1346,7 @@
                             .collect::<BTreeSet<_>>();
                         updated_heights.is_superset(&initial_heights)
                     },
    -                "heights from the initial chain must all be in the updated chain",
    +                "heights from the initial chain must all be in the updated chain",
                 );
     
                 assert!(
    @@ -1363,7 +1363,7 @@
                             .collect::<BTreeSet<_>>();
                         anchor_heights.is_superset(&exp_anchor_heights)
                     },
    -                "anchor heights must all be in updated chain",
    +                "anchor heights must all be in updated chain",
                 );
             }
     
    @@ -1388,112 +1388,112 @@
             };
             // so new blocks can be seen by Electrs
             let env = env.reset_electrsd()?;
    -        let base_url = format!("http://{}", &env.electrsd.esplora_url.clone().unwrap());
    +        let base_url = format!("http://{}", &env.electrsd.esplora_url.clone().unwrap());
             let client = Builder::new(base_url.as_str()).build_blocking();
     
             struct TestCase {
    -            name: &'static str,
    +            name: &'static str,
                 /// Original local chain to start off with.
                 chain: LocalChain,
                 /// Heights of floating anchors. [`chain_update_blocking`] will request for checkpoints
                 /// of these heights.
    -            request_heights: &'static [u32],
    +            request_heights: &'static [u32],
                 /// The expected local chain result (heights only).
    -            exp_update_heights: &'static [u32],
    +            exp_update_heights: &'static [u32],
             }
     
             let test_cases = [
                 TestCase {
    -                name: "request_later_blocks",
    +                name: "request_later_blocks",
                     chain: local_chain![(0, blocks[&0]), (21, blocks[&21])],
                     request_heights: &[22, 25, 28],
                     exp_update_heights: &[21, 22, 25, 28],
                 },
                 TestCase {
    -                name: "request_prev_blocks",
    +                name: "request_prev_blocks",
                     chain: local_chain![(0, blocks[&0]), (1, blocks[&1]), (5, blocks[&5])],
                     request_heights: &[4],
                     exp_update_heights: &[4, 5],
                 },
                 TestCase {
    -                name: "request_prev_blocks_2",
    +                name: "request_prev_blocks_2",
                     chain: local_chain![(0, blocks[&0]), (1, blocks[&1]), (10, blocks[&10])],
                     request_heights: &[4, 6],
                     exp_update_heights: &[4, 6, 10],
                 },
                 TestCase {
    -                name: "request_later_and_prev_blocks",
    +                name: "request_later_and_prev_blocks",
                     chain: local_chain![(0, blocks[&0]), (7, blocks[&7]), (11, blocks[&11])],
                     request_heights: &[8, 9, 15],
                     exp_update_heights: &[8, 9, 11, 15],
                 },
                 TestCase {
    -                name: "request_tip_only",
    +                name: "request_tip_only",
                     chain: local_chain![(0, blocks[&0]), (5, blocks[&5]), (49, blocks[&49])],
                     request_heights: &[TIP_HEIGHT],
                     exp_update_heights: &[49],
                 },
                 TestCase {
    -                name: "request_nothing",
    +                name: "request_nothing",
                     chain: local_chain![(0, blocks[&0]), (13, blocks[&13]), (23, blocks[&23])],
                     request_heights: &[],
                     exp_update_heights: &[23],
                 },
                 TestCase {
    -                name: "request_nothing_during_reorg",
    -                chain: local_chain![(0, blocks[&0]), (13, blocks[&13]), (23, h!("23"))],
    +                name: "request_nothing_during_reorg",
    +                chain: local_chain![(0, blocks[&0]), (13, blocks[&13]), (23, h!("23"))],
                     request_heights: &[],
                     exp_update_heights: &[13, 23],
                 },
                 TestCase {
    -                name: "request_nothing_during_reorg_2",
    +                name: "request_nothing_during_reorg_2",
                     chain: local_chain![
                         (0, blocks[&0]),
                         (21, blocks[&21]),
    -                    (22, h!("22")),
    -                    (23, h!("23"))
    +                    (22, h!("22")),
    +                    (23, h!("23"))
                     ],
                     request_heights: &[],
                     exp_update_heights: &[21, 22, 23],
                 },
                 TestCase {
    -                name: "request_prev_blocks_during_reorg",
    +                name: "request_prev_blocks_during_reorg",
                     chain: local_chain![
                         (0, blocks[&0]),
                         (21, blocks[&21]),
    -                    (22, h!("22")),
    -                    (23, h!("23"))
    +                    (22, h!("22")),
    +                    (23, h!("23"))
                     ],
                     request_heights: &[17, 20],
                     exp_update_heights: &[17, 20, 21, 22, 23],
                 },
                 TestCase {
    -                name: "request_later_blocks_during_reorg",
    +                name: "request_later_blocks_during_reorg",
                     chain: local_chain![
                         (0, blocks[&0]),
                         (9, blocks[&9]),
    -                    (22, h!("22")),
    -                    (23, h!("23"))
    +                    (22, h!("22")),
    +                    (23, h!("23"))
                     ],
                     request_heights: &[25, 27],
                     exp_update_heights: &[9, 22, 23, 25, 27],
                 },
                 TestCase {
    -                name: "request_later_blocks_during_reorg_2",
    -                chain: local_chain![(0, blocks[&0]), (9, h!("9"))],
    +                name: "request_later_blocks_during_reorg_2",
    +                chain: local_chain![(0, blocks[&0]), (9, h!("9"))],
                     request_heights: &[10],
                     exp_update_heights: &[0, 9, 10],
                 },
                 TestCase {
    -                name: "request_later_and_prev_blocks_during_reorg",
    -                chain: local_chain![(0, blocks[&0]), (1, blocks[&1]), (9, h!("9"))],
    +                name: "request_later_and_prev_blocks_during_reorg",
    +                chain: local_chain![(0, blocks[&0]), (1, blocks[&1]), (9, h!("9"))],
                     request_heights: &[8, 11],
                     exp_update_heights: &[1, 8, 9, 11],
                 },
             ];
     
             for (i, t) in test_cases.into_iter().enumerate() {
    -            println!("Case {}: {}", i, t.name);
    +            println!("Case {}: {}", i, t.name);
                 let mut chain = t.chain;
     
                 let mock_anchors = t
    @@ -1501,10 +1501,10 @@
                     .iter()
                     .map(|&h| {
                         let anchor_blockhash: BlockHash = bdk_chain::bitcoin::hashes::Hash::hash(
    -                        &format!("hash_at_height_{}", h).into_bytes(),
    +                        &format!("hash_at_height_{}", h).into_bytes(),
                         );
                         let txid: Txid = bdk_chain::bitcoin::hashes::Hash::hash(
    -                        &format!("txid_at_height_{}", h).into_bytes(),
    +                        &format!("txid_at_height_{}", h).into_bytes(),
                         );
                         let anchor = BlockId {
                             height: h,
    @@ -1543,22 +1543,22 @@
     
                 assert!(
                     update_blocks.is_superset(&exp_update_blocks),
    -                "[{}:{}] unexpected update",
    +                "[{}:{}] unexpected update",
                     i,
                     t.name
                 );
     
                 let _ = chain
                     .apply_update(chain_update)
    -                .unwrap_or_else(|err| panic!("[{}:{}] update failed to apply: {}", i, t.name, err));
    +                .unwrap_or_else(|err| panic!("[{}:{}] update failed to apply: {}", i, t.name, err));
     
                 // all requested heights must exist in the final chain
                 for height in t.request_heights {
    -                let exp_blockhash = blocks.get(height).expect("block must exist in bitcoind");
    +                let exp_blockhash = blocks.get(height).expect("block must exist in bitcoind");
                     assert_eq!(
                         chain.get(*height).map(|cp| cp.hash()),
                         Some(*exp_blockhash),
    -                    "[{}:{}] block {}:{} must exist in final chain",
    +                    "[{}:{}] block {}:{} must exist in final chain",
                         i,
                         t.name,
                         height,
    @@ -1570,5 +1570,4 @@
             Ok(())
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/lib.rs.html index c658d3a8d9..7b5db55c91 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_esplora/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -48,16 +48,16 @@
     48
     49
     50
    -
    #![doc = include_str!("../README.md")]
    +
    #![doc = include_str!("../README.md")]
     
     //! This crate is used for updating structures of [`bdk_chain`] with data from an Esplora server.
     //!
     //! The two primary methods are [`EsploraExt::sync`] and [`EsploraExt::full_scan`]. In most cases
     //! [`EsploraExt::sync`] is used to sync the transaction histories of scripts that the application
    -//! cares about, for example the scripts for all the receive addresses of a Wallet's keychain that it
    +//! cares about, for example the scripts for all the receive addresses of a Wallet's keychain that it
     //! has shown a user. [`EsploraExt::full_scan`] is meant to be used when importing or restoring a
     //! keychain where the range of possibly used scripts is not known. In this case it is necessary to
    -//! scan all keychain scripts until a number (the "stop gap") of unused scripts is discovered. For a
    +//! scan all keychain scripts until a number (the "stop gap") of unused scripts is discovered. For a
     //! sync or full scan the user receives relevant blockchain data and output updates for [`bdk_chain`]
     //! via a new [`TxGraph`] to be appended to any existing [`TxGraph`] data.
     //!
    @@ -71,14 +71,14 @@
     
     pub use esplora_client;
     
    -#[cfg(feature = "blocking")]
    +#[cfg(feature = "blocking")]
     mod blocking_ext;
    -#[cfg(feature = "blocking")]
    +#[cfg(feature = "blocking")]
     pub use blocking_ext::*;
     
    -#[cfg(feature = "async")]
    +#[cfg(feature = "async")]
     mod async_ext;
    -#[cfg(feature = "async")]
    +#[cfg(feature = "async")]
     pub use async_ext::*;
     
     fn anchor_from_status(status: &TxStatus) -> Option<ConfirmationTimeHeightAnchor> {
    @@ -98,5 +98,4 @@
             None
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/entry_iter.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/entry_iter.rs.html index 5a851b22c3..7b18680187 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/entry_iter.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/entry_iter.rs.html @@ -1,4 +1,4 @@ -entry_iter.rs - source
    1
    +entry_iter.rs - source
    1
     2
     3
     4
    @@ -106,7 +106,7 @@
     106
     107
     108
    -
    use bincode::Options;
    +
    use bincode::Options;
     use std::{
         fs::File,
         io::{self, BufReader, Seek},
    @@ -121,17 +121,17 @@
     /// iterator will yield a `Result::Err(_)` instead and then `None` for the next call to `next`.
     ///
     /// [`next`]: Self::next
    -pub struct EntryIter<'t, T> {
    +pub struct EntryIter<'t, T> {
         /// Buffered reader around the file
    -    db_file: BufReader<&'t mut File>,
    +    db_file: BufReader<&'t mut File>,
         finished: bool,
         /// The file position for the first read of `db_file`.
         start_pos: Option<u64>,
         types: PhantomData<T>,
     }
     
    -impl<'t, T> EntryIter<'t, T> {
    -    pub fn new(start_pos: u64, db_file: &'t mut File) -> Self {
    +impl<'t, T> EntryIter<'t, T> {
    +    pub fn new(start_pos: u64, db_file: &'t mut File) -> Self {
             Self {
                 db_file: BufReader::new(db_file),
                 start_pos: Some(start_pos),
    @@ -141,7 +141,7 @@
         }
     }
     
    -impl<'t, T> Iterator for EntryIter<'t, T>
    +impl<'t, T> Iterator for EntryIter<'t, T>
     where
         T: serde::de::DeserializeOwned,
     {
    @@ -179,9 +179,9 @@
         }
     }
     
    -impl<'t, T> Drop for EntryIter<'t, T> {
    +impl<'t, T> Drop for EntryIter<'t, T> {
         fn drop(&mut self) {
    -        // This syncs the underlying file's offset with the buffer's position. This way, we
    +        // This syncs the underlying file's offset with the buffer's position. This way, we
             // maintain the correct position to start the next read/write.
             if let Ok(pos) = self.db_file.stream_position() {
                 let _ = self.db_file.get_mut().seek(io::SeekFrom::Start(pos));
    @@ -199,10 +199,10 @@
     }
     
     impl core::fmt::Display for IterError {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             match self {
    -            IterError::Io(e) => write!(f, "io error trying to read entry {}", e),
    -            IterError::Bincode(e) => write!(f, "bincode error while reading entry {}", e),
    +            IterError::Io(e) => write!(f, "io error trying to read entry {}", e),
    +            IterError::Bincode(e) => write!(f, "bincode error while reading entry {}", e),
             }
         }
     }
    @@ -214,5 +214,4 @@
     }
     
     impl std::error::Error for IterError {}
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/lib.rs.html index df51547c0f..d114f6aa43 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -40,7 +40,7 @@
     40
     41
     42
    -
    #![doc = include_str!("../README.md")]
    +
    #![doc = include_str!("../README.md")]
     mod entry_iter;
     mod store;
     use std::io;
    @@ -63,12 +63,12 @@
     }
     
     impl core::fmt::Display for FileError {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             match self {
    -            Self::Io(e) => write!(f, "io error trying to read file: {}", e),
    +            Self::Io(e) => write!(f, "io error trying to read file: {}", e),
                 Self::InvalidMagicBytes { got, expected } => write!(
                     f,
    -                "file has invalid magic bytes: expected={:?} got={:?}",
    +                "file has invalid magic bytes: expected={:?} got={:?}",
                     expected, got,
                 ),
             }
    @@ -82,5 +82,4 @@
     }
     
     impl std::error::Error for FileError {}
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/store.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/store.rs.html index 02542893e2..87e5d9578a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/store.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_file_store/store.rs.html @@ -1,4 +1,4 @@ -store.rs - source
    1
    +store.rs - source
    1
     2
     3
     4
    @@ -462,7 +462,7 @@
     462
     463
     464
    -
    use crate::{bincode_options, EntryIter, FileError, IterError};
    +
    use crate::{bincode_options, EntryIter, FileError, IterError};
     use anyhow::anyhow;
     use bdk_chain::Append;
     use bdk_persist::PersistBackend;
    @@ -496,12 +496,12 @@
     {
         fn write_changes(&mut self, changeset: &C) -> anyhow::Result<()> {
             self.append_changeset(changeset)
    -            .map_err(|e| anyhow!(e).context("failed to write changes to persistence backend"))
    +            .map_err(|e| anyhow!(e).context("failed to write changes to persistence backend"))
         }
     
         fn load_from_persistence(&mut self) -> anyhow::Result<Option<C>> {
             self.aggregate_changesets()
    -            .map_err(|e| anyhow!(e.iter_error).context("error loading from persistence backend"))
    +            .map_err(|e| anyhow!(e.iter_error).context("error loading from persistence backend"))
         }
     }
     
    @@ -528,7 +528,7 @@
                 // nightly-only `File::create_new` method
                 return Err(FileError::Io(io::Error::new(
                     io::ErrorKind::Other,
    -                "file already exists",
    +                "file already exists",
                 )));
             }
             let mut f = OpenOptions::new()
    @@ -654,7 +654,7 @@
                 .serialize_into(&mut self.db_file, changeset)
                 .map_err(|e| match *e {
                     bincode::ErrorKind::Io(error) => error,
    -                unexpected_err => panic!("unexpected bincode error: {}", unexpected_err),
    +                unexpected_err => panic!("unexpected bincode error: {}", unexpected_err),
                 })?;
     
             // truncate file after this changeset addition
    @@ -678,7 +678,7 @@
     }
     
     impl<C> std::fmt::Display for AggregateChangesetsError<C> {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             std::fmt::Display::fmt(&self.iter_error, f)
         }
     }
    @@ -707,35 +707,35 @@
         #[test]
         fn construct_store() {
             let temp_dir = tempfile::tempdir().unwrap();
    -        let file_path = temp_dir.path().join("db_file");
    +        let file_path = temp_dir.path().join("db_file");
             let _ = Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, &file_path)
    -            .expect_err("must not open as file does not exist yet");
    +            .expect_err("must not open as file does not exist yet");
             let _ = Store::<TestChangeSet>::create_new(&TEST_MAGIC_BYTES, &file_path)
    -            .expect("must create file");
    +            .expect("must create file");
             // cannot create new as file already exists
             let _ = Store::<TestChangeSet>::create_new(&TEST_MAGIC_BYTES, &file_path)
    -            .expect_err("must fail as file already exists now");
    +            .expect_err("must fail as file already exists now");
             let _ = Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, &file_path)
    -            .expect("must open as file exists now");
    +            .expect("must open as file exists now");
         }
     
         #[test]
         fn open_or_create_new() {
             let temp_dir = tempfile::tempdir().unwrap();
    -        let file_path = temp_dir.path().join("db_file");
    -        let changeset = BTreeSet::from(["hello".to_string(), "world".to_string()]);
    +        let file_path = temp_dir.path().join("db_file");
    +        let changeset = BTreeSet::from(["hello".to_string(), "world".to_string()]);
     
             {
                 let mut db = Store::<TestChangeSet>::open_or_create_new(&TEST_MAGIC_BYTES, &file_path)
    -                .expect("must create");
    +                .expect("must create");
                 assert!(file_path.exists());
    -            db.append_changeset(&changeset).expect("must succeed");
    +            db.append_changeset(&changeset).expect("must succeed");
             }
     
             {
                 let mut db = Store::<TestChangeSet>::open_or_create_new(&TEST_MAGIC_BYTES, &file_path)
    -                .expect("must recover");
    -            let recovered_changeset = db.aggregate_changesets().expect("must succeed");
    +                .expect("must recover");
    +            let recovered_changeset = db.aggregate_changesets().expect("must succeed");
                 assert_eq!(recovered_changeset, Some(changeset));
             }
         }
    @@ -744,27 +744,27 @@
         fn new_fails_if_file_is_too_short() {
             let mut file = NamedTempFile::new().unwrap();
             file.write_all(&TEST_MAGIC_BYTES[..TEST_MAGIC_BYTES_LEN - 1])
    -            .expect("should write");
    +            .expect("should write");
     
             match Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, file.path()) {
                 Err(FileError::Io(e)) => assert_eq!(e.kind(), std::io::ErrorKind::UnexpectedEof),
    -            unexpected => panic!("unexpected result: {:?}", unexpected),
    +            unexpected => panic!("unexpected result: {:?}", unexpected),
             };
         }
     
         #[test]
         fn new_fails_if_magic_bytes_are_invalid() {
    -        let invalid_magic_bytes = "ldkfs0000000";
    +        let invalid_magic_bytes = "ldkfs0000000";
     
             let mut file = NamedTempFile::new().unwrap();
             file.write_all(invalid_magic_bytes.as_bytes())
    -            .expect("should write");
    +            .expect("should write");
     
             match Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, file.path()) {
                 Err(FileError::InvalidMagicBytes { got, .. }) => {
                     assert_eq!(got, invalid_magic_bytes.as_bytes())
                 }
    -            unexpected => panic!("unexpected result: {:?}", unexpected),
    +            unexpected => panic!("unexpected result: {:?}", unexpected),
             };
         }
     
    @@ -774,19 +774,19 @@
             let mut data = [255_u8; 2000];
             data[..TEST_MAGIC_BYTES_LEN].copy_from_slice(&TEST_MAGIC_BYTES);
     
    -        let changeset = TestChangeSet::from(["one".into(), "two".into(), "three!".into()]);
    +        let changeset = TestChangeSet::from(["one".into(), "two".into(), "three!".into()]);
     
             let mut file = NamedTempFile::new().unwrap();
    -        file.write_all(&data).expect("should write");
    +        file.write_all(&data).expect("should write");
     
             let mut store =
    -            Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, file.path()).expect("should open");
    +            Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, file.path()).expect("should open");
             match store.iter_changesets().next() {
                 Some(Err(IterError::Bincode(_))) => {}
    -            unexpected_res => panic!("unexpected result: {:?}", unexpected_res),
    +            unexpected_res => panic!("unexpected result: {:?}", unexpected_res),
             }
     
    -        store.append_changeset(&changeset).expect("should append");
    +        store.append_changeset(&changeset).expect("should append");
     
             drop(store);
     
    @@ -795,7 +795,7 @@
                 file.reopen()
                     .unwrap()
                     .read_to_end(&mut buf)
    -                .expect("should read");
    +                .expect("should read");
                 buf
             };
     
    @@ -804,7 +804,7 @@
                 DefaultOptions::new()
                     .with_varint_encoding()
                     .serialize_into(&mut buf, &changeset)
    -                .expect("should encode");
    +                .expect("should encode");
                 buf
             };
     
    @@ -816,16 +816,16 @@
             let temp_dir = tempfile::tempdir().unwrap();
     
             let changesets = [
    -            TestChangeSet::from(["1".into()]),
    -            TestChangeSet::from(["2".into(), "3".into()]),
    -            TestChangeSet::from(["4".into(), "5".into(), "6".into()]),
    +            TestChangeSet::from(["1".into()]),
    +            TestChangeSet::from(["2".into(), "3".into()]),
    +            TestChangeSet::from(["4".into(), "5".into(), "6".into()]),
             ];
    -        let last_changeset = TestChangeSet::from(["7".into(), "8".into(), "9".into()]);
    +        let last_changeset = TestChangeSet::from(["7".into(), "8".into(), "9".into()]);
             let last_changeset_bytes = bincode_options().serialize(&last_changeset).unwrap();
     
             for short_write_len in 1..last_changeset_bytes.len() - 1 {
    -            let file_path = temp_dir.path().join(format!("{}.dat", short_write_len));
    -            println!("Test file: {:?}", file_path);
    +            let file_path = temp_dir.path().join(format!("{}.dat", short_write_len));
    +            println!("Test file: {:?}", file_path);
     
                 // simulate creating a file, writing data where the last write is incomplete
                 {
    @@ -846,14 +846,14 @@
                     let mut db = Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, &file_path).unwrap();
                     let err = db
                         .aggregate_changesets()
    -                    .expect_err("should return error as last read is short");
    +                    .expect_err("should return error as last read is short");
                     assert_eq!(
                         err.changeset,
                         changesets.iter().cloned().reduce(|mut acc, cs| {
                             Append::append(&mut acc, cs);
                             acc
                         }),
    -                    "should recover all changesets that are written in full",
    +                    "should recover all changesets that are written in full",
                     );
                     db.db_file.write_all(&last_changeset_bytes).unwrap();
                 }
    @@ -863,7 +863,7 @@
                     let mut db = Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, &file_path).unwrap();
                     let aggregated_changesets = db
                         .aggregate_changesets()
    -                    .expect("aggregating all changesets should succeed");
    +                    .expect("aggregating all changesets should succeed");
                     assert_eq!(
                         aggregated_changesets,
                         changesets
    @@ -874,7 +874,7 @@
                                 Append::append(&mut acc, cs);
                                 acc
                             }),
    -                    "should recover all changesets",
    +                    "should recover all changesets",
                     );
                 }
             }
    @@ -885,13 +885,13 @@
             let temp_dir = tempfile::tempdir().unwrap();
     
             let changesets = (0..20)
    -            .map(|n| TestChangeSet::from([format!("{}", n)]))
    +            .map(|n| TestChangeSet::from([format!("{}", n)]))
                 .collect::<Vec<_>>();
    -        let last_changeset = TestChangeSet::from(["last".into()]);
    +        let last_changeset = TestChangeSet::from(["last".into()]);
     
             for read_count in 0..changesets.len() {
    -            let file_path = temp_dir.path().join(format!("{}.dat", read_count));
    -            println!("Test file: {:?}", file_path);
    +            let file_path = temp_dir.path().join(format!("{}.dat", read_count));
    +            println!("Test file: {:?}", file_path);
     
                 // First, we create the file with all the changesets!
                 let mut db = Store::<TestChangeSet>::create_new(&TEST_MAGIC_BYTES, &file_path).unwrap();
    @@ -905,14 +905,14 @@
                 let mut exp_aggregation = db
                     .iter_changesets()
                     .take(read_count)
    -                .map(|r| r.expect("must read valid changeset"))
    +                .map(|r| r.expect("must read valid changeset"))
                     .fold(TestChangeSet::default(), |mut acc, v| {
                         Append::append(&mut acc, v);
                         acc
                     });
                 // We write after a short read.
                 db.write_changes(&last_changeset)
    -                .expect("last write must succeed");
    +                .expect("last write must succeed");
                 Append::append(&mut exp_aggregation, last_changeset.clone());
                 drop(db);
     
    @@ -920,11 +920,10 @@
                 let aggregation = Store::<TestChangeSet>::open(&TEST_MAGIC_BYTES, &file_path)
                     .unwrap()
                     .aggregate_changesets()
    -                .expect("must aggregate changesets")
    +                .expect("must aggregate changesets")
                     .unwrap_or_default();
                 assert_eq!(aggregation, exp_aggregation);
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html index 12ec77af71..1ffe12bf86 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -39,7 +39,7 @@
     39
     40
     41
    -
    //! HWI Signer
    +
    //! HWI Signer
     //!
     //! This crate contains HWISigner, an implementation of a [`TransactionSigner`] to be
     //! used with hardware wallets.
    @@ -54,13 +54,13 @@
     //! # fn main() -> Result<(), Box<dyn std::error::Error>> {
     //! let mut devices = HWIClient::enumerate()?;
     //! if devices.is_empty() {
    -//!     panic!("No devices found!");
    +//!     panic!("No devices found!");
     //! }
     //! let first_device = devices.remove(0)?;
     //! let custom_signer = HWISigner::from_device(&first_device, Network::Testnet.into())?;
     //!
     //! # let mut wallet = Wallet::new_no_persist(
    -//! #     "",
    +//! #     "",
     //! #     None,
     //! #     Network::Testnet,
     //! # )?;
    @@ -80,5 +80,4 @@
     
     mod signer;
     pub use signer::*;
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/signer.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/signer.rs.html index 2ce7b41795..47a166bc75 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/signer.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_hwi/signer.rs.html @@ -1,4 +1,4 @@ -signer.rs - source
    1
    +signer.rs - source
    1
     2
     3
     4
    @@ -92,7 +92,7 @@
     92
     93
     94
    -
    use bdk_wallet::bitcoin::bip32::Fingerprint;
    +
    use bdk_wallet::bitcoin::bip32::Fingerprint;
     use bdk_wallet::bitcoin::secp256k1::{All, Secp256k1};
     use bdk_wallet::bitcoin::Psbt;
     
    @@ -139,11 +139,11 @@
                 self.client
                     .sign_tx(psbt)
                     .map_err(|e| {
    -                    SignerError::External(format!("While signing with hardware wallet: {}", e))
    +                    SignerError::External(format!("While signing with hardware wallet: {}", e))
                     })?
                     .psbt,
             )
    -        .expect("Failed to combine HW signed psbt with passed PSBT");
    +        .expect("Failed to combine HW signed psbt with passed PSBT");
             Ok(())
         }
     }
    @@ -163,7 +163,7 @@
     //
     //         let mut devices = HWIClient::enumerate().unwrap();
     //         if devices.is_empty() {
    -//             panic!("No devices found!");
    +//             panic!("No devices found!");
     //         }
     //         let device = devices.remove(0).unwrap();
     //         let client = HWIClient::get_client(&device, true, Network::Regtest.into()).unwrap();
    @@ -186,5 +186,4 @@
     //         assert!(finalized);
     //     }
     // }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/changeset.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/changeset.rs.html new file mode 100644 index 0000000000..6c5cc69d95 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/changeset.rs.html @@ -0,0 +1,147 @@ +changeset.rs - source
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +
    #![cfg(feature = "miniscript")]
    +
    +use bdk_chain::{bitcoin::Network, indexed_tx_graph, keychain, local_chain, Anchor, Append};
    +
    +/// Changes from a combination of [`bdk_chain`] structures.
    +#[derive(Debug, Clone, PartialEq)]
    +#[cfg_attr(
    +    feature = "serde",
    +    derive(bdk_chain::serde::Deserialize, bdk_chain::serde::Serialize),
    +    serde(
    +        crate = "bdk_chain::serde",
    +        bound(
    +            deserialize = "A: Ord + bdk_chain::serde::Deserialize<'de>, K: Ord + bdk_chain::serde::Deserialize<'de>",
    +            serialize = "A: Ord + bdk_chain::serde::Serialize, K: Ord + bdk_chain::serde::Serialize",
    +        ),
    +    )
    +)]
    +pub struct CombinedChangeSet<K, A> {
    +    /// Changes to the [`LocalChain`](local_chain::LocalChain).
    +    pub chain: local_chain::ChangeSet,
    +    /// Changes to [`IndexedTxGraph`](indexed_tx_graph::IndexedTxGraph).
    +    pub indexed_tx_graph: indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>,
    +    /// Stores the network type of the transaction data.
    +    pub network: Option<Network>,
    +}
    +
    +impl<K, A> Default for CombinedChangeSet<K, A> {
    +    fn default() -> Self {
    +        Self {
    +            chain: Default::default(),
    +            indexed_tx_graph: Default::default(),
    +            network: None,
    +        }
    +    }
    +}
    +
    +impl<K: Ord, A: Anchor> Append for CombinedChangeSet<K, A> {
    +    fn append(&mut self, other: Self) {
    +        Append::append(&mut self.chain, other.chain);
    +        Append::append(&mut self.indexed_tx_graph, other.indexed_tx_graph);
    +        if other.network.is_some() {
    +            debug_assert!(
    +                self.network.is_none() || self.network == other.network,
    +                "network type must either be just introduced or remain the same"
    +            );
    +            self.network = other.network;
    +        }
    +    }
    +
    +    fn is_empty(&self) -> bool {
    +        self.chain.is_empty() && self.indexed_tx_graph.is_empty() && self.network.is_none()
    +    }
    +}
    +
    +impl<K, A> From<local_chain::ChangeSet> for CombinedChangeSet<K, A> {
    +    fn from(chain: local_chain::ChangeSet) -> Self {
    +        Self {
    +            chain,
    +            ..Default::default()
    +        }
    +    }
    +}
    +
    +impl<K, A> From<indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>>
    +    for CombinedChangeSet<K, A>
    +{
    +    fn from(indexed_tx_graph: indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>) -> Self {
    +        Self {
    +            indexed_tx_graph,
    +            ..Default::default()
    +        }
    +    }
    +}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/lib.rs.html index 9a92874e93..045f1f2c50 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/lib.rs.html @@ -1,12 +1,17 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
     5
    -
    #![doc = include_str!("../README.md")]
    +6
    +7
    +8
    +
    #![doc = include_str!("../README.md")]
     #![no_std]
     #![warn(missing_docs)]
    -mod persist;
    +
    +mod changeset;
    +mod persist;
    +pub use changeset::*;
     pub use persist::*;
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/persist.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/persist.rs.html index 41c3ce1835..dd3d99b33a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/persist.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_persist/persist.rs.html @@ -1,4 +1,4 @@ -persist.rs - source
    1
    +persist.rs - source
    1
     2
     3
     4
    @@ -104,7 +104,7 @@
     104
     105
     106
    -
    extern crate alloc;
    +
    extern crate alloc;
     use alloc::boxed::Box;
     use bdk_chain::Append;
     use core::fmt;
    @@ -121,8 +121,8 @@
     }
     
     impl<C: fmt::Debug> fmt::Debug for Persist<C> {
    -    fn fmt(&self, fmt: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> {
    -        write!(fmt, "{:?}", self.stage)?;
    +    fn fmt(&self, fmt: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> {
    +        write!(fmt, "{:?}", self.stage)?;
             Ok(())
         }
     }
    @@ -132,7 +132,7 @@
         C: Default + Append,
     {
         /// Create a new [`Persist`] from [`PersistBackend`].
    -    pub fn new(backend: impl PersistBackend<C> + Send + Sync + 'static) -> Self {
    +    pub fn new(backend: impl PersistBackend<C> + Send + Sync + 'static) -> Self {
             let backend = Box::new(backend);
             Self {
                 backend,
    @@ -210,5 +210,4 @@
             Ok(None)
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/lib.rs.html new file mode 100644 index 0000000000..3a4bc2ad3a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/lib.rs.html @@ -0,0 +1,69 @@ +lib.rs - source
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +
    #![doc = include_str!("../README.md")]
    +// only enables the `doc_cfg` feature when the `docsrs` configuration attribute is defined
    +#![cfg_attr(docsrs, feature(doc_cfg))]
    +
    +mod schema;
    +mod store;
    +
    +use bdk_chain::bitcoin::Network;
    +pub use rusqlite;
    +pub use store::Store;
    +
    +/// Error that occurs while reading or writing change sets with the SQLite database.
    +#[derive(Debug)]
    +pub enum Error {
    +    /// Invalid network, cannot change the one already stored in the database.
    +    Network { expected: Network, given: Network },
    +    /// SQLite error.
    +    Sqlite(rusqlite::Error),
    +}
    +
    +impl core::fmt::Display for Error {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +        match self {
    +            Self::Network { expected, given } => write!(
    +                f,
    +                "network error trying to read or write change set, expected {}, given {}",
    +                expected, given
    +            ),
    +            Self::Sqlite(e) => write!(f, "sqlite error reading or writing changeset: {}", e),
    +        }
    +    }
    +}
    +
    +impl std::error::Error for Error {}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/schema.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/schema.rs.html new file mode 100644 index 0000000000..9424d4ce58 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/schema.rs.html @@ -0,0 +1,193 @@ +schema.rs - source
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +
    use crate::Store;
    +use rusqlite::{named_params, Connection, Error};
    +
    +const SCHEMA_0: &str = include_str!("../schema/schema_0.sql");
    +const MIGRATIONS: &[&str] = &[SCHEMA_0];
    +
    +/// Schema migration related functions.
    +impl<K, A> Store<K, A> {
    +    /// Migrate sqlite db schema to latest version.
    +    pub(crate) fn migrate(conn: &mut Connection) -> Result<(), Error> {
    +        let stmts = &MIGRATIONS
    +            .iter()
    +            .flat_map(|stmt| {
    +                // remove comment lines
    +                let s = stmt
    +                    .split('\n')
    +                    .filter(|l| !l.starts_with("--") && !l.is_empty())
    +                    .collect::<Vec<_>>()
    +                    .join(" ");
    +                // split into statements
    +                s.split(';')
    +                    // remove extra spaces
    +                    .map(|s| {
    +                        s.trim()
    +                            .split(' ')
    +                            .filter(|s| !s.is_empty())
    +                            .collect::<Vec<_>>()
    +                            .join(" ")
    +                    })
    +                    .collect::<Vec<_>>()
    +            })
    +            // remove empty statements
    +            .filter(|s| !s.is_empty())
    +            .collect::<Vec<String>>();
    +
    +        let version = Self::get_schema_version(conn)?;
    +        let stmts = &stmts[(version as usize)..];
    +
    +        // begin transaction, all migration statements and new schema version commit or rollback
    +        let tx = conn.transaction()?;
    +
    +        // execute every statement and return `Some` new schema version
    +        // if execution fails, return `Error::Rusqlite`
    +        // if no statements executed returns `None`
    +        let new_version = stmts
    +            .iter()
    +            .enumerate()
    +            .map(|version_stmt| {
    +                tx.execute(version_stmt.1.as_str(), [])
    +                    // map result value to next migration version
    +                    .map(|_| version_stmt.0 as i32 + version + 1)
    +            })
    +            .last()
    +            .transpose()?;
    +
    +        // if `Some` new statement version, set new schema version
    +        if let Some(version) = new_version {
    +            Self::set_schema_version(&tx, version)?;
    +        }
    +
    +        // commit transaction
    +        tx.commit()?;
    +        Ok(())
    +    }
    +
    +    fn get_schema_version(conn: &Connection) -> rusqlite::Result<i32> {
    +        let statement = conn.prepare_cached("SELECT version FROM version");
    +        match statement {
    +            Err(Error::SqliteFailure(e, Some(msg))) => {
    +                if msg == "no such table: version" {
    +                    Ok(0)
    +                } else {
    +                    Err(Error::SqliteFailure(e, Some(msg)))
    +                }
    +            }
    +            Ok(mut stmt) => {
    +                let mut rows = stmt.query([])?;
    +                match rows.next()? {
    +                    Some(row) => {
    +                        let version: i32 = row.get(0)?;
    +                        Ok(version)
    +                    }
    +                    None => Ok(0),
    +                }
    +            }
    +            _ => Ok(0),
    +        }
    +    }
    +
    +    fn set_schema_version(conn: &Connection, version: i32) -> rusqlite::Result<usize> {
    +        conn.execute(
    +            "UPDATE version SET version=:version",
    +            named_params! {":version": version},
    +        )
    +    }
    +}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/store.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/store.rs.html new file mode 100644 index 0000000000..f955300af9 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_sqlite/store.rs.html @@ -0,0 +1,1559 @@ +store.rs - source
    1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +10
    +11
    +12
    +13
    +14
    +15
    +16
    +17
    +18
    +19
    +20
    +21
    +22
    +23
    +24
    +25
    +26
    +27
    +28
    +29
    +30
    +31
    +32
    +33
    +34
    +35
    +36
    +37
    +38
    +39
    +40
    +41
    +42
    +43
    +44
    +45
    +46
    +47
    +48
    +49
    +50
    +51
    +52
    +53
    +54
    +55
    +56
    +57
    +58
    +59
    +60
    +61
    +62
    +63
    +64
    +65
    +66
    +67
    +68
    +69
    +70
    +71
    +72
    +73
    +74
    +75
    +76
    +77
    +78
    +79
    +80
    +81
    +82
    +83
    +84
    +85
    +86
    +87
    +88
    +89
    +90
    +91
    +92
    +93
    +94
    +95
    +96
    +97
    +98
    +99
    +100
    +101
    +102
    +103
    +104
    +105
    +106
    +107
    +108
    +109
    +110
    +111
    +112
    +113
    +114
    +115
    +116
    +117
    +118
    +119
    +120
    +121
    +122
    +123
    +124
    +125
    +126
    +127
    +128
    +129
    +130
    +131
    +132
    +133
    +134
    +135
    +136
    +137
    +138
    +139
    +140
    +141
    +142
    +143
    +144
    +145
    +146
    +147
    +148
    +149
    +150
    +151
    +152
    +153
    +154
    +155
    +156
    +157
    +158
    +159
    +160
    +161
    +162
    +163
    +164
    +165
    +166
    +167
    +168
    +169
    +170
    +171
    +172
    +173
    +174
    +175
    +176
    +177
    +178
    +179
    +180
    +181
    +182
    +183
    +184
    +185
    +186
    +187
    +188
    +189
    +190
    +191
    +192
    +193
    +194
    +195
    +196
    +197
    +198
    +199
    +200
    +201
    +202
    +203
    +204
    +205
    +206
    +207
    +208
    +209
    +210
    +211
    +212
    +213
    +214
    +215
    +216
    +217
    +218
    +219
    +220
    +221
    +222
    +223
    +224
    +225
    +226
    +227
    +228
    +229
    +230
    +231
    +232
    +233
    +234
    +235
    +236
    +237
    +238
    +239
    +240
    +241
    +242
    +243
    +244
    +245
    +246
    +247
    +248
    +249
    +250
    +251
    +252
    +253
    +254
    +255
    +256
    +257
    +258
    +259
    +260
    +261
    +262
    +263
    +264
    +265
    +266
    +267
    +268
    +269
    +270
    +271
    +272
    +273
    +274
    +275
    +276
    +277
    +278
    +279
    +280
    +281
    +282
    +283
    +284
    +285
    +286
    +287
    +288
    +289
    +290
    +291
    +292
    +293
    +294
    +295
    +296
    +297
    +298
    +299
    +300
    +301
    +302
    +303
    +304
    +305
    +306
    +307
    +308
    +309
    +310
    +311
    +312
    +313
    +314
    +315
    +316
    +317
    +318
    +319
    +320
    +321
    +322
    +323
    +324
    +325
    +326
    +327
    +328
    +329
    +330
    +331
    +332
    +333
    +334
    +335
    +336
    +337
    +338
    +339
    +340
    +341
    +342
    +343
    +344
    +345
    +346
    +347
    +348
    +349
    +350
    +351
    +352
    +353
    +354
    +355
    +356
    +357
    +358
    +359
    +360
    +361
    +362
    +363
    +364
    +365
    +366
    +367
    +368
    +369
    +370
    +371
    +372
    +373
    +374
    +375
    +376
    +377
    +378
    +379
    +380
    +381
    +382
    +383
    +384
    +385
    +386
    +387
    +388
    +389
    +390
    +391
    +392
    +393
    +394
    +395
    +396
    +397
    +398
    +399
    +400
    +401
    +402
    +403
    +404
    +405
    +406
    +407
    +408
    +409
    +410
    +411
    +412
    +413
    +414
    +415
    +416
    +417
    +418
    +419
    +420
    +421
    +422
    +423
    +424
    +425
    +426
    +427
    +428
    +429
    +430
    +431
    +432
    +433
    +434
    +435
    +436
    +437
    +438
    +439
    +440
    +441
    +442
    +443
    +444
    +445
    +446
    +447
    +448
    +449
    +450
    +451
    +452
    +453
    +454
    +455
    +456
    +457
    +458
    +459
    +460
    +461
    +462
    +463
    +464
    +465
    +466
    +467
    +468
    +469
    +470
    +471
    +472
    +473
    +474
    +475
    +476
    +477
    +478
    +479
    +480
    +481
    +482
    +483
    +484
    +485
    +486
    +487
    +488
    +489
    +490
    +491
    +492
    +493
    +494
    +495
    +496
    +497
    +498
    +499
    +500
    +501
    +502
    +503
    +504
    +505
    +506
    +507
    +508
    +509
    +510
    +511
    +512
    +513
    +514
    +515
    +516
    +517
    +518
    +519
    +520
    +521
    +522
    +523
    +524
    +525
    +526
    +527
    +528
    +529
    +530
    +531
    +532
    +533
    +534
    +535
    +536
    +537
    +538
    +539
    +540
    +541
    +542
    +543
    +544
    +545
    +546
    +547
    +548
    +549
    +550
    +551
    +552
    +553
    +554
    +555
    +556
    +557
    +558
    +559
    +560
    +561
    +562
    +563
    +564
    +565
    +566
    +567
    +568
    +569
    +570
    +571
    +572
    +573
    +574
    +575
    +576
    +577
    +578
    +579
    +580
    +581
    +582
    +583
    +584
    +585
    +586
    +587
    +588
    +589
    +590
    +591
    +592
    +593
    +594
    +595
    +596
    +597
    +598
    +599
    +600
    +601
    +602
    +603
    +604
    +605
    +606
    +607
    +608
    +609
    +610
    +611
    +612
    +613
    +614
    +615
    +616
    +617
    +618
    +619
    +620
    +621
    +622
    +623
    +624
    +625
    +626
    +627
    +628
    +629
    +630
    +631
    +632
    +633
    +634
    +635
    +636
    +637
    +638
    +639
    +640
    +641
    +642
    +643
    +644
    +645
    +646
    +647
    +648
    +649
    +650
    +651
    +652
    +653
    +654
    +655
    +656
    +657
    +658
    +659
    +660
    +661
    +662
    +663
    +664
    +665
    +666
    +667
    +668
    +669
    +670
    +671
    +672
    +673
    +674
    +675
    +676
    +677
    +678
    +679
    +680
    +681
    +682
    +683
    +684
    +685
    +686
    +687
    +688
    +689
    +690
    +691
    +692
    +693
    +694
    +695
    +696
    +697
    +698
    +699
    +700
    +701
    +702
    +703
    +704
    +705
    +706
    +707
    +708
    +709
    +710
    +711
    +712
    +713
    +714
    +715
    +716
    +717
    +718
    +719
    +720
    +721
    +722
    +723
    +724
    +725
    +726
    +727
    +728
    +729
    +730
    +731
    +732
    +733
    +734
    +735
    +736
    +737
    +738
    +739
    +740
    +741
    +742
    +743
    +744
    +745
    +746
    +747
    +748
    +749
    +750
    +751
    +752
    +753
    +754
    +755
    +756
    +757
    +758
    +759
    +760
    +761
    +762
    +763
    +764
    +765
    +766
    +767
    +768
    +769
    +770
    +771
    +772
    +773
    +774
    +775
    +776
    +777
    +778
    +779
    +
    use bdk_chain::bitcoin::consensus::{deserialize, serialize};
    +use bdk_chain::bitcoin::hashes::Hash;
    +use bdk_chain::bitcoin::{Amount, Network, OutPoint, ScriptBuf, Transaction, TxOut};
    +use bdk_chain::bitcoin::{BlockHash, Txid};
    +use bdk_chain::miniscript::descriptor::{Descriptor, DescriptorPublicKey};
    +use rusqlite::{named_params, Connection};
    +use serde::{Deserialize, Serialize};
    +use std::collections::{BTreeMap, BTreeSet};
    +use std::fmt::Debug;
    +use std::marker::PhantomData;
    +use std::str::FromStr;
    +use std::sync::{Arc, Mutex};
    +
    +use crate::Error;
    +use bdk_chain::{
    +    indexed_tx_graph, keychain, local_chain, tx_graph, Anchor, Append, DescriptorExt, DescriptorId,
    +};
    +use bdk_persist::CombinedChangeSet;
    +
    +/// Persists data in to a relational schema based [SQLite] database file.
    +///
    +/// The changesets loaded or stored represent changes to keychain and blockchain data.
    +///
    +/// [SQLite]: https://www.sqlite.org/index.html
    +pub struct Store<K, A> {
    +    // A rusqlite connection to the SQLite database. Uses a Mutex for thread safety.
    +    conn: Mutex<Connection>,
    +    keychain_marker: PhantomData<K>,
    +    anchor_marker: PhantomData<A>,
    +}
    +
    +impl<K, A> Debug for Store<K, A> {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +        Debug::fmt(&self.conn, f)
    +    }
    +}
    +
    +impl<K, A> Store<K, A>
    +where
    +    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    +    A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,
    +{
    +    /// Creates a new store from a [`Connection`].
    +    pub fn new(mut conn: Connection) -> Result<Self, rusqlite::Error> {
    +        Self::migrate(&mut conn)?;
    +
    +        Ok(Self {
    +            conn: Mutex::new(conn),
    +            keychain_marker: Default::default(),
    +            anchor_marker: Default::default(),
    +        })
    +    }
    +
    +    pub(crate) fn db_transaction(&mut self) -> Result<rusqlite::Transaction, Error> {
    +        let connection = self.conn.get_mut().expect("unlocked connection mutex");
    +        connection.transaction().map_err(Error::Sqlite)
    +    }
    +}
    +
    +impl<K, A, C> bdk_persist::PersistBackend<C> for Store<K, A>
    +where
    +    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    +    A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,
    +    C: Clone + From<CombinedChangeSet<K, A>> + Into<CombinedChangeSet<K, A>>,
    +{
    +    fn write_changes(&mut self, changeset: &C) -> anyhow::Result<()> {
    +        self.write(&changeset.clone().into())
    +            .map_err(|e| anyhow::anyhow!(e).context("unable to write changes to sqlite database"))
    +    }
    +
    +    fn load_from_persistence(&mut self) -> anyhow::Result<Option<C>> {
    +        self.read()
    +            .map(|c| c.map(Into::into))
    +            .map_err(|e| anyhow::anyhow!(e).context("unable to read changes from sqlite database"))
    +    }
    +}
    +
    +/// Network table related functions.
    +impl<K, A> Store<K, A> {
    +    /// Insert [`Network`] for which all other tables data is valid.
    +    ///
    +    /// Error if trying to insert different network value.
    +    fn insert_network(
    +        current_network: &Option<Network>,
    +        db_transaction: &rusqlite::Transaction,
    +        network_changeset: &Option<Network>,
    +    ) -> Result<(), Error> {
    +        if let Some(network) = network_changeset {
    +            match current_network {
    +                // if no network change do nothing
    +                Some(current_network) if current_network == network => Ok(()),
    +                // if new network not the same as current, error
    +                Some(current_network) => Err(Error::Network {
    +                    expected: *current_network,
    +                    given: *network,
    +                }),
    +                // insert network if none exists
    +                None => {
    +                    let insert_network_stmt = &mut db_transaction
    +                        .prepare_cached("INSERT INTO network (name) VALUES (:name)")
    +                        .expect("insert network statement");
    +                    let name = network.to_string();
    +                    insert_network_stmt
    +                        .execute(named_params! {":name": name })
    +                        .map_err(Error::Sqlite)?;
    +                    Ok(())
    +                }
    +            }
    +        } else {
    +            Ok(())
    +        }
    +    }
    +
    +    /// Select the valid [`Network`] for this database, or `None` if not set.
    +    fn select_network(db_transaction: &rusqlite::Transaction) -> Result<Option<Network>, Error> {
    +        let mut select_network_stmt = db_transaction
    +            .prepare_cached("SELECT name FROM network WHERE rowid = 1")
    +            .expect("select network statement");
    +
    +        let network = select_network_stmt
    +            .query_row([], |row| {
    +                let network = row.get_unwrap::<usize, String>(0);
    +                let network = Network::from_str(network.as_str()).expect("valid network");
    +                Ok(network)
    +            })
    +            .map_err(Error::Sqlite);
    +        match network {
    +            Ok(network) => Ok(Some(network)),
    +            Err(Error::Sqlite(rusqlite::Error::QueryReturnedNoRows)) => Ok(None),
    +            Err(e) => Err(e),
    +        }
    +    }
    +}
    +
    +/// Block table related functions.
    +impl<K, A> Store<K, A> {
    +    /// Insert or delete local chain blocks.
    +    ///
    +    /// Error if trying to insert existing block hash.
    +    fn insert_or_delete_blocks(
    +        db_transaction: &rusqlite::Transaction,
    +        chain_changeset: &local_chain::ChangeSet,
    +    ) -> Result<(), Error> {
    +        for (height, hash) in chain_changeset.iter() {
    +            match hash {
    +                // add new hash at height
    +                Some(hash) => {
    +                    let insert_block_stmt = &mut db_transaction
    +                        .prepare_cached("INSERT INTO block (hash, height) VALUES (:hash, :height)")
    +                        .expect("insert block statement");
    +                    let hash = hash.to_string();
    +                    insert_block_stmt
    +                        .execute(named_params! {":hash": hash, ":height": height })
    +                        .map_err(Error::Sqlite)?;
    +                }
    +                // delete block at height
    +                None => {
    +                    let delete_block_stmt = &mut db_transaction
    +                        .prepare_cached("DELETE FROM block WHERE height IS :height")
    +                        .expect("delete block statement");
    +                    delete_block_stmt
    +                        .execute(named_params! {":height": height })
    +                        .map_err(Error::Sqlite)?;
    +                }
    +            }
    +        }
    +
    +        Ok(())
    +    }
    +
    +    /// Select all blocks.
    +    fn select_blocks(
    +        db_transaction: &rusqlite::Transaction,
    +    ) -> Result<BTreeMap<u32, Option<BlockHash>>, Error> {
    +        let mut select_blocks_stmt = db_transaction
    +            .prepare_cached("SELECT height, hash FROM block")
    +            .expect("select blocks statement");
    +
    +        let blocks = select_blocks_stmt
    +            .query_map([], |row| {
    +                let height = row.get_unwrap::<usize, u32>(0);
    +                let hash = row.get_unwrap::<usize, String>(1);
    +                let hash = Some(BlockHash::from_str(hash.as_str()).expect("block hash"));
    +                Ok((height, hash))
    +            })
    +            .map_err(Error::Sqlite)?;
    +        blocks
    +            .into_iter()
    +            .map(|row| row.map_err(Error::Sqlite))
    +            .collect()
    +    }
    +}
    +
    +/// Keychain table related functions.
    +///
    +/// The keychain objects are stored as [`JSONB`] data.
    +/// [`JSONB`]: https://sqlite.org/json1.html#jsonb
    +impl<K, A> Store<K, A>
    +where
    +    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    +    A: Anchor + Send,
    +{
    +    /// Insert keychain with descriptor and last active index.
    +    ///
    +    /// If keychain exists only update last active index.
    +    fn insert_keychains(
    +        db_transaction: &rusqlite::Transaction,
    +        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>,
    +    ) -> Result<(), Error> {
    +        let keychain_changeset = &tx_graph_changeset.indexer;
    +        for (keychain, descriptor) in keychain_changeset.keychains_added.iter() {
    +            let insert_keychain_stmt = &mut db_transaction
    +                .prepare_cached("INSERT INTO keychain (keychain, descriptor, descriptor_id) VALUES (jsonb(:keychain), :descriptor, :descriptor_id)")
    +                .expect("insert keychain statement");
    +            let keychain_json = serde_json::to_string(keychain).expect("keychain json");
    +            let descriptor_id = descriptor.descriptor_id().to_byte_array();
    +            let descriptor = descriptor.to_string();
    +            insert_keychain_stmt.execute(named_params! {":keychain": keychain_json, ":descriptor": descriptor, ":descriptor_id": descriptor_id })
    +                .map_err(Error::Sqlite)?;
    +        }
    +        Ok(())
    +    }
    +
    +    /// Update descriptor last revealed index.
    +    fn update_last_revealed(
    +        db_transaction: &rusqlite::Transaction,
    +        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>,
    +    ) -> Result<(), Error> {
    +        let keychain_changeset = &tx_graph_changeset.indexer;
    +        for (descriptor_id, last_revealed) in keychain_changeset.last_revealed.iter() {
    +            let update_last_revealed_stmt = &mut db_transaction
    +                .prepare_cached(
    +                    "UPDATE keychain SET last_revealed = :last_revealed
    +                              WHERE descriptor_id = :descriptor_id",
    +                )
    +                .expect("update last revealed statement");
    +            let descriptor_id = descriptor_id.to_byte_array();
    +            update_last_revealed_stmt.execute(named_params! {":descriptor_id": descriptor_id, ":last_revealed": * last_revealed })
    +                .map_err(Error::Sqlite)?;
    +        }
    +        Ok(())
    +    }
    +
    +    /// Select keychains added.
    +    fn select_keychains(
    +        db_transaction: &rusqlite::Transaction,
    +    ) -> Result<BTreeMap<K, Descriptor<DescriptorPublicKey>>, Error> {
    +        let mut select_keychains_added_stmt = db_transaction
    +            .prepare_cached("SELECT json(keychain), descriptor FROM keychain")
    +            .expect("select keychains statement");
    +
    +        let keychains = select_keychains_added_stmt
    +            .query_map([], |row| {
    +                let keychain = row.get_unwrap::<usize, String>(0);
    +                let keychain = serde_json::from_str::<K>(keychain.as_str()).expect("keychain");
    +                let descriptor = row.get_unwrap::<usize, String>(1);
    +                let descriptor = Descriptor::from_str(descriptor.as_str()).expect("descriptor");
    +                Ok((keychain, descriptor))
    +            })
    +            .map_err(Error::Sqlite)?;
    +        keychains
    +            .into_iter()
    +            .map(|row| row.map_err(Error::Sqlite))
    +            .collect()
    +    }
    +
    +    /// Select descriptor last revealed indexes.
    +    fn select_last_revealed(
    +        db_transaction: &rusqlite::Transaction,
    +    ) -> Result<BTreeMap<DescriptorId, u32>, Error> {
    +        let mut select_last_revealed_stmt = db_transaction
    +            .prepare_cached(
    +                "SELECT descriptor, last_revealed FROM keychain WHERE last_revealed IS NOT NULL",
    +            )
    +            .expect("select last revealed statement");
    +
    +        let last_revealed = select_last_revealed_stmt
    +            .query_map([], |row| {
    +                let descriptor = row.get_unwrap::<usize, String>(0);
    +                let descriptor = Descriptor::from_str(descriptor.as_str()).expect("descriptor");
    +                let descriptor_id = descriptor.descriptor_id();
    +                let last_revealed = row.get_unwrap::<usize, u32>(1);
    +                Ok((descriptor_id, last_revealed))
    +            })
    +            .map_err(Error::Sqlite)?;
    +        last_revealed
    +            .into_iter()
    +            .map(|row| row.map_err(Error::Sqlite))
    +            .collect()
    +    }
    +}
    +
    +/// Tx (transaction) and txout (transaction output) table related functions.
    +impl<K, A> Store<K, A> {
    +    /// Insert transactions.
    +    ///
    +    /// Error if trying to insert existing txid.
    +    fn insert_txs(
    +        db_transaction: &rusqlite::Transaction,
    +        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>,
    +    ) -> Result<(), Error> {
    +        for tx in tx_graph_changeset.graph.txs.iter() {
    +            let insert_tx_stmt = &mut db_transaction
    +                .prepare_cached("INSERT INTO tx (txid, whole_tx) VALUES (:txid, :whole_tx) ON CONFLICT (txid) DO UPDATE SET whole_tx = :whole_tx WHERE txid = :txid")
    +                .expect("insert or update tx whole_tx statement");
    +            let txid = tx.txid().to_string();
    +            let whole_tx = serialize(&tx);
    +            insert_tx_stmt
    +                .execute(named_params! {":txid": txid, ":whole_tx": whole_tx })
    +                .map_err(Error::Sqlite)?;
    +        }
    +        Ok(())
    +    }
    +
    +    /// Select all transactions.
    +    fn select_txs(
    +        db_transaction: &rusqlite::Transaction,
    +    ) -> Result<BTreeSet<Arc<Transaction>>, Error> {
    +        let mut select_tx_stmt = db_transaction
    +            .prepare_cached("SELECT whole_tx FROM tx WHERE whole_tx IS NOT NULL")
    +            .expect("select tx statement");
    +
    +        let txs = select_tx_stmt
    +            .query_map([], |row| {
    +                let whole_tx = row.get_unwrap::<usize, Vec<u8>>(0);
    +                let whole_tx: Transaction = deserialize(&whole_tx).expect("transaction");
    +                Ok(Arc::new(whole_tx))
    +            })
    +            .map_err(Error::Sqlite)?;
    +
    +        txs.into_iter()
    +            .map(|row| row.map_err(Error::Sqlite))
    +            .collect()
    +    }
    +
    +    /// Select all transactions with last_seen values.
    +    fn select_last_seen(
    +        db_transaction: &rusqlite::Transaction,
    +    ) -> Result<BTreeMap<Txid, u64>, Error> {
    +        // load tx last_seen
    +        let mut select_last_seen_stmt = db_transaction
    +            .prepare_cached("SELECT txid, last_seen FROM tx WHERE last_seen IS NOT NULL")
    +            .expect("select tx last seen statement");
    +
    +        let last_seen = select_last_seen_stmt
    +            .query_map([], |row| {
    +                let txid = row.get_unwrap::<usize, String>(0);
    +                let txid = Txid::from_str(&txid).expect("txid");
    +                let last_seen = row.get_unwrap::<usize, u64>(1);
    +                Ok((txid, last_seen))
    +            })
    +            .map_err(Error::Sqlite)?;
    +        last_seen
    +            .into_iter()
    +            .map(|row| row.map_err(Error::Sqlite))
    +            .collect()
    +    }
    +
    +    /// Insert txouts.
    +    ///
    +    /// Error if trying to insert existing outpoint.
    +    fn insert_txouts(
    +        db_transaction: &rusqlite::Transaction,
    +        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>,
    +    ) -> Result<(), Error> {
    +        for txout in tx_graph_changeset.graph.txouts.iter() {
    +            let insert_txout_stmt = &mut db_transaction
    +                .prepare_cached("INSERT INTO txout (txid, vout, value, script) VALUES (:txid, :vout, :value, :script)")
    +                .expect("insert txout statement");
    +            let txid = txout.0.txid.to_string();
    +            let vout = txout.0.vout;
    +            let value = txout.1.value.to_sat();
    +            let script = txout.1.script_pubkey.as_bytes();
    +            insert_txout_stmt.execute(named_params! {":txid": txid, ":vout": vout, ":value": value, ":script": script })
    +                .map_err(Error::Sqlite)?;
    +        }
    +        Ok(())
    +    }
    +
    +    /// Select all transaction outputs.
    +    fn select_txouts(
    +        db_transaction: &rusqlite::Transaction,
    +    ) -> Result<BTreeMap<OutPoint, TxOut>, Error> {
    +        // load tx outs
    +        let mut select_txout_stmt = db_transaction
    +            .prepare_cached("SELECT txid, vout, value, script FROM txout")
    +            .expect("select txout statement");
    +
    +        let txouts = select_txout_stmt
    +            .query_map([], |row| {
    +                let txid = row.get_unwrap::<usize, String>(0);
    +                let txid = Txid::from_str(&txid).expect("txid");
    +                let vout = row.get_unwrap::<usize, u32>(1);
    +                let outpoint = OutPoint::new(txid, vout);
    +                let value = row.get_unwrap::<usize, u64>(2);
    +                let script_pubkey = row.get_unwrap::<usize, Vec<u8>>(3);
    +                let script_pubkey = ScriptBuf::from_bytes(script_pubkey);
    +                let txout = TxOut {
    +                    value: Amount::from_sat(value),
    +                    script_pubkey,
    +                };
    +                Ok((outpoint, txout))
    +            })
    +            .map_err(Error::Sqlite)?;
    +        txouts
    +            .into_iter()
    +            .map(|row| row.map_err(Error::Sqlite))
    +            .collect()
    +    }
    +
    +    /// Update transaction last seen times.
    +    fn update_last_seen(
    +        db_transaction: &rusqlite::Transaction,
    +        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>,
    +    ) -> Result<(), Error> {
    +        for tx_last_seen in tx_graph_changeset.graph.last_seen.iter() {
    +            let insert_or_update_tx_stmt = &mut db_transaction
    +                .prepare_cached("INSERT INTO tx (txid, last_seen) VALUES (:txid, :last_seen) ON CONFLICT (txid) DO UPDATE SET last_seen = :last_seen WHERE txid = :txid")
    +                .expect("insert or update tx last_seen statement");
    +            let txid = tx_last_seen.0.to_string();
    +            let last_seen = *tx_last_seen.1;
    +            insert_or_update_tx_stmt
    +                .execute(named_params! {":txid": txid, ":last_seen": last_seen })
    +                .map_err(Error::Sqlite)?;
    +        }
    +        Ok(())
    +    }
    +}
    +
    +/// Anchor table related functions.
    +impl<K, A> Store<K, A>
    +where
    +    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    +    A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,
    +{
    +    /// Insert anchors.
    +    fn insert_anchors(
    +        db_transaction: &rusqlite::Transaction,
    +        tx_graph_changeset: &indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>>,
    +    ) -> Result<(), Error> {
    +        // serde_json::to_string
    +        for anchor in tx_graph_changeset.graph.anchors.iter() {
    +            let insert_anchor_stmt = &mut db_transaction
    +                .prepare_cached("INSERT INTO anchor_tx (block_hash, anchor, txid) VALUES (:block_hash, jsonb(:anchor), :txid)")
    +                .expect("insert anchor statement");
    +            let block_hash = anchor.0.anchor_block().hash.to_string();
    +            let anchor_json = serde_json::to_string(&anchor.0).expect("anchor json");
    +            let txid = anchor.1.to_string();
    +            insert_anchor_stmt.execute(named_params! {":block_hash": block_hash, ":anchor": anchor_json, ":txid": txid })
    +                .map_err(Error::Sqlite)?;
    +        }
    +        Ok(())
    +    }
    +
    +    /// Select all anchors.
    +    fn select_anchors(
    +        db_transaction: &rusqlite::Transaction,
    +    ) -> Result<BTreeSet<(A, Txid)>, Error> {
    +        // serde_json::from_str
    +        let mut select_anchor_stmt = db_transaction
    +            .prepare_cached("SELECT block_hash, json(anchor), txid FROM anchor_tx")
    +            .expect("select anchor statement");
    +        let anchors = select_anchor_stmt
    +            .query_map([], |row| {
    +                let hash = row.get_unwrap::<usize, String>(0);
    +                let hash = BlockHash::from_str(hash.as_str()).expect("block hash");
    +                let anchor = row.get_unwrap::<usize, String>(1);
    +                let anchor: A = serde_json::from_str(anchor.as_str()).expect("anchor");
    +                // double check anchor blob block hash matches
    +                assert_eq!(hash, anchor.anchor_block().hash);
    +                let txid = row.get_unwrap::<usize, String>(2);
    +                let txid = Txid::from_str(&txid).expect("txid");
    +                Ok((anchor, txid))
    +            })
    +            .map_err(Error::Sqlite)?;
    +        anchors
    +            .into_iter()
    +            .map(|row| row.map_err(Error::Sqlite))
    +            .collect()
    +    }
    +}
    +
    +/// Functions to read and write all [`ChangeSet`] data.
    +impl<K, A> Store<K, A>
    +where
    +    K: Ord + for<'de> Deserialize<'de> + Serialize + Send,
    +    A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,
    +{
    +    fn write(&mut self, changeset: &CombinedChangeSet<K, A>) -> Result<(), Error> {
    +        // no need to write anything if changeset is empty
    +        if changeset.is_empty() {
    +            return Ok(());
    +        }
    +
    +        let db_transaction = self.db_transaction()?;
    +
    +        let network_changeset = &changeset.network;
    +        let current_network = Self::select_network(&db_transaction)?;
    +        Self::insert_network(&current_network, &db_transaction, network_changeset)?;
    +
    +        let chain_changeset = &changeset.chain;
    +        Self::insert_or_delete_blocks(&db_transaction, chain_changeset)?;
    +
    +        let tx_graph_changeset = &changeset.indexed_tx_graph;
    +        Self::insert_keychains(&db_transaction, tx_graph_changeset)?;
    +        Self::update_last_revealed(&db_transaction, tx_graph_changeset)?;
    +        Self::insert_txs(&db_transaction, tx_graph_changeset)?;
    +        Self::insert_txouts(&db_transaction, tx_graph_changeset)?;
    +        Self::insert_anchors(&db_transaction, tx_graph_changeset)?;
    +        Self::update_last_seen(&db_transaction, tx_graph_changeset)?;
    +        db_transaction.commit().map_err(Error::Sqlite)
    +    }
    +
    +    fn read(&mut self) -> Result<Option<CombinedChangeSet<K, A>>, Error> {
    +        let db_transaction = self.db_transaction()?;
    +
    +        let network = Self::select_network(&db_transaction)?;
    +        let chain = Self::select_blocks(&db_transaction)?;
    +        let keychains_added = Self::select_keychains(&db_transaction)?;
    +        let last_revealed = Self::select_last_revealed(&db_transaction)?;
    +        let txs = Self::select_txs(&db_transaction)?;
    +        let last_seen = Self::select_last_seen(&db_transaction)?;
    +        let txouts = Self::select_txouts(&db_transaction)?;
    +        let anchors = Self::select_anchors(&db_transaction)?;
    +
    +        let graph: tx_graph::ChangeSet<A> = tx_graph::ChangeSet {
    +            txs,
    +            txouts,
    +            anchors,
    +            last_seen,
    +        };
    +
    +        let indexer: keychain::ChangeSet<K> = keychain::ChangeSet {
    +            keychains_added,
    +            last_revealed,
    +        };
    +
    +        let indexed_tx_graph: indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<K>> =
    +            indexed_tx_graph::ChangeSet { graph, indexer };
    +
    +        if network.is_none() && chain.is_empty() && indexed_tx_graph.is_empty() {
    +            Ok(None)
    +        } else {
    +            Ok(Some(CombinedChangeSet {
    +                chain,
    +                indexed_tx_graph,
    +                network,
    +            }))
    +        }
    +    }
    +}
    +
    +#[cfg(test)]
    +mod test {
    +    use super::*;
    +    use crate::store::Append;
    +    use bdk_chain::bitcoin::consensus::encode::deserialize;
    +    use bdk_chain::bitcoin::constants::genesis_block;
    +    use bdk_chain::bitcoin::hashes::hex::FromHex;
    +    use bdk_chain::bitcoin::transaction::Transaction;
    +    use bdk_chain::bitcoin::Network::Testnet;
    +    use bdk_chain::bitcoin::{secp256k1, BlockHash, OutPoint};
    +    use bdk_chain::miniscript::Descriptor;
    +    use bdk_chain::{
    +        indexed_tx_graph, keychain, tx_graph, BlockId, ConfirmationHeightAnchor,
    +        ConfirmationTimeHeightAnchor, DescriptorExt,
    +    };
    +    use bdk_persist::PersistBackend;
    +    use std::str::FromStr;
    +    use std::sync::Arc;
    +
    +    #[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Hash, Debug, Serialize, Deserialize)]
    +    enum Keychain {
    +        External { account: u32, name: String },
    +        Internal { account: u32, name: String },
    +    }
    +
    +    #[test]
    +    fn insert_and_load_aggregate_changesets_with_confirmation_time_height_anchor(
    +    ) -> anyhow::Result<()> {
    +        let (test_changesets, agg_test_changesets) =
    +            create_test_changesets(&|height, time, hash| ConfirmationTimeHeightAnchor {
    +                confirmation_height: height,
    +                confirmation_time: time,
    +                anchor_block: (height, hash).into(),
    +            });
    +
    +        let conn = Connection::open_in_memory().expect("in memory connection");
    +        let mut store = Store::<Keychain, ConfirmationTimeHeightAnchor>::new(conn)
    +            .expect("create new memory db store");
    +
    +        test_changesets.iter().for_each(|changeset| {
    +            store.write_changes(changeset).expect("write changeset");
    +        });
    +
    +        let agg_changeset = store.load_from_persistence().expect("aggregated changeset");
    +
    +        assert_eq!(agg_changeset, Some(agg_test_changesets));
    +        Ok(())
    +    }
    +
    +    #[test]
    +    fn insert_and_load_aggregate_changesets_with_confirmation_height_anchor() -> anyhow::Result<()>
    +    {
    +        let (test_changesets, agg_test_changesets) =
    +            create_test_changesets(&|height, _time, hash| ConfirmationHeightAnchor {
    +                confirmation_height: height,
    +                anchor_block: (height, hash).into(),
    +            });
    +
    +        let conn = Connection::open_in_memory().expect("in memory connection");
    +        let mut store = Store::<Keychain, ConfirmationHeightAnchor>::new(conn)
    +            .expect("create new memory db store");
    +
    +        test_changesets.iter().for_each(|changeset| {
    +            store.write_changes(changeset).expect("write changeset");
    +        });
    +
    +        let agg_changeset = store.load_from_persistence().expect("aggregated changeset");
    +
    +        assert_eq!(agg_changeset, Some(agg_test_changesets));
    +        Ok(())
    +    }
    +
    +    #[test]
    +    fn insert_and_load_aggregate_changesets_with_blockid_anchor() -> anyhow::Result<()> {
    +        let (test_changesets, agg_test_changesets) =
    +            create_test_changesets(&|height, _time, hash| BlockId { height, hash });
    +
    +        let conn = Connection::open_in_memory().expect("in memory connection");
    +        let mut store = Store::<Keychain, BlockId>::new(conn).expect("create new memory db store");
    +
    +        test_changesets.iter().for_each(|changeset| {
    +            store.write_changes(changeset).expect("write changeset");
    +        });
    +
    +        let agg_changeset = store.load_from_persistence().expect("aggregated changeset");
    +
    +        assert_eq!(agg_changeset, Some(agg_test_changesets));
    +        Ok(())
    +    }
    +
    +    fn create_test_changesets<A: Anchor + Copy>(
    +        anchor_fn: &dyn Fn(u32, u64, BlockHash) -> A,
    +    ) -> (
    +        Vec<CombinedChangeSet<Keychain, A>>,
    +        CombinedChangeSet<Keychain, A>,
    +    ) {
    +        let secp = &secp256k1::Secp256k1::signing_only();
    +
    +        let network_changeset = Some(Testnet);
    +
    +        let block_hash_0: BlockHash = genesis_block(Testnet).block_hash();
    +        let block_hash_1 =
    +            BlockHash::from_str("00000000b873e79784647a6c82962c70d228557d24a747ea4d1b8bbe878e1206")
    +                .unwrap();
    +        let block_hash_2 =
    +            BlockHash::from_str("000000006c02c8ea6e4ff69651f7fcde348fb9d557a06e6957b65552002a7820")
    +                .unwrap();
    +
    +        let block_changeset = [
    +            (0, Some(block_hash_0)),
    +            (1, Some(block_hash_1)),
    +            (2, Some(block_hash_2)),
    +        ]
    +        .into();
    +
    +        let ext_keychain = Keychain::External {
    +            account: 0,
    +            name: "ext test".to_string(),
    +        };
    +        let (ext_desc, _ext_keymap) = Descriptor::parse_descriptor(secp, "wpkh(tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/0/*)").unwrap();
    +        let ext_desc_id = ext_desc.descriptor_id();
    +        let int_keychain = Keychain::Internal {
    +            account: 0,
    +            name: "int test".to_string(),
    +        };
    +        let (int_desc, _int_keymap) = Descriptor::parse_descriptor(secp, "wpkh(tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/1/*)").unwrap();
    +        let int_desc_id = int_desc.descriptor_id();
    +
    +        let tx0_hex = Vec::<u8>::from_hex("01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000").unwrap();
    +        let tx0: Arc<Transaction> = Arc::new(deserialize(tx0_hex.as_slice()).unwrap());
    +        let tx1_hex = Vec::<u8>::from_hex("010000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff025151feffffff0200f2052a010000001600149243f727dd5343293eb83174324019ec16c2630f0000000000000000776a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf94c4fecc7daa2490047304402205e423a8754336ca99dbe16509b877ef1bf98d008836c725005b3c787c41ebe46022047246e4467ad7cc7f1ad98662afcaf14c115e0095a227c7b05c5182591c23e7e01000120000000000000000000000000000000000000000000000000000000000000000000000000").unwrap();
    +        let tx1: Arc<Transaction> = Arc::new(deserialize(tx1_hex.as_slice()).unwrap());
    +        let tx2_hex = Vec::<u8>::from_hex("01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000").unwrap();
    +        let tx2: Arc<Transaction> = Arc::new(deserialize(tx2_hex.as_slice()).unwrap());
    +
    +        let outpoint0_0 = OutPoint::new(tx0.txid(), 0);
    +        let txout0_0 = tx0.output.first().unwrap().clone();
    +        let outpoint1_0 = OutPoint::new(tx1.txid(), 0);
    +        let txout1_0 = tx1.output.first().unwrap().clone();
    +
    +        let anchor1 = anchor_fn(1, 1296667328, block_hash_1);
    +        let anchor2 = anchor_fn(2, 1296688946, block_hash_2);
    +
    +        let tx_graph_changeset = tx_graph::ChangeSet::<A> {
    +            txs: [tx0.clone(), tx1.clone()].into(),
    +            txouts: [(outpoint0_0, txout0_0), (outpoint1_0, txout1_0)].into(),
    +            anchors: [(anchor1, tx0.txid()), (anchor1, tx1.txid())].into(),
    +            last_seen: [
    +                (tx0.txid(), 1598918400),
    +                (tx1.txid(), 1598919121),
    +                (tx2.txid(), 1608919121),
    +            ]
    +            .into(),
    +        };
    +
    +        let keychain_changeset = keychain::ChangeSet {
    +            keychains_added: [(ext_keychain, ext_desc), (int_keychain, int_desc)].into(),
    +            last_revealed: [(ext_desc_id, 124), (int_desc_id, 421)].into(),
    +        };
    +
    +        let graph_changeset: indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<Keychain>> =
    +            indexed_tx_graph::ChangeSet {
    +                graph: tx_graph_changeset,
    +                indexer: keychain_changeset,
    +            };
    +
    +        // test changesets to write to db
    +        let mut changesets = Vec::new();
    +
    +        changesets.push(CombinedChangeSet {
    +            chain: block_changeset,
    +            indexed_tx_graph: graph_changeset,
    +            network: network_changeset,
    +        });
    +
    +        // create changeset that sets the whole tx2 and updates it's lastseen where before there was only the txid and last_seen
    +        let tx_graph_changeset2 = tx_graph::ChangeSet::<A> {
    +            txs: [tx2.clone()].into(),
    +            txouts: BTreeMap::default(),
    +            anchors: BTreeSet::default(),
    +            last_seen: [(tx2.txid(), 1708919121)].into(),
    +        };
    +
    +        let graph_changeset2: indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<Keychain>> =
    +            indexed_tx_graph::ChangeSet {
    +                graph: tx_graph_changeset2,
    +                indexer: keychain::ChangeSet::default(),
    +            };
    +
    +        changesets.push(CombinedChangeSet {
    +            chain: local_chain::ChangeSet::default(),
    +            indexed_tx_graph: graph_changeset2,
    +            network: None,
    +        });
    +
    +        // create changeset that adds a new anchor2 for tx0 and tx1
    +        let tx_graph_changeset3 = tx_graph::ChangeSet::<A> {
    +            txs: BTreeSet::default(),
    +            txouts: BTreeMap::default(),
    +            anchors: [(anchor2, tx0.txid()), (anchor2, tx1.txid())].into(),
    +            last_seen: BTreeMap::default(),
    +        };
    +
    +        let graph_changeset3: indexed_tx_graph::ChangeSet<A, keychain::ChangeSet<Keychain>> =
    +            indexed_tx_graph::ChangeSet {
    +                graph: tx_graph_changeset3,
    +                indexer: keychain::ChangeSet::default(),
    +            };
    +
    +        changesets.push(CombinedChangeSet {
    +            chain: local_chain::ChangeSet::default(),
    +            indexed_tx_graph: graph_changeset3,
    +            network: None,
    +        });
    +
    +        // aggregated test changesets
    +        let agg_test_changesets =
    +            changesets
    +                .iter()
    +                .fold(CombinedChangeSet::<Keychain, A>::default(), |mut i, cs| {
    +                    i.append(cs.clone());
    +                    i
    +                });
    +
    +        (changesets, agg_test_changesets)
    +    }
    +}
    +
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_testenv/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_testenv/lib.rs.html index 18d7ddf90b..4b438804d8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_testenv/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_testenv/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -302,7 +302,7 @@
     302
     303
     304
    -
    use bdk_chain::{
    +
    use bdk_chain::{
         bitcoin::{
             address::NetworkChecked, block::Header, hash_types::TxMerkleNode, hashes::Hash,
             secp256k1::rand::random, transaction, Address, Amount, Block, BlockHash, CompactTarget,
    @@ -333,12 +333,12 @@
     impl TestEnv {
         /// Construct a new [`TestEnv`] instance with default configurations.
         pub fn new() -> anyhow::Result<Self> {
    -        let bitcoind = match std::env::var_os("BITCOIND_EXE") {
    +        let bitcoind = match std::env::var_os("BITCOIND_EXE") {
                 Some(bitcoind_path) => electrsd::bitcoind::BitcoinD::new(bitcoind_path),
                 None => {
                     let bitcoind_exe = electrsd::bitcoind::downloaded_exe_path()
                         .expect(
    -                "you need to provide an env var BITCOIND_EXE or specify a bitcoind version feature",
    +                "you need to provide an env var BITCOIND_EXE or specify a bitcoind version feature",
                     );
                     electrsd::bitcoind::BitcoinD::with_conf(
                         bitcoind_exe,
    @@ -349,13 +349,13 @@
     
             let mut electrsd_conf = electrsd::Conf::default();
             electrsd_conf.http_enabled = true;
    -        let electrsd = match std::env::var_os("ELECTRS_EXE") {
    +        let electrsd = match std::env::var_os("ELECTRS_EXE") {
                 Some(env_electrs_exe) => {
                     electrsd::ElectrsD::with_conf(env_electrs_exe, &bitcoind, &electrsd_conf)
                 }
                 None => {
                     let electrs_exe = electrsd::downloaded_exe_path()
    -                    .expect("electrs version feature must be enabled");
    +                    .expect("electrs version feature must be enabled");
                     electrsd::ElectrsD::with_conf(electrs_exe, &bitcoind, &electrsd_conf)
                 }
             }?;
    @@ -377,13 +377,13 @@
         pub fn reset_electrsd(mut self) -> anyhow::Result<Self> {
             let mut electrsd_conf = electrsd::Conf::default();
             electrsd_conf.http_enabled = true;
    -        let electrsd = match std::env::var_os("ELECTRS_EXE") {
    +        let electrsd = match std::env::var_os("ELECTRS_EXE") {
                 Some(env_electrs_exe) => {
                     electrsd::ElectrsD::with_conf(env_electrs_exe, &self.bitcoind, &electrsd_conf)
                 }
                 None => {
                     let electrs_exe = electrsd::downloaded_exe_path()
    -                    .expect("electrs version feature must be enabled");
    +                    .expect("electrs version feature must be enabled");
                     electrsd::ElectrsD::with_conf(electrs_exe, &self.bitcoind, &electrsd_conf)
                 }
             }?;
    @@ -444,7 +444,7 @@
                 .bits
                 .clone()
                 .try_into()
    -            .expect("rpc provided us with invalid bits");
    +            .expect("rpc provided us with invalid bits");
     
             let mut block = Block {
                 header: Header {
    @@ -458,7 +458,7 @@
                 txdata,
             };
     
    -        block.header.merkle_root = block.compute_merkle_root().expect("must compute");
    +        block.header.merkle_root = block.compute_merkle_root().expect("must compute");
     
             for nonce in 0..=u32::MAX {
                 block.header.nonce = nonce;
    @@ -518,7 +518,7 @@
             assert_eq!(
                 self.bitcoind.client.get_block_count()?,
                 start_height,
    -            "reorg should not result in height change"
    +            "reorg should not result in height change"
             );
             res
         }
    @@ -534,7 +534,7 @@
             assert_eq!(
                 self.bitcoind.client.get_block_count()?,
                 start_height,
    -            "reorg should not result in height change"
    +            "reorg should not result in height change"
             );
             Ok(res)
         }
    @@ -557,7 +557,7 @@
                     .ok()
                     .map(|hash| BlockId { height, hash })
             }))
    -        .expect("must craft tip")
    +        .expect("must craft tip")
         }
     
         /// Get the genesis hash of the blockchain.
    @@ -606,5 +606,4 @@
             Ok(())
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/lib.rs.html index fbe1331124..6476a8cc38 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -439,21 +439,21 @@
     439
     440
     441
    -
    #![allow(unused)]
    +
    #![allow(unused)]
     #![allow(missing_docs)]
     #![allow(clippy::all)] // FIXME
     //! A spending plan or *plan* for short is a representation of a particular spending path on a
     //! descriptor. This allows us to analayze a choice of spending path without producing any
     //! signatures or other witness data for it.
     //!
    -//! To make a plan you provide the descriptor with "assets" like which keys you are able to use, hash
    +//! To make a plan you provide the descriptor with "assets" like which keys you are able to use, hash
     //! pre-images you have access to, the current block height etc.
     //!
    -//! Once you've got a plan it can tell you its expected satisfaction weight which can be useful for
    +//! Once you've got a plan it can tell you its expected satisfaction weight which can be useful for
     //! doing coin selection. Furthermore it provides which subset of those keys and hash pre-images you
     //! will actually need as well as what locktime or sequence number you need to set.
     //!
    -//! Once you've obstained signatures, hash pre-images etc required by the plan, it can create a
    +//! Once you've obstained signatures, hash pre-images etc required by the plan, it can create a
     //! witness/script_sig for the input.
     use bdk_chain::{bitcoin, collections::*, miniscript};
     use bitcoin::{
    @@ -579,7 +579,7 @@
                         let control_block = tr
                             .spend_info()
                             .control_block(&(script.clone(), *leaf_version))
    -                        .expect("must exist");
    +                        .expect("must exist");
                         witness_elems.push(script.len());
                         witness_elems.push(control_block.size());
                     }
    @@ -654,7 +654,7 @@
                         let spend_info = tr.spend_info();
                         let control_block = spend_info
                             .control_block(&(script.clone(), *leaf_version))
    -                        .expect("must exist");
    +                        .expect("must exist");
                         witness.push(script.clone().into_bytes());
                         witness.push(control_block.serialize());
     
    @@ -684,7 +684,7 @@
                                         plan_key: plan_key.clone(),
                                     };
                                 }
    -                            _ => unreachable!("tapkey spend will always have only one sign step"),
    +                            _ => unreachable!("tapkey spend will always have only one sign step"),
                             },
                             TrSpend::LeafSpend {
                                 script,
    @@ -880,5 +880,4 @@
             Descriptor::Tr(tr) => crate::plan_impls::plan_satisfaction_tr(tr, assets),
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/plan_impls.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/plan_impls.rs.html index ba1e627194..6f4d98d4ad 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/plan_impls.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/plan_impls.rs.html @@ -1,4 +1,4 @@ -plan_impls.rs - source
    1
    +plan_impls.rs - source
    1
     2
     3
     4
    @@ -323,7 +323,7 @@
     323
     324
     325
    -
    use bdk_chain::{bitcoin, miniscript};
    +
    use bdk_chain::{bitcoin, miniscript};
     use bitcoin::locktime::absolute;
     use miniscript::Terminal;
     
    @@ -648,5 +648,4 @@
             Terminal::MultiA(_, _) => todo!(),
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/requirements.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/requirements.rs.html index b6a4acab9f..bfe8b6eea9 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/requirements.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/requirements.rs.html @@ -1,4 +1,4 @@ -requirements.rs - source
    1
    +requirements.rs - source
    1
     2
     3
     4
    @@ -227,7 +227,7 @@
     227
     228
     229
    -
    use bdk_chain::{bitcoin, collections::*, miniscript};
    +
    use bdk_chain::{bitcoin, collections::*, miniscript};
     use core::ops::Deref;
     
     use bitcoin::{
    @@ -327,7 +327,7 @@
     }
     
     impl core::fmt::Display for SigningError {
    -    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
    +    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
             match self {
                 SigningError::SigHashError(e) => e.fmt(f),
                 SigningError::DerivationError(e) => e.fmt(f),
    @@ -341,7 +341,7 @@
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for SigningError {}
     
     impl RequiredSignatures<DescriptorPublicKey> {
    @@ -349,7 +349,7 @@
             &self,
             input_index: usize,
             keymap: &KeyMap,
    -        prevouts: &Prevouts<'_, impl core::borrow::Borrow<TxOut>>,
    +        prevouts: &Prevouts<'_, impl core::borrow::Borrow<TxOut>>,
             schnorr_sighashty: Option<TapSighashType>,
             _ecdsa_sighashty: Option<EcdsaSighashType>,
             sighash_cache: &mut SighashCache<T>,
    @@ -456,5 +456,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/template.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/template.rs.html index bd149ca0bf..b8bcbc0bc2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/template.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_tmp_plan/template.rs.html @@ -1,4 +1,4 @@ -template.rs - source
    1
    +template.rs - source
    1
     2
     3
     4
    @@ -74,7 +74,7 @@
     74
     75
     76
    -
    use bdk_chain::{bitcoin, miniscript};
    +
    use bdk_chain::{bitcoin, miniscript};
     use bitcoin::{
         bip32::DerivationPath,
         hashes::{hash160, ripemd160, sha256},
    @@ -96,7 +96,7 @@
     }
     
     /// A plan key contains the asset key originally provided along with key in the descriptor it
    -/// purports to be able to derive for along with a "hint" on how to derive it.
    +/// purports to be able to derive for along with a "hint" on how to derive it.
     #[derive(Clone, Debug)]
     pub struct PlanKey<Ak> {
         /// The key the planner will sign with
    @@ -115,7 +115,7 @@
                 TemplateItem::Pk { .. } => 32,
                 TemplateItem::One => varint_len(1),
                 TemplateItem::Zero => 0, /* zero means an empty witness element */
    -            // I'm not sure if it should be 32 here (it's a 20 byte hash) but that's what other
    +            // I'm not sure if it should be 32 here (it's a 20 byte hash) but that's what other
                 // parts of the code were doing.
                 TemplateItem::Hash160(_) | TemplateItem::Ripemd160(_) => 32,
                 TemplateItem::Sha256(_) | TemplateItem::Hash256(_) => 32,
    @@ -150,5 +150,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/checksum.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/checksum.rs.html index 8ca8881630..198ba1c9bf 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/checksum.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/checksum.rs.html @@ -1,5 +1,4 @@ -checksum.rs - source
    1
    +checksum.rs - source
    1
     2
     3
     4
    @@ -146,7 +145,7 @@
     145
     146
     147
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -165,8 +164,8 @@
     use crate::descriptor::DescriptorError;
     use alloc::string::String;
     
    -const INPUT_CHARSET: &[u8] = b"0123456789()[],'/*abcdefgh@:$%{}IJKLMNOPQRSTUVWXYZ&+-.;<=>?!^_|~ijklmnopqrstuvwxyzABCDEFGH`#\"\\ ";
    -const CHECKSUM_CHARSET: &[u8] = b"qpzry9x8gf2tvdw0s3jn54khce6mua7l";
    +const INPUT_CHARSET: &[u8] = b"0123456789()[],'/*abcdefgh@:$%{}IJKLMNOPQRSTUVWXYZ&+-.;<=>?!^_|~ijklmnopqrstuvwxyzABCDEFGH`#\"\\ ";
    +const CHECKSUM_CHARSET: &[u8] = b"qpzry9x8gf2tvdw0s3jn54khce6mua7l";
     
     fn poly_mod(mut c: u64, val: u64) -> u64 {
         let c0 = c >> 35;
    @@ -197,7 +196,7 @@
         let mut clscount = 0;
     
         let mut original_checksum = None;
    -    if let Some(split) = desc.split_once('#') {
    +    if let Some(split) = desc.split_once('#') {
             desc = split.0;
             original_checksum = Some(split.1);
         }
    @@ -252,30 +251,30 @@
         // test calc_checksum() function; it should return the same value as Bitcoin Core
         #[test]
         fn test_calc_checksum() {
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)";
    -        assert_eq!(calc_checksum(desc).unwrap(), "tqz0nc62");
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)";
    +        assert_eq!(calc_checksum(desc).unwrap(), "tqz0nc62");
     
    -        let desc = "pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)";
    -        assert_eq!(calc_checksum(desc).unwrap(), "lasegmfs");
    +        let desc = "pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)";
    +        assert_eq!(calc_checksum(desc).unwrap(), "lasegmfs");
         }
     
         // test calc_checksum() function; it should return the same value as Bitcoin Core even if the
         // descriptor string includes a checksum hash
         #[test]
         fn test_calc_checksum_with_checksum_hash() {
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc62";
    -        assert_eq!(calc_checksum(desc).unwrap(), "tqz0nc62");
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc62";
    +        assert_eq!(calc_checksum(desc).unwrap(), "tqz0nc62");
     
    -        let desc = "pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)#lasegmfs";
    -        assert_eq!(calc_checksum(desc).unwrap(), "lasegmfs");
    +        let desc = "pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)#lasegmfs";
    +        assert_eq!(calc_checksum(desc).unwrap(), "lasegmfs");
     
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc26";
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc26";
             assert_matches!(
                 calc_checksum(desc),
                 Err(DescriptorError::InvalidDescriptorChecksum)
             );
     
    -        let desc = "pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)#lasegmsf";
    +        let desc = "pkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/44'/1'/0'/0/*)#lasegmsf";
             assert_matches!(
                 calc_checksum(desc),
                 Err(DescriptorError::InvalidDescriptorChecksum)
    @@ -285,7 +284,7 @@
         #[test]
         fn test_calc_checksum_invalid_character() {
             let sparkle_heart = unsafe { core::str::from_utf8_unchecked(&[240, 159, 146, 150]) };
    -        let invalid_desc = format!("wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcL{}fjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)", sparkle_heart);
    +        let invalid_desc = format!("wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcL{}fjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)", sparkle_heart);
     
             assert_matches!(
                 calc_checksum(&invalid_desc),
    @@ -293,5 +292,4 @@
             );
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/dsl.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/dsl.rs.html index 81b6cf7d60..9f1e8b99e5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/dsl.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/dsl.rs.html @@ -1,5 +1,4 @@ -dsl.rs - source
    1
    +dsl.rs - source
    1
     2
     3
     4
    @@ -1216,7 +1215,7 @@
     1215
     1216
     1217
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -1231,13 +1230,13 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_top_level_sh {
    +macro_rules! impl_top_level_sh {
         // disallow `sortedmulti` in `bare()`
         ( Bare, new, new, Legacy, sortedmulti $( $inner:tt )* ) => {
    -        compile_error!("`bare()` descriptors can't contain any `sortedmulti()` operands");
    +        compile_error!("`bare()` descriptors can't contain any `sortedmulti()` operands");
         };
         ( Bare, new, new, Legacy, sortedmulti_vec $( $inner:tt )* ) => {
    -        compile_error!("`bare()` descriptors can't contain any `sortedmulti_vec()` operands");
    +        compile_error!("`bare()` descriptors can't contain any `sortedmulti_vec()` operands");
         };
     
         ( $inner_struct:ident, $constructor:ident, $sortedmulti_constructor:ident, $ctx:ident, sortedmulti $( $inner:tt )* ) => {{
    @@ -1276,7 +1275,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_top_level_pk {
    +macro_rules! impl_top_level_pk {
         ( $inner_type:ident, $ctx:ty, $key:expr ) => {{
             use $crate::miniscript::descriptor::$inner_type;
     
    @@ -1293,7 +1292,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_top_level_tr {
    +macro_rules! impl_top_level_tr {
         ( $internal_key:expr, $tap_tree:expr ) => {{
             use $crate::miniscript::descriptor::{
                 Descriptor, DescriptorPublicKey, KeyMap, TapTree, Tr,
    @@ -1335,7 +1334,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_leaf_opcode {
    +macro_rules! impl_leaf_opcode {
         ( $terminal_variant:ident ) => {{
             use $crate::descriptor::CheckMiniscript;
     
    @@ -1359,7 +1358,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_leaf_opcode_value {
    +macro_rules! impl_leaf_opcode_value {
         ( $terminal_variant:ident, $value:expr ) => {{
             use $crate::descriptor::CheckMiniscript;
     
    @@ -1383,7 +1382,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_leaf_opcode_value_two {
    +macro_rules! impl_leaf_opcode_value_two {
         ( $terminal_variant:ident, $one:expr, $two:expr ) => {{
             use $crate::descriptor::CheckMiniscript;
     
    @@ -1407,7 +1406,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_node_opcode_two {
    +macro_rules! impl_node_opcode_two {
         ( $terminal_variant:ident, $( $inner:tt )* ) => ({
             use $crate::descriptor::CheckMiniscript;
     
    @@ -1434,7 +1433,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_node_opcode_three {
    +macro_rules! impl_node_opcode_three {
         ( $terminal_variant:ident, $( $inner:tt )* ) => ({
             use $crate::descriptor::CheckMiniscript;
     
    @@ -1466,7 +1465,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! impl_sortedmulti {
    +macro_rules! impl_sortedmulti {
         ( $build_desc:expr, sortedmulti_vec ( $thresh:expr, $keys:expr ) ) => ({
             let secp = $crate::bitcoin::secp256k1::Secp256k1::new();
             $crate::keys::make_sortedmulti($thresh, $keys, $build_desc, &secp)
    @@ -1490,7 +1489,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! parse_tap_tree {
    +macro_rules! parse_tap_tree {
         ( @merge $tree_a:expr, $tree_b:expr) => {{
             use $crate::miniscript::descriptor::TapTree;
     
    @@ -1545,7 +1544,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! apply_modifier {
    +macro_rules! apply_modifier {
         ( $terminal_variant:ident, $inner:expr ) => {{
             use $crate::descriptor::CheckMiniscript;
     
    @@ -1641,7 +1640,7 @@
     ///
     /// ```
     /// # use std::str::FromStr;
    -/// let (my_descriptor, my_keys_map, networks) = bdk_wallet::descriptor!(sh(wsh(and_v(v:pk("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"),older(50)))))?;
    +/// let (my_descriptor, my_keys_map, networks) = bdk_wallet::descriptor!(sh(wsh(and_v(v:pk("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"),older(50)))))?;
     /// # Ok::<(), Box<dyn std::error::Error>>(())
     /// ```
     ///
    @@ -1656,10 +1655,10 @@
     /// ```
     /// # use std::str::FromStr;
     /// let my_key_1 = bitcoin::PublicKey::from_str(
    -///     "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
    +///     "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
     /// )?;
     /// let my_key_2 =
    -///     bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
    +///     bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
     /// let my_timelock = 50;
     ///
     /// let (descriptor_a, key_map_a, networks) = bdk_wallet::descriptor! {
    @@ -1689,10 +1688,10 @@
     /// ```
     /// # use std::str::FromStr;
     /// let my_key_1 = bitcoin::PublicKey::from_str(
    -///     "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
    +///     "02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c",
     /// )?;
     /// let my_key_2 =
    -///     bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
    +///     bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
     ///
     /// let (descriptor, key_map, networks) = bdk_wallet::descriptor! {
     ///     wsh (
    @@ -1708,7 +1707,7 @@
     ///
     /// ```
     /// let my_key =
    -///     bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
    +///     bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
     ///
     /// let (descriptor, key_map, networks) = bdk_wallet::descriptor!(wpkh(my_key))?;
     /// # Ok::<(), Box<dyn std::error::Error>>(())
    @@ -1716,7 +1715,7 @@
     ///
     /// [`Vec`]: alloc::vec::Vec
     #[macro_export]
    -macro_rules! descriptor {
    +macro_rules! descriptor {
         ( bare ( $( $minisc:tt )* ) ) => ({
             $crate::impl_top_level_sh!(Bare, new, new, Legacy, $( $minisc )*)
         });
    @@ -1810,7 +1809,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! group_multi_keys {
    +macro_rules! group_multi_keys {
         ( $( $key:expr ),+ ) => {{
             use $crate::keys::IntoDescriptorKey;
     
    @@ -1827,7 +1826,7 @@
     
     #[doc(hidden)]
     #[macro_export]
    -macro_rules! fragment_internal {
    +macro_rules! fragment_internal {
         // The @v prefix is used to parse a sequence of operands and return them in a vector. This is
         // used by operands that take a variable number of arguments, like `thresh()` and `multi()`.
         ( @v $op:ident ( $( $args:tt )* ) $( $tail:tt )* ) => ({
    @@ -1858,14 +1857,14 @@
     
         // The @t prefix is used to parse a sequence of operands and return them in a tuple. This
         // allows checking at compile-time the number of arguments passed to an operand. For this
    -    // reason it's used by `and_*()`, `or_*()`, etc.
    +    // reason it's used by `and_*()`, `or_*()`, etc.
         //
         // Unfortunately, due to the fact that concatenating tuples is pretty hard, the final result
         // adds in the first spot the parsed operand and in the second spot the result of parsing
         // all the following ones. For two operands the type then corresponds to: (X, (X, ())). For
    -    // three operands it's (X, (X, (X, ()))), etc.
    +    // three operands it's (X, (X, (X, ()))), etc.
         //
    -    // To check that the right number of arguments has been passed we can "cast" those tuples to
    +    // To check that the right number of arguments has been passed we can "cast" those tuples to
         // more convenient structures like `TupleTwo`. If the conversion succeeds, the right number of
         // args was passed. Otherwise the compilation fails entirely.
         ( @t $op:ident ( $( $args:tt )* ) $( $tail:tt )* ) => ({
    @@ -1895,7 +1894,7 @@
     ///
     /// The syntax to write macro fragment is the same as documented for the [`descriptor`] macro.
     #[macro_export]
    -macro_rules! fragment {
    +macro_rules! fragment {
         // Modifiers
         ( $modif:tt : $( $tail:tt )* ) => ({
             let op = $crate::fragment!( $( $tail )* );
    @@ -2005,10 +2004,10 @@
     
         // `sortedmulti()` is handled separately
         ( sortedmulti ( $( $inner:tt )* ) ) => ({
    -        compile_error!("`sortedmulti` can only be used as the root operand of a descriptor");
    +        compile_error!("`sortedmulti` can only be used as the root operand of a descriptor");
         });
         ( sortedmulti_vec ( $( $inner:tt )* ) ) => ({
    -        compile_error!("`sortedmulti_vec` can only be used as the root operand of a descriptor");
    +        compile_error!("`sortedmulti_vec` can only be used as the root operand of a descriptor");
         });
     }
     
    @@ -2042,7 +2041,7 @@
             for i in 0..expected.len() {
                 let child_desc = desc
                     .at_derivation_index(i as u32)
    -                .expect("i is not hardened");
    +                .expect("i is not hardened");
                 let address = child_desc.address(Regtest);
                 if let Ok(address) = address {
                     assert_eq!(address.to_string(), *expected.get(i).unwrap());
    @@ -2053,7 +2052,7 @@
             }
         }
     
    -    // - at least one of each "type" of operator; i.e. one modifier, one leaf_opcode, one leaf_opcode_value, etc.
    +    // - at least one of each "type" of operator; i.e. one modifier, one leaf_opcode, one leaf_opcode_value, etc.
         // - mixing up key types that implement IntoDescriptorKey in multi() or thresh()
     
         // expected script for pk and bare manually created
    @@ -2062,11 +2061,11 @@
         #[test]
         fn test_fixed_legacy_descriptors() {
             let pubkey1 = bitcoin::PublicKey::from_str(
    -            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
    +            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
             )
             .unwrap();
             let pubkey2 = bitcoin::PublicKey::from_str(
    -            "032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af",
    +            "032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af",
             )
             .unwrap();
     
    @@ -2074,36 +2073,36 @@
                 descriptor!(bare(multi(1,pubkey1,pubkey2))),
                 false,
                 true,
    -            &["512103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd21032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af52ae"],
    +            &["512103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd21032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af52ae"],
             );
             check(
                 descriptor!(pk(pubkey1)),
                 false,
                 true,
    -            &["2103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bdac"],
    +            &["2103a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bdac"],
             );
             check(
                 descriptor!(pkh(pubkey1)),
                 false,
                 true,
    -            &["muZpTpBYhxmRFuCjLc7C6BBDF32C8XVJUi"],
    +            &["muZpTpBYhxmRFuCjLc7C6BBDF32C8XVJUi"],
             );
             check(
                 descriptor!(sh(multi(1, pubkey1, pubkey2))),
                 false,
                 true,
    -            &["2MymURoV1bzuMnWMGiXzyomDkeuxXY7Suey"],
    +            &["2MymURoV1bzuMnWMGiXzyomDkeuxXY7Suey"],
             );
         }
     
         #[test]
         fn test_fixed_segwitv0_descriptors() {
             let pubkey1 = bitcoin::PublicKey::from_str(
    -            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
    +            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
             )
             .unwrap();
             let pubkey2 = bitcoin::PublicKey::from_str(
    -            "032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af",
    +            "032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af",
             )
             .unwrap();
     
    @@ -2111,36 +2110,36 @@
                 descriptor!(wpkh(pubkey1)),
                 true,
                 true,
    -            &["bcrt1qngw83fg8dz0k749cg7k3emc7v98wy0c7azaa6h"],
    +            &["bcrt1qngw83fg8dz0k749cg7k3emc7v98wy0c7azaa6h"],
             );
             check(
                 descriptor!(sh(wpkh(pubkey1))),
                 true,
                 true,
    -            &["2N5LiC3CqzxDamRTPG1kiNv1FpNJQ7x28sb"],
    +            &["2N5LiC3CqzxDamRTPG1kiNv1FpNJQ7x28sb"],
             );
             check(
                 descriptor!(wsh(multi(1, pubkey1, pubkey2))),
                 true,
                 true,
    -            &["bcrt1qgw8jvv2hsrvjfa6q66rk6har7d32lrqm5unnf5cl63q9phxfvgps5fyfqe"],
    +            &["bcrt1qgw8jvv2hsrvjfa6q66rk6har7d32lrqm5unnf5cl63q9phxfvgps5fyfqe"],
             );
             check(
                 descriptor!(sh(wsh(multi(1, pubkey1, pubkey2)))),
                 true,
                 true,
    -            &["2NCidRJysy7apkmE6JF5mLLaJFkrN3Ub9iy"],
    +            &["2NCidRJysy7apkmE6JF5mLLaJFkrN3Ub9iy"],
             );
         }
     
         #[test]
         fn test_fixed_threeop_descriptors() {
             let redeem_key = bitcoin::PublicKey::from_str(
    -            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
    +            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
             )
             .unwrap();
             let move_key = bitcoin::PublicKey::from_str(
    -            "032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af",
    +            "032e58afe51f9ed8ad3cc7897f634d881fdbe49a81564629ded8156bebd2ffd1af",
             )
             .unwrap();
     
    @@ -2148,24 +2147,24 @@
                 descriptor!(sh(wsh(and_or(pk(redeem_key), older(1000), pk(move_key))))),
                 true,
                 true,
    -            &["2MypGwr5eQWAWWJtiJgUEToVxc4zuokjQRe"],
    +            &["2MypGwr5eQWAWWJtiJgUEToVxc4zuokjQRe"],
             );
         }
     
         #[test]
         fn test_bip32_legacy_descriptors() {
    -        let xprv = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let xprv = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
     
    -        let path = bip32::DerivationPath::from_str("m/0").unwrap();
    +        let path = bip32::DerivationPath::from_str("m/0").unwrap();
             let desc_key = (xprv, path.clone()).into_descriptor_key().unwrap();
             check(
                 descriptor!(pk(desc_key)),
                 false,
                 false,
                 &[
    -                "2102363ad03c10024e1b597a5b01b9982807fb638e00b06f3b2d4a89707de3b93c37ac",
    -                "2102063a21fd780df370ed2fc8c4b86aa5ea642630609c203009df631feb7b480dd2ac",
    -                "2102ba2685ad1fa5891cb100f1656b2ce3801822ccb9bac0336734a6f8c1b93ebbc0ac",
    +                "2102363ad03c10024e1b597a5b01b9982807fb638e00b06f3b2d4a89707de3b93c37ac",
    +                "2102063a21fd780df370ed2fc8c4b86aa5ea642630609c203009df631feb7b480dd2ac",
    +                "2102ba2685ad1fa5891cb100f1656b2ce3801822ccb9bac0336734a6f8c1b93ebbc0ac",
                 ],
             );
     
    @@ -2175,13 +2174,13 @@
                 false,
                 false,
                 &[
    -                "muvBdsVpJxpFuTHMKA47htJPdCvdt4F9DP",
    -                "mxQSHK7DL2t1DN3xFxov1janCoXSSkrSPj",
    -                "mfz43r15GiWo4nizmyzMNubsnkDpByFFAn",
    +                "muvBdsVpJxpFuTHMKA47htJPdCvdt4F9DP",
    +                "mxQSHK7DL2t1DN3xFxov1janCoXSSkrSPj",
    +                "mfz43r15GiWo4nizmyzMNubsnkDpByFFAn",
                 ],
             );
     
    -        let path2 = bip32::DerivationPath::from_str("m/2147483647'/0").unwrap();
    +        let path2 = bip32::DerivationPath::from_str("m/2147483647'/0").unwrap();
             let desc_key1 = (xprv, path).into_descriptor_key().unwrap();
             let desc_key2 = (xprv, path2).into_descriptor_key().unwrap();
     
    @@ -2190,27 +2189,27 @@
                 false,
                 false,
                 &[
    -                "2MtMDXsfwefZkEEhVViEPidvcKRUtJamJJ8",
    -                "2MwAUZ1NYyWjhVvGTethFL6n7nZhS8WE6At",
    -                "2MuT6Bj66HLwZd7s4SoD8XbK4GwriKEA6Gr",
    +                "2MtMDXsfwefZkEEhVViEPidvcKRUtJamJJ8",
    +                "2MwAUZ1NYyWjhVvGTethFL6n7nZhS8WE6At",
    +                "2MuT6Bj66HLwZd7s4SoD8XbK4GwriKEA6Gr",
                 ],
             );
         }
     
         #[test]
         fn test_bip32_segwitv0_descriptors() {
    -        let xprv = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let xprv = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
     
    -        let path = bip32::DerivationPath::from_str("m/0").unwrap();
    +        let path = bip32::DerivationPath::from_str("m/0").unwrap();
             let desc_key = (xprv, path.clone()).into_descriptor_key().unwrap();
             check(
                 descriptor!(wpkh(desc_key)),
                 true,
                 false,
                 &[
    -                "bcrt1qnhm8w9fhc8cxzgqsmqdf9fyjccyvc0gltnymu0",
    -                "bcrt1qhylfd55rn75w9fj06zspctad5w4hz33rf0ttad",
    -                "bcrt1qq5sq3a6k9av9d8cne0k9wcldy4nqey5yt6889r",
    +                "bcrt1qnhm8w9fhc8cxzgqsmqdf9fyjccyvc0gltnymu0",
    +                "bcrt1qhylfd55rn75w9fj06zspctad5w4hz33rf0ttad",
    +                "bcrt1qq5sq3a6k9av9d8cne0k9wcldy4nqey5yt6889r",
                 ],
             );
     
    @@ -2220,13 +2219,13 @@
                 true,
                 false,
                 &[
    -                "2MxvjQCaLqZ5QxZ7XotZDQ63hZw3NPss763",
    -                "2NDUoevN4QMzhvHDMGhKuiT2fN9HXbFRMwn",
    -                "2NF4BEAY2jF1Fu8vqfN3NVKoFtom77pUxrx",
    +                "2MxvjQCaLqZ5QxZ7XotZDQ63hZw3NPss763",
    +                "2NDUoevN4QMzhvHDMGhKuiT2fN9HXbFRMwn",
    +                "2NF4BEAY2jF1Fu8vqfN3NVKoFtom77pUxrx",
                 ],
             );
     
    -        let path2 = bip32::DerivationPath::from_str("m/2147483647'/0").unwrap();
    +        let path2 = bip32::DerivationPath::from_str("m/2147483647'/0").unwrap();
             let desc_key1 = (xprv, path.clone()).into_descriptor_key().unwrap();
             let desc_key2 = (xprv, path2.clone()).into_descriptor_key().unwrap();
             check(
    @@ -2234,9 +2233,9 @@
                 true,
                 false,
                 &[
    -                "bcrt1qfxv8mxmlv5sz8q2mnuyaqdfe9jr4vvmx0csjhn092p6f4qfygfkq2hng49",
    -                "bcrt1qerj85g243e6jlcdxpmn9spk0gefcwvu7nw7ee059d5ydzpdhkm2qwfkf5k",
    -                "bcrt1qxkl2qss3k58q9ktc8e89pwr4gnptfpw4hju4xstxcjc0hkcae3jstluty7",
    +                "bcrt1qfxv8mxmlv5sz8q2mnuyaqdfe9jr4vvmx0csjhn092p6f4qfygfkq2hng49",
    +                "bcrt1qerj85g243e6jlcdxpmn9spk0gefcwvu7nw7ee059d5ydzpdhkm2qwfkf5k",
    +                "bcrt1qxkl2qss3k58q9ktc8e89pwr4gnptfpw4hju4xstxcjc0hkcae3jstluty7",
                 ],
             );
     
    @@ -2247,20 +2246,20 @@
                 true,
                 false,
                 &[
    -                "2NFCtXvx9q4ci2kvKub17iSTgvRXGctCGhz",
    -                "2NB2PrFPv5NxWCpygas8tPrGJG2ZFgeuwJw",
    -                "2N79ZAGo5cMi5Jt7Wo9L5YmF5GkEw7sjWdC",
    +                "2NFCtXvx9q4ci2kvKub17iSTgvRXGctCGhz",
    +                "2NB2PrFPv5NxWCpygas8tPrGJG2ZFgeuwJw",
    +                "2N79ZAGo5cMi5Jt7Wo9L5YmF5GkEw7sjWdC",
                 ],
             );
         }
     
         #[test]
         fn test_dsl_sortedmulti() {
    -        let key_1 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    -        let path_1 = bip32::DerivationPath::from_str("m/0").unwrap();
    +        let key_1 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let path_1 = bip32::DerivationPath::from_str("m/0").unwrap();
     
    -        let key_2 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF").unwrap();
    -        let path_2 = bip32::DerivationPath::from_str("m/1").unwrap();
    +        let key_2 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF").unwrap();
    +        let path_2 = bip32::DerivationPath::from_str("m/1").unwrap();
     
             let desc_key1 = (key_1, path_1);
             let desc_key2 = (key_2, path_2);
    @@ -2270,12 +2269,12 @@
                 false,
                 false,
                 &[
    -                "2MsxzPEJDBzpGffJXPaDpfXZAUNnZhaMh2N",
    -                "2My3x3DLPK3UbGWGpxrXr1RnbD8MNC4FpgS",
    -                "2NByEuiQT7YLqHCTNxL5KwYjvtuCYcXNBSC",
    -                "2N1TGbP81kj2VUKTSWgrwxoMfuWjvfUdyu7",
    -                "2N3Bomq2fpAcLRNfZnD3bCWK9quan28CxCR",
    -                "2N9nrZaEzEFDqEAU9RPvDnXGT6AVwBDKAQb",
    +                "2MsxzPEJDBzpGffJXPaDpfXZAUNnZhaMh2N",
    +                "2My3x3DLPK3UbGWGpxrXr1RnbD8MNC4FpgS",
    +                "2NByEuiQT7YLqHCTNxL5KwYjvtuCYcXNBSC",
    +                "2N1TGbP81kj2VUKTSWgrwxoMfuWjvfUdyu7",
    +                "2N3Bomq2fpAcLRNfZnD3bCWK9quan28CxCR",
    +                "2N9nrZaEzEFDqEAU9RPvDnXGT6AVwBDKAQb",
                 ],
             );
     
    @@ -2288,12 +2287,12 @@
                 true,
                 false,
                 &[
    -                "2NCogc5YyM4N6ruv1hUa7WLMW1BPeCK7N9B",
    -                "2N6mkSAKi1V2oaBXby7XHdvBMKEDRQcFpNe",
    -                "2NFmTSttm9v6bXeoWaBvpMcgfPQcZhNn3Eh",
    -                "2Mvib87RBPUHXNEpX5S5Kv1qqrhBfgBGsJM",
    -                "2MtMv5mcK2EjcLsH8Txpx2JxLLzHr4ttczL",
    -                "2MsWCB56rb4T6yPv8QudZGHERTwNgesE4f6",
    +                "2NCogc5YyM4N6ruv1hUa7WLMW1BPeCK7N9B",
    +                "2N6mkSAKi1V2oaBXby7XHdvBMKEDRQcFpNe",
    +                "2NFmTSttm9v6bXeoWaBvpMcgfPQcZhNn3Eh",
    +                "2Mvib87RBPUHXNEpX5S5Kv1qqrhBfgBGsJM",
    +                "2MtMv5mcK2EjcLsH8Txpx2JxLLzHr4ttczL",
    +                "2MsWCB56rb4T6yPv8QudZGHERTwNgesE4f6",
                 ],
             );
     
    @@ -2302,12 +2301,12 @@
                 true,
                 false,
                 &[
    -                "bcrt1qcvq0lg8q7a47ytrd7zk5y7uls7mulrenjgvflwylpppgwf8029es4vhpnj",
    -                "bcrt1q80yn8sdt6l7pjvkz25lglyaqctlmsq9ugk80rmxt8yu0npdsj97sc7l4de",
    -                "bcrt1qrvf6024v9s50qhffe3t2fr2q9ckdhx2g6jz32chm2pp24ymgtr5qfrdmct",
    -                "bcrt1q6srfmra0ynypym35c7jvsxt2u4yrugeajq95kg2ps7lk6h2gaunsq9lzxn",
    -                "bcrt1qhl8rrzzcdpu7tcup3lcg7tge52sqvwy5fcv4k78v6kxtwmqf3v6qpvyjza",
    -                "bcrt1ql2elz9mhm9ll27ddpewhxs732xyl2fk2kpkqz9gdyh33wgcun4vstrd49k",
    +                "bcrt1qcvq0lg8q7a47ytrd7zk5y7uls7mulrenjgvflwylpppgwf8029es4vhpnj",
    +                "bcrt1q80yn8sdt6l7pjvkz25lglyaqctlmsq9ugk80rmxt8yu0npdsj97sc7l4de",
    +                "bcrt1qrvf6024v9s50qhffe3t2fr2q9ckdhx2g6jz32chm2pp24ymgtr5qfrdmct",
    +                "bcrt1q6srfmra0ynypym35c7jvsxt2u4yrugeajq95kg2ps7lk6h2gaunsq9lzxn",
    +                "bcrt1qhl8rrzzcdpu7tcup3lcg7tge52sqvwy5fcv4k78v6kxtwmqf3v6qpvyjza",
    +                "bcrt1ql2elz9mhm9ll27ddpewhxs732xyl2fk2kpkqz9gdyh33wgcun4vstrd49k",
                 ],
             );
         }
    @@ -2315,8 +2314,8 @@
         // - verify the valid_networks returned is correctly computed based on the keys present in the descriptor
         #[test]
         fn test_valid_networks() {
    -        let xprv = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    -        let path = bip32::DerivationPath::from_str("m/0").unwrap();
    +        let xprv = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let path = bip32::DerivationPath::from_str("m/0").unwrap();
             let desc_key = (xprv, path).into_descriptor_key().unwrap();
     
             let (_desc, _key_map, valid_networks) = descriptor!(pkh(desc_key)).unwrap();
    @@ -2325,8 +2324,8 @@
                 [Testnet, Regtest, Signet].iter().cloned().collect()
             );
     
    -        let xprv = bip32::Xpriv::from_str("xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi").unwrap();
    -        let path = bip32::DerivationPath::from_str("m/10/20/30/40").unwrap();
    +        let xprv = bip32::Xpriv::from_str("xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi").unwrap();
    +        let path = bip32::DerivationPath::from_str("m/10/20/30/40").unwrap();
             let desc_key = (xprv, path).into_descriptor_key().unwrap();
     
             let (_desc, _key_map, valid_networks) = descriptor!(wpkh(desc_key)).unwrap();
    @@ -2338,16 +2337,16 @@
         fn test_key_maps_merged() {
             let secp = Secp256k1::new();
     
    -        let xprv1 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    -        let path1 = bip32::DerivationPath::from_str("m/0").unwrap();
    +        let xprv1 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let path1 = bip32::DerivationPath::from_str("m/0").unwrap();
             let desc_key1 = (xprv1, path1.clone()).into_descriptor_key().unwrap();
     
    -        let xprv2 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF").unwrap();
    -        let path2 = bip32::DerivationPath::from_str("m/2147483647'/0").unwrap();
    +        let xprv2 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF").unwrap();
    +        let path2 = bip32::DerivationPath::from_str("m/2147483647'/0").unwrap();
             let desc_key2 = (xprv2, path2.clone()).into_descriptor_key().unwrap();
     
    -        let xprv3 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf").unwrap();
    -        let path3 = bip32::DerivationPath::from_str("m/10/20/30/40").unwrap();
    +        let xprv3 = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf").unwrap();
    +        let path3 = bip32::DerivationPath::from_str("m/10/20/30/40").unwrap();
             let desc_key3 = (xprv3, path3.clone()).into_descriptor_key().unwrap();
     
             let (_desc, key_map, _valid_networks) =
    @@ -2361,21 +2360,21 @@
             let (key1, _key_map, _valid_networks) = desc_key1.extract(&secp).unwrap();
             let (key2, _key_map, _valid_networks) = desc_key2.extract(&secp).unwrap();
             let (key3, _key_map, _valid_networks) = desc_key3.extract(&secp).unwrap();
    -        assert_eq!(key_map.get(&key1).unwrap().to_string(), "tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/0/*");
    -        assert_eq!(key_map.get(&key2).unwrap().to_string(), "tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF/2147483647'/0/*");
    -        assert_eq!(key_map.get(&key3).unwrap().to_string(), "tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf/10/20/30/40/*");
    +        assert_eq!(key_map.get(&key1).unwrap().to_string(), "tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy/0/*");
    +        assert_eq!(key_map.get(&key2).unwrap().to_string(), "tprv8ZgxMBicQKsPegBHHnq7YEgM815dG24M2Jk5RVqipgDxF1HJ1tsnT815X5Fd5FRfMVUs8NZs9XCb6y9an8hRPThnhfwfXJ36intaekySHGF/2147483647'/0/*");
    +        assert_eq!(key_map.get(&key3).unwrap().to_string(), "tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf/10/20/30/40/*");
         }
     
         // - verify the ScriptContext is correctly validated (i.e. passing a type that only impl IntoDescriptorKey<Segwitv0> to a pkh() descriptor should throw a compilation error
         #[test]
         fn test_script_context_validation() {
             // this compiles
    -        let xprv = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    -        let path = bip32::DerivationPath::from_str("m/0").unwrap();
    +        let xprv = bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let path = bip32::DerivationPath::from_str("m/0").unwrap();
             let desc_key: DescriptorKey<Legacy> = (xprv, path).into_descriptor_key().unwrap();
     
             let (desc, _key_map, _valid_networks) = descriptor!(pkh(desc_key)).unwrap();
    -        assert_eq!(desc.to_string(), "pkh(tpubD6NzVbkrYhZ4WR7a4vY1VT3khMJMeAxVsfq9TBJyJWrNk247zCJtV7AWf6UJP7rAVsn8NNKdJi3gFyKPTmWZS9iukb91xbn2HbFSMQm2igY/0/*)#yrnz9pp2");
    +        assert_eq!(desc.to_string(), "pkh(tpubD6NzVbkrYhZ4WR7a4vY1VT3khMJMeAxVsfq9TBJyJWrNk247zCJtV7AWf6UJP7rAVsn8NNKdJi3gFyKPTmWZS9iukb91xbn2HbFSMQm2igY/0/*)#yrnz9pp2");
     
             // as expected this does not compile due to invalid context
             //let desc_key:DescriptorKey<Segwitv0> = (xprv, path.clone()).into_descriptor_key().unwrap();
    @@ -2385,18 +2384,18 @@
         #[test]
         fn test_dsl_modifiers() {
             let private_key =
    -            PrivateKey::from_wif("cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR").unwrap();
    +            PrivateKey::from_wif("cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR").unwrap();
             let (descriptor, _, _) =
                 descriptor!(wsh(thresh(2,n:d:v:older(1),s:pk(private_key),s:pk(private_key)))).unwrap();
     
    -        assert_eq!(descriptor.to_string(), "wsh(thresh(2,ndv:older(1),s:pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c),s:pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)))#zzk3ux8g")
    +        assert_eq!(descriptor.to_string(), "wsh(thresh(2,ndv:older(1),s:pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c),s:pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)))#zzk3ux8g")
         }
     
         #[test]
    -    #[should_panic(expected = "Miniscript(ContextError(UncompressedKeysNotAllowed))")]
    +    #[should_panic(expected = "Miniscript(ContextError(UncompressedKeysNotAllowed))")]
         fn test_dsl_miniscript_checks() {
             let mut uncompressed_pk =
    -            PrivateKey::from_wif("L5EZftvrYaSudiozVRzTqLcHLNDoVn7H5HSfM9BAN6tMJX8oTWz6").unwrap();
    +            PrivateKey::from_wif("L5EZftvrYaSudiozVRzTqLcHLNDoVn7H5HSfM9BAN6tMJX8oTWz6").unwrap();
             uncompressed_pk.compressed = false;
     
             descriptor!(wsh(v: pk(uncompressed_pk))).unwrap();
    @@ -2405,33 +2404,32 @@
         #[test]
         fn test_dsl_tr_only_key() {
             let private_key =
    -            PrivateKey::from_wif("cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR").unwrap();
    +            PrivateKey::from_wif("cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR").unwrap();
             let (descriptor, _, _) = descriptor!(tr(private_key)).unwrap();
     
             assert_eq!(
                 descriptor.to_string(),
    -            "tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#heq9m95v"
    +            "tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#heq9m95v"
             )
         }
     
         #[test]
         fn test_dsl_tr_simple_tree() {
             let private_key =
    -            PrivateKey::from_wif("cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR").unwrap();
    +            PrivateKey::from_wif("cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR").unwrap();
             let (descriptor, _, _) =
                 descriptor!(tr(private_key, { pk(private_key), pk(private_key) })).unwrap();
     
    -        assert_eq!(descriptor.to_string(), "tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c,{pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c),pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)})#xy5fjw6d")
    +        assert_eq!(descriptor.to_string(), "tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c,{pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c),pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)})#xy5fjw6d")
         }
     
         #[test]
         fn test_dsl_tr_single_leaf() {
             let private_key =
    -            PrivateKey::from_wif("cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR").unwrap();
    +            PrivateKey::from_wif("cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR").unwrap();
             let (descriptor, _, _) = descriptor!(tr(private_key, pk(private_key))).unwrap();
     
    -        assert_eq!(descriptor.to_string(), "tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c,pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c))#lzl2vmc7")
    +        assert_eq!(descriptor.to_string(), "tr(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c,pk(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c))#lzl2vmc7")
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/error.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/error.rs.html index ce7b6edaf5..96a21a04e5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/error.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/error.rs.html @@ -1,5 +1,4 @@ -error.rs - source
    1
    +error.rs - source
    1
     2
     3
     4
    @@ -122,7 +121,7 @@
     121
     122
     123
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -141,7 +140,7 @@
     pub enum Error {
         /// Invalid HD Key path, such as having a wildcard but a length != 1
         InvalidHdKeyPath,
    -    /// The provided descriptor doesn't match its checksum
    +    /// The provided descriptor doesn't match its checksum
         InvalidDescriptorChecksum,
         /// The descriptor contains hardened derivation steps on public extended keys
         HardenedDerivationXpub,
    @@ -179,35 +178,35 @@
     }
     
     impl fmt::Display for Error {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
    -            Self::InvalidHdKeyPath => write!(f, "Invalid HD key path"),
    +            Self::InvalidHdKeyPath => write!(f, "Invalid HD key path"),
                 Self::InvalidDescriptorChecksum => {
    -                write!(f, "The provided descriptor doesn't match its checksum")
    +                write!(f, "The provided descriptor doesn't match its checksum")
                 }
                 Self::HardenedDerivationXpub => write!(
                     f,
    -                "The descriptor contains hardened derivation steps on public extended keys"
    +                "The descriptor contains hardened derivation steps on public extended keys"
                 ),
                 Self::MultiPath => write!(
                     f,
    -                "The descriptor contains multipath keys, which are not supported yet"
    +                "The descriptor contains multipath keys, which are not supported yet"
                 ),
    -            Self::Key(err) => write!(f, "Key error: {}", err),
    -            Self::Policy(err) => write!(f, "Policy error: {}", err),
    +            Self::Key(err) => write!(f, "Key error: {}", err),
    +            Self::Policy(err) => write!(f, "Policy error: {}", err),
                 Self::InvalidDescriptorCharacter(char) => {
    -                write!(f, "Invalid descriptor character: {}", char)
    +                write!(f, "Invalid descriptor character: {}", char)
                 }
    -            Self::Bip32(err) => write!(f, "BIP32 error: {}", err),
    -            Self::Base58(err) => write!(f, "Base58 error: {}", err),
    -            Self::Pk(err) => write!(f, "Key-related error: {}", err),
    -            Self::Miniscript(err) => write!(f, "Miniscript error: {}", err),
    -            Self::Hex(err) => write!(f, "Hex decoding error: {}", err),
    +            Self::Bip32(err) => write!(f, "BIP32 error: {}", err),
    +            Self::Base58(err) => write!(f, "Base58 error: {}", err),
    +            Self::Pk(err) => write!(f, "Key-related error: {}", err),
    +            Self::Miniscript(err) => write!(f, "Miniscript error: {}", err),
    +            Self::Hex(err) => write!(f, "Hex decoding error: {}", err),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for Error {}
     
     impl From<bitcoin::bip32::Error> for Error {
    @@ -245,5 +244,4 @@
             Error::Policy(err)
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/mod.rs.html index 7ede089694..6e18343df0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/mod.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/mod.rs.html @@ -1,5 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -899,7 +898,7 @@
     898
     899
     900
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -987,7 +986,7 @@
             secp: &SecpCtx,
             network: Network,
         ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError> {
    -        let descriptor = match self.split_once('#') {
    +        let descriptor = match self.split_once('#') {
                 Some((desc, original_checksum)) => {
                     let checksum = calc_checksum_bytes(desc)?;
                     if original_checksum.as_bytes() != checksum {
    @@ -1031,14 +1030,14 @@
         ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError> {
             use crate::keys::DescriptorKey;
     
    -        struct Translator<'s, 'd> {
    -            secp: &'s SecpCtx,
    -            descriptor: &'d ExtendedDescriptor,
    +        struct Translator<'s, 'd> {
    +            secp: &'s SecpCtx,
    +            descriptor: &'d ExtendedDescriptor,
                 network: Network,
             }
     
    -        impl<'s, 'd> miniscript::Translator<DescriptorPublicKey, String, DescriptorError>
    -            for Translator<'s, 'd>
    +        impl<'s, 'd> miniscript::Translator<DescriptorPublicKey, String, DescriptorError>
    +            for Translator<'s, 'd>
             {
                 fn pk(&mut self, pk: &DescriptorPublicKey) -> Result<String, DescriptorError> {
                     let secp = &self.secp;
    @@ -1124,7 +1123,7 @@
                 ) -> Result<DescriptorPublicKey, DescriptorError> {
                     // workaround for xpubs generated by other key types, like bip39: since when the
                     // conversion is made one network has to be chosen, what we generally choose
    -                // "mainnet", but then override the set of valid networks to specify that all of
    +                // "mainnet", but then override the set of valid networks to specify that all of
                     // them are valid. here we reset the network to make sure the wallet struct gets a
                     // descriptor with the right network everywhere.
                     let pk = match pk {
    @@ -1191,7 +1190,7 @@
     ) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError> {
         let (descriptor, keymap) = inner.into_wallet_descriptor(secp, network)?;
     
    -    // Ensure the keys don't contain any hardened derivation steps or hardened wildcards
    +    // Ensure the keys don't contain any hardened derivation steps or hardened wildcards
         let descriptor_contains_hardened_steps = descriptor.for_any_key(|k| {
             if let DescriptorPublicKey::XPub(DescriptorXKey {
                 derivation_path,
    @@ -1213,7 +1212,7 @@
             return Err(DescriptorError::MultiPath);
         }
     
    -    // Run miniscript's sanity check, which will look for duplicated keys and other potential
    +    // Run miniscript's sanity check, which will look for duplicated keys and other potential
         // issues
         descriptor.sanity_check()?;
     
    @@ -1344,7 +1343,7 @@
                     let derived = xpub
                         .xkey
                         .derive_pub(secp, path)
    -                    .expect("The path should never contain hardened derivation steps")
    +                    .expect("The path should never contain hardened derivation steps")
                         .public_key;
     
                     match expected {
    @@ -1360,7 +1359,7 @@
             self.for_any_key(|key| {
                 if let DescriptorPublicKey::XPub(xpub) = key {
                     // Check if the key matches one entry in our `key_origins`. If it does, `matches()` will
    -                // return the "prefix" that matched, so we remove that prefix from the full path
    +                // return the "prefix" that matched, so we remove that prefix from the full path
                     // found in `key_origins` and save it in `derive_path`. We expect this to be a derivation
                     // path of length 1 if the key is `wildcard` and an empty path otherwise.
                     let root_fingerprint = xpub.root_fingerprint(secp);
    @@ -1413,7 +1412,7 @@
     
             path_found.map(|path| {
                 self.at_derivation_index(path)
    -                .expect("We ignore hardened wildcards")
    +                .expect("We ignore hardened wildcards")
             })
         }
     
    @@ -1422,7 +1421,7 @@
             hd_keypaths: &HdKeyPaths,
             secp: &SecpCtx,
         ) -> Option<DerivedDescriptor> {
    -        // "Convert" an hd_keypaths map to the format required by `derive_from_psbt_key_origins`
    +        // "Convert" an hd_keypaths map to the format required by `derive_from_psbt_key_origins`
             let key_origins = hd_keypaths
                 .iter()
                 .map(|(pk, (fingerprint, path))| {
    @@ -1440,7 +1439,7 @@
             tap_key_origins: &TapKeyOrigins,
             secp: &SecpCtx,
         ) -> Option<DerivedDescriptor> {
    -        // "Convert" a tap_key_origins map to the format required by `derive_from_psbt_key_origins`
    +        // "Convert" a tap_key_origins map to the format required by `derive_from_psbt_key_origins`
             let key_origins = tap_key_origins
                 .iter()
                 .map(|(pk, (_, (fingerprint, path)))| (*fingerprint, (path, SinglePubKey::XOnly(*pk))))
    @@ -1461,11 +1460,11 @@
                 return Some(derived);
             }
             if self.has_wildcard() {
    -            // We can't try to bruteforce the derivation index, exit here
    +            // We can't try to bruteforce the derivation index, exit here
                 return None;
             }
     
    -        let descriptor = self.at_derivation_index(0).expect("0 is not hardened");
    +        let descriptor = self.at_derivation_index(0).expect("0 is not hardened");
             match descriptor.desc_type() {
                 // TODO: add pk() here
                 DescriptorType::Pkh
    @@ -1516,16 +1515,16 @@
         #[test]
         fn test_derive_from_psbt_input_wpkh_wif() {
             let descriptor = Descriptor::<DescriptorPublicKey>::from_str(
    -            "wpkh(02b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a8737)",
    +            "wpkh(02b4632d08485ff1df2db55b9dafd23347d1c47a457072a1e87be26896549a8737)",
             )
             .unwrap();
             let psbt = Psbt::deserialize(
                 &Vec::<u8>::from_hex(
    -                "70736274ff010052010000000162307be8e431fbaff807cdf9cdc3fde44d7402\
    +                "70736274ff010052010000000162307be8e431fbaff807cdf9cdc3fde44d7402\
                      11bc8342c31ffd6ec11fe35bcc0100000000ffffffff01328601000000000016\
                      001493ce48570b55c42c2af816aeaba06cfee1224fae000000000001011fa086\
                      01000000000016001493ce48570b55c42c2af816aeaba06cfee1224fae010304\
    -                 010000000000",
    +                 010000000000",
                 )
                 .unwrap(),
             )
    @@ -1539,12 +1538,12 @@
         #[test]
         fn test_derive_from_psbt_input_pkh_tpub() {
             let descriptor = Descriptor::<DescriptorPublicKey>::from_str(
    -            "pkh([0f056943/44h/0h/0h]tpubDDpWvmUrPZrhSPmUzCMBHffvC3HyMAPnWDSAQNBTnj1iZeJa7BZQEttFiP4DS4GCcXQHezdXhn86Hj6LHX5EDstXPWrMaSneRWM8yUf6NFd/10/*)",
    +            "pkh([0f056943/44h/0h/0h]tpubDDpWvmUrPZrhSPmUzCMBHffvC3HyMAPnWDSAQNBTnj1iZeJa7BZQEttFiP4DS4GCcXQHezdXhn86Hj6LHX5EDstXPWrMaSneRWM8yUf6NFd/10/*)",
             )
             .unwrap();
             let psbt = Psbt::deserialize(
                 &Vec::<u8>::from_hex(
    -                "70736274ff010053010000000145843b86be54a3cd8c9e38444e1162676c00df\
    +                "70736274ff010053010000000145843b86be54a3cd8c9e38444e1162676c00df\
                      e7964122a70df491ea12fd67090100000000ffffffff01c19598000000000017\
                      a91432bb94283282f72b2e034709e348c44d5a4db0ef8700000000000100f902\
                      0000000001010167e99c0eb67640f3a1b6805f2d8be8238c947f8aaf49eb0a9c\
    @@ -1556,7 +1555,7 @@
                      a8d0bce443b390b1fe0b8128fe70ec919e01210232dad1c5a67dcb0116d407e2\
                      52584228ab7ec00e8b9779d0c3ffe8114fc1a7d2c80600000103040100000022\
                      0603433b83583f8c4879b329dd08bbc7da935e4cc02f637ff746e05f0466ffb2\
    -                 a6a2180f0569432c00008000000080000000800a000000000000000000",
    +                 a6a2180f0569432c00008000000080000000800a000000000000000000",
                 )
                 .unwrap(),
             )
    @@ -1570,17 +1569,17 @@
         #[test]
         fn test_derive_from_psbt_input_wsh() {
             let descriptor = Descriptor::<DescriptorPublicKey>::from_str(
    -            "wsh(and_v(v:pk(03b6633fef2397a0a9de9d7b6f23aef8368a6e362b0581f0f0af70d5ecfd254b14),older(6)))",
    +            "wsh(and_v(v:pk(03b6633fef2397a0a9de9d7b6f23aef8368a6e362b0581f0f0af70d5ecfd254b14),older(6)))",
             )
             .unwrap();
             let psbt = Psbt::deserialize(
                 &Vec::<u8>::from_hex(
    -                "70736274ff01005302000000011c8116eea34408ab6529223c9a176606742207\
    +                "70736274ff01005302000000011c8116eea34408ab6529223c9a176606742207\
                      67a1ff1d46a6e3c4a88243ea6e01000000000600000001109698000000000017\
                      a914ad105f61102e0d01d7af40d06d6a5c3ae2f7fde387000000000001012b80\
                      969800000000002200203ca72f106a72234754890ca7640c43f65d2174e44d33\
                      336030f9059345091044010304010000000105252103b6633fef2397a0a9de9d\
    -                 7b6f23aef8368a6e362b0581f0f0af70d5ecfd254b14ad56b20000",
    +                 7b6f23aef8368a6e362b0581f0f0af70d5ecfd254b14ad56b20000",
                 )
                 .unwrap(),
             )
    @@ -1594,12 +1593,12 @@
         #[test]
         fn test_derive_from_psbt_input_sh() {
             let descriptor = Descriptor::<DescriptorPublicKey>::from_str(
    -            "sh(and_v(v:pk(021403881a5587297818fcaf17d239cefca22fce84a45b3b1d23e836c4af671dbb),after(630000)))",
    +            "sh(and_v(v:pk(021403881a5587297818fcaf17d239cefca22fce84a45b3b1d23e836c4af671dbb),after(630000)))",
             )
             .unwrap();
             let psbt = Psbt::deserialize(
                 &Vec::<u8>::from_hex(
    -                "70736274ff0100530100000001bc8c13df445dfadcc42afa6dc841f85d22b01d\
    +                "70736274ff0100530100000001bc8c13df445dfadcc42afa6dc841f85d22b01d\
                      a6270ebf981740f4b7b1d800390000000000feffffff01ba9598000000000017\
                      a91457b148ba4d3e5fa8608a8657875124e3d1c9390887f09c0900000100e002\
                      0000000001016ba1bbe05cc93574a0d611ec7d93ad0ab6685b28d0cd80e8a82d\
    @@ -1610,7 +1609,7 @@
                      6f09f5c025fe3e413ca4b905fe65ee55d32a3276439a9b8f012102dc1fcc2636\
                      4da1aa718f03d8d9bd6f2ff410ed2cf1245a168aa3bcc995ac18e0a806000001\
                      03040100000001042821021403881a5587297818fcaf17d239cefca22fce84a4\
    -                 5b3b1d23e836c4af671dbbad03f09c09b10000",
    +                 5b3b1d23e836c4af671dbbad03f09c09b10000",
                 )
                 .unwrap(),
             )
    @@ -1627,18 +1626,18 @@
     
             let secp = Secp256k1::new();
     
    -        let xprv = bip32::Xpriv::from_str("xprv9s21ZrQH143K3c3gF1DUWpWNr2SG2XrG8oYPpqYh7hoWsJy9NjabErnzriJPpnGHyKz5NgdXmq1KVbqS1r4NXdCoKitWg5e86zqXHa8kxyB").unwrap();
    -        let path = bip32::DerivationPath::from_str("m/0").unwrap();
    +        let xprv = bip32::Xpriv::from_str("xprv9s21ZrQH143K3c3gF1DUWpWNr2SG2XrG8oYPpqYh7hoWsJy9NjabErnzriJPpnGHyKz5NgdXmq1KVbqS1r4NXdCoKitWg5e86zqXHa8kxyB").unwrap();
    +        let path = bip32::DerivationPath::from_str("m/0").unwrap();
     
             // here `to_descriptor_key` will set the valid networks for the key to only mainnet, since
    -        // we are using an "xpub"
    +        // we are using an "xpub"
             let key = (xprv, path.clone()).into_descriptor_key().unwrap();
             // override it with any. this happens in some key conversions, like bip39
             let key = key.override_valid_networks(any_network());
     
             // make a descriptor out of it
             let desc = crate::descriptor!(wpkh(key)).unwrap();
    -        // this should convert the key that supports "any_network" to the right network (testnet)
    +        // this should convert the key that supports "any_network" to the right network (testnet)
             let (wallet_desc, keymap) = desc
                 .into_wallet_descriptor(&secp, Network::Testnet)
                 .unwrap();
    @@ -1654,7 +1653,7 @@
                 wildcard: Wildcard::Unhardened,
             });
     
    -        assert_eq!(wallet_desc.to_string(), "wpkh(tpubD6NzVbkrYhZ4XtJzoDja5snUjBNQRP5B3f4Hyn1T1x6PVPxzzVjvw6nJx2D8RBCxog9GEVjZoyStfepTz7TtKoBVdkCtnc7VCJh9dD4RAU9/0/*)#a3svx0ha");
    +        assert_eq!(wallet_desc.to_string(), "wpkh(tpubD6NzVbkrYhZ4XtJzoDja5snUjBNQRP5B3f4Hyn1T1x6PVPxzzVjvw6nJx2D8RBCxog9GEVjZoyStfepTz7TtKoBVdkCtnc7VCJh9dD4RAU9/0/*)#a3svx0ha");
             assert_eq!(
                 keymap
                     .get(&desc_pubkey)
    @@ -1668,27 +1667,27 @@
         fn test_descriptor_from_str_with_checksum() {
             let secp = Secp256k1::new();
     
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc62"
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#tqz0nc62"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert!(desc.is_ok());
     
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert!(desc.is_ok());
     
    -        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)#67ju93jw"
    +        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)#67ju93jw"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert!(desc.is_ok());
     
    -        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
    +        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert!(desc.is_ok());
     
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#67ju93jw"
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#67ju93jw"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert_matches!(desc, Err(DescriptorError::InvalidDescriptorChecksum));
     
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#67ju93jw"
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)#67ju93jw"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert_matches!(desc, Err(DescriptorError::InvalidDescriptorChecksum));
         }
    @@ -1698,35 +1697,35 @@
         fn test_descriptor_from_str_with_keys_network() {
             let secp = Secp256k1::new();
     
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert!(desc.is_ok());
     
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
                 .into_wallet_descriptor(&secp, Network::Regtest);
             assert!(desc.is_ok());
     
    -        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
    +        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert!(desc.is_ok());
     
    -        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
    +        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
                 .into_wallet_descriptor(&secp, Network::Regtest);
             assert!(desc.is_ok());
     
    -        let desc = "sh(wpkh(02864bb4ad00cefa806098a69e192bbda937494e69eb452b87bb3f20f6283baedb))"
    +        let desc = "sh(wpkh(02864bb4ad00cefa806098a69e192bbda937494e69eb452b87bb3f20f6283baedb))"
                 .into_wallet_descriptor(&secp, Network::Testnet);
             assert!(desc.is_ok());
     
    -        let desc = "sh(wpkh(02864bb4ad00cefa806098a69e192bbda937494e69eb452b87bb3f20f6283baedb))"
    +        let desc = "sh(wpkh(02864bb4ad00cefa806098a69e192bbda937494e69eb452b87bb3f20f6283baedb))"
                 .into_wallet_descriptor(&secp, Network::Bitcoin);
             assert!(desc.is_ok());
     
    -        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
    +        let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
                 .into_wallet_descriptor(&secp, Network::Bitcoin);
             assert_matches!(desc, Err(DescriptorError::Key(KeyError::InvalidNetwork)));
     
    -        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
    +        let desc = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)"
                 .into_wallet_descriptor(&secp, Network::Bitcoin);
             assert_matches!(desc, Err(DescriptorError::Key(KeyError::InvalidNetwork)));
         }
    @@ -1736,8 +1735,8 @@
         fn test_descriptor_from_str_from_output_of_macro() {
             let secp = Secp256k1::new();
     
    -        let tpub = bip32::Xpub::from_str("tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK").unwrap();
    -        let path = bip32::DerivationPath::from_str("m/1/2").unwrap();
    +        let tpub = bip32::Xpub::from_str("tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK").unwrap();
    +        let path = bip32::DerivationPath::from_str("m/1/2").unwrap();
             let key = (tpub, path).into_descriptor_key().unwrap();
     
             // make a descriptor out of it
    @@ -1747,7 +1746,7 @@
                 .into_wallet_descriptor(&secp, Network::Testnet)
                 .unwrap();
             let wallet_desc_str = wallet_desc.to_string();
    -        assert_eq!(wallet_desc_str, "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)#67ju93jw");
    +        assert_eq!(wallet_desc_str, "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/2/*)#67ju93jw");
     
             let (wallet_desc2, _) = wallet_desc_str
                 .into_wallet_descriptor(&secp, Network::Testnet)
    @@ -1759,18 +1758,18 @@
         fn test_into_wallet_descriptor_checked() {
             let secp = Secp256k1::new();
     
    -        let descriptor = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0'/1/2/*)";
    +        let descriptor = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0'/1/2/*)";
             let result = into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet);
     
             assert_matches!(result, Err(DescriptorError::HardenedDerivationXpub));
     
    -        let descriptor = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/<0;1>/*)";
    +        let descriptor = "wpkh(tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/<0;1>/*)";
             let result = into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet);
     
             assert_matches!(result, Err(DescriptorError::MultiPath));
     
             // repeated pubkeys
    -        let descriptor = "wsh(multi(2,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*))";
    +        let descriptor = "wsh(multi(2,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/0/*))";
             let result = into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet);
     
             assert!(result.is_err());
    @@ -1782,13 +1781,13 @@
     
             let secp = Secp256k1::new();
     
    -        let descriptor = "sh(wsh(sortedmulti(3,tpubDEsqS36T4DVsKJd9UH8pAKzrkGBYPLEt9jZMwpKtzh1G6mgYehfHt9WCgk7MJG5QGSFWf176KaBNoXbcuFcuadAFKxDpUdMDKGBha7bY3QM/0/*,tpubDF3cpwfs7fMvXXuoQbohXtLjNM6ehwYT287LWtmLsd4r77YLg6MZg4vTETx5MSJ2zkfigbYWu31VA2Z2Vc1cZugCYXgS7FQu6pE8V6TriEH/0/*,tpubDE1SKfcW76Tb2AASv5bQWMuScYNAdoqLHoexw13sNDXwmUhQDBbCD3QAedKGLhxMrWQdMDKENzYtnXPDRvexQPNuDrLj52wAjHhNEm8sJ4p/0/*,tpubDFLc6oXwJmhm3FGGzXkfJNTh2KitoY3WhmmQvuAjMhD8YbyWn5mAqckbxXfm2etM3p5J6JoTpSrMqRSTfMLtNW46poDaEZJ1kjd3csRSjwH/0/*,tpubDEWD9NBeWP59xXmdqSNt4VYdtTGwbpyP8WS962BuqpQeMZmX9Pur14dhXdZT5a7wR1pK6dPtZ9fP5WR493hPzemnBvkfLLYxnUjAKj1JCQV/0/*,tpubDEHyZkkwd7gZWCTgQuYQ9C4myF2hMEmyHsBCCmLssGqoqUxeT3gzohF5uEVURkf9TtmeepJgkSUmteac38FwZqirjApzNX59XSHLcwaTZCH/0/*,tpubDEqLouCekwnMUWN486kxGzD44qVgeyuqHyxUypNEiQt5RnUZNJe386TKPK99fqRV1vRkZjYAjtXGTECz98MCsdLcnkM67U6KdYRzVubeCgZ/0/*)))";
    +        let descriptor = "sh(wsh(sortedmulti(3,tpubDEsqS36T4DVsKJd9UH8pAKzrkGBYPLEt9jZMwpKtzh1G6mgYehfHt9WCgk7MJG5QGSFWf176KaBNoXbcuFcuadAFKxDpUdMDKGBha7bY3QM/0/*,tpubDF3cpwfs7fMvXXuoQbohXtLjNM6ehwYT287LWtmLsd4r77YLg6MZg4vTETx5MSJ2zkfigbYWu31VA2Z2Vc1cZugCYXgS7FQu6pE8V6TriEH/0/*,tpubDE1SKfcW76Tb2AASv5bQWMuScYNAdoqLHoexw13sNDXwmUhQDBbCD3QAedKGLhxMrWQdMDKENzYtnXPDRvexQPNuDrLj52wAjHhNEm8sJ4p/0/*,tpubDFLc6oXwJmhm3FGGzXkfJNTh2KitoY3WhmmQvuAjMhD8YbyWn5mAqckbxXfm2etM3p5J6JoTpSrMqRSTfMLtNW46poDaEZJ1kjd3csRSjwH/0/*,tpubDEWD9NBeWP59xXmdqSNt4VYdtTGwbpyP8WS962BuqpQeMZmX9Pur14dhXdZT5a7wR1pK6dPtZ9fP5WR493hPzemnBvkfLLYxnUjAKj1JCQV/0/*,tpubDEHyZkkwd7gZWCTgQuYQ9C4myF2hMEmyHsBCCmLssGqoqUxeT3gzohF5uEVURkf9TtmeepJgkSUmteac38FwZqirjApzNX59XSHLcwaTZCH/0/*,tpubDEqLouCekwnMUWN486kxGzD44qVgeyuqHyxUypNEiQt5RnUZNJe386TKPK99fqRV1vRkZjYAjtXGTECz98MCsdLcnkM67U6KdYRzVubeCgZ/0/*)))";
             let (descriptor, _) =
                 into_wallet_descriptor_checked(descriptor, &secp, Network::Testnet).unwrap();
     
             let descriptor = descriptor.at_derivation_index(0).unwrap();
     
    -        let script = ScriptBuf::from_hex("5321022f533b667e2ea3b36e21961c9fe9dca340fbe0af5210173a83ae0337ab20a57621026bb53a98e810bd0ee61a0ed1164ba6c024786d76554e793e202dc6ce9c78c4ea2102d5b8a7d66a41ffdb6f4c53d61994022e886b4f45001fb158b95c9164d45f8ca3210324b75eead2c1f9c60e8adeb5e7009fec7a29afcdb30d829d82d09562fe8bae8521032d34f8932200833487bd294aa219dcbe000b9f9b3d824799541430009f0fa55121037468f8ea99b6c64788398b5ad25480cad08f4b0d65be54ce3a55fd206b5ae4722103f72d3d96663b0ea99b0aeb0d7f273cab11a8de37885f1dddc8d9112adb87169357ae").unwrap();
    +        let script = ScriptBuf::from_hex("5321022f533b667e2ea3b36e21961c9fe9dca340fbe0af5210173a83ae0337ab20a57621026bb53a98e810bd0ee61a0ed1164ba6c024786d76554e793e202dc6ce9c78c4ea2102d5b8a7d66a41ffdb6f4c53d61994022e886b4f45001fb158b95c9164d45f8ca3210324b75eead2c1f9c60e8adeb5e7009fec7a29afcdb30d829d82d09562fe8bae8521032d34f8932200833487bd294aa219dcbe000b9f9b3d824799541430009f0fa55121037468f8ea99b6c64788398b5ad25480cad08f4b0d65be54ce3a55fd206b5ae4722103f72d3d96663b0ea99b0aeb0d7f273cab11a8de37885f1dddc8d9112adb87169357ae").unwrap();
     
             let mut psbt_input = psbt::Input::default();
             psbt_input
    @@ -1799,5 +1798,4 @@
             assert_eq!(psbt_input.witness_script, Some(script));
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/policy.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/policy.rs.html index 713d80ec25..62e7ba64e0 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/policy.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/policy.rs.html @@ -1,5 +1,4 @@ -policy.rs - source
    1
    +policy.rs - source
    1
     2
     3
     4
    @@ -1904,7 +1903,7 @@
     1903
     1904
     1905
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -1931,14 +1930,14 @@
     //! # use bdk_wallet::bitcoin::secp256k1::Secp256k1;
     //! use bdk_wallet::descriptor::policy::BuildSatisfaction;
     //! let secp = Secp256k1::new();
    -//! let desc = "wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))";
    +//! let desc = "wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))";
     //!
     //! let (extended_desc, key_map) = ExtendedDescriptor::parse_descriptor(&secp, desc)?;
    -//! println!("{:?}", extended_desc);
    +//! println!("{:?}", extended_desc);
     //!
     //! let signers = Arc::new(SignersContainer::build(key_map, &extended_desc, &secp));
     //! let policy = extended_desc.extract_policy(&signers, BuildSatisfaction::None, &secp)?;
    -//! println!("policy: {}", serde_json::to_string(&policy).unwrap());
    +//! println!("policy: {}", serde_json::to_string(&policy).unwrap());
     //! # Ok::<(), anyhow::Error>(())
     //! ```
     
    @@ -1977,7 +1976,7 @@
     
     /// A unique identifier for a key
     #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize)]
    -#[serde(rename_all = "snake_case")]
    +#[serde(rename_all = "snake_case")]
     pub enum PkOrF {
         /// A legacy public key
         Pubkey(PublicKey),
    @@ -2008,7 +2007,7 @@
     
     /// An item that needs to be satisfied
     #[derive(Debug, Clone, PartialEq, Eq, Serialize)]
    -#[serde(tag = "type", rename_all = "UPPERCASE")]
    +#[serde(tag = "type", rename_all = "UPPERCASE")]
     pub enum SatisfiableItem {
         // Leaves
         /// ECDSA Signature for a raw public key
    @@ -2077,8 +2076,8 @@
     
         /// Returns a unique id for the [`SatisfiableItem`]
         pub fn id(&self) -> String {
    -        calc_checksum(&serde_json::to_string(self).expect("Failed to serialize a SatisfiableItem"))
    -            .expect("Failed to compute a SatisfiableItem id")
    +        calc_checksum(&serde_json::to_string(self).expect("Failed to serialize a SatisfiableItem"))
    +            .expect("Failed to compute a SatisfiableItem id")
         }
     }
     
    @@ -2140,9 +2139,9 @@
         answer
     }
     
    -/// Type for a map of sets of [`Condition`] items keyed by each set's index
    +/// Type for a map of sets of [`Condition`] items keyed by each set's index
     pub type ConditionMap = BTreeMap<usize, HashSet<Condition>>;
    -/// Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set's indexes
    +/// Type for a map of folded sets of [`Condition`] items keyed by a vector of the combined set's indexes
     pub type FoldedConditionMap = BTreeMap<Vec<usize>, HashSet<Condition>>;
     
     fn serialize_folded_cond_map<S>(
    @@ -2154,15 +2153,15 @@
     {
         let mut map = serializer.serialize_map(Some(input_map.len()))?;
         for (k, v) in input_map {
    -        let k_string = format!("{:?}", k);
    +        let k_string = format!("{:?}", k);
             map.serialize_entry(&k_string, v)?;
         }
         map.end()
     }
     
    -/// Represent if and how much a policy item is satisfied by the wallet's descriptor
    +/// Represent if and how much a policy item is satisfied by the wallet's descriptor
     #[derive(Debug, Clone, PartialEq, Eq, Serialize)]
    -#[serde(tag = "type", rename_all = "UPPERCASE")]
    +#[serde(tag = "type", rename_all = "UPPERCASE")]
     pub enum Satisfaction {
         /// Only a partial satisfaction of some kind of threshold policy
         Partial {
    @@ -2172,10 +2171,10 @@
             m: usize,
             /// The items that can be satisfied by the descriptor or are satisfied in the PSBT
             items: Vec<usize>,
    -        #[serde(skip_serializing_if = "Option::is_none")]
    +        #[serde(skip_serializing_if = "Option::is_none")]
             /// Whether the items are sorted in lexicographic order (used by `sortedmulti`)
             sorted: Option<bool>,
    -        #[serde(skip_serializing_if = "BTreeMap::is_empty")]
    +        #[serde(skip_serializing_if = "BTreeMap::is_empty")]
             /// Extra conditions that also need to be satisfied
             conditions: ConditionMap,
         },
    @@ -2187,12 +2186,12 @@
             m: usize,
             /// The items that can be satisfied by the descriptor
             items: Vec<usize>,
    -        #[serde(skip_serializing_if = "Option::is_none")]
    +        #[serde(skip_serializing_if = "Option::is_none")]
             /// Whether the items are sorted in lexicographic order (used by `sortedmulti`)
             sorted: Option<bool>,
             #[serde(
    -            serialize_with = "serialize_folded_cond_map",
    -            skip_serializing_if = "BTreeMap::is_empty"
    +            serialize_with = "serialize_folded_cond_map",
    +            skip_serializing_if = "BTreeMap::is_empty"
             )]
             /// Extra conditions that also need to be satisfied
             conditions: FoldedConditionMap,
    @@ -2216,7 +2215,7 @@
             }
         }
     
    -    // add `inner` as one of self's partial items. this only makes sense on partials
    +    // add `inner` as one of self's partial items. this only makes sense on partials
         fn add(&mut self, inner: &Satisfaction, inner_index: usize) -> Result<(), PolicyError> {
             match self {
                 Satisfaction::None | Satisfaction::Complete { .. } => Err(PolicyError::AddOnLeaf),
    @@ -2268,10 +2267,10 @@
                 if items.len() >= *m {
                     let mut map = BTreeMap::new();
                     let indexes = combinations(items, *m);
    -                // `indexes` at this point is a Vec<Vec<usize>>, with the "n choose k" of items (m of n)
    +                // `indexes` at this point is a Vec<Vec<usize>>, with the "n choose k" of items (m of n)
                     indexes
                         .into_iter()
    -                    // .inspect(|x| println!("--- orig --- {:?}", x))
    +                    // .inspect(|x| println!("--- orig --- {:?}", x))
                         // we map each of the combinations of elements into a tuple of ([chosen items], [conditions]). unfortunately, those items have potentially more than one
                         // condition (think about ORs), so we also use `mix` to expand those, i.e. [[0], [1, 2]] becomes [[0, 1], [0, 2]]. This is necessary to make sure that we
                         // consider every possible options and check whether or not they are compatible.
    @@ -2290,7 +2289,7 @@
                             .map(|x| (i_vec.clone(), x))
                             .collect::<Vec<(Vec<usize>, Vec<Condition>)>>()
                         })
    -                    // .inspect(|x| println!("flat {:?}", x))
    +                    // .inspect(|x| println!("flat {:?}", x))
                         // try to fold all the conditions for this specific combination of indexes/options. if they are not compatible, try_fold will be Err
                         .map(|(key, val)| {
                             (
    @@ -2299,10 +2298,10 @@
                                     .try_fold(Condition::default(), |acc, v| acc.merge(&v)),
                             )
                         })
    -                    // .inspect(|x| println!("try_fold {:?}", x))
    +                    // .inspect(|x| println!("try_fold {:?}", x))
                         // filter out all the incompatible combinations
                         .filter(|(_, val)| val.is_ok())
    -                    // .inspect(|x| println!("filter {:?}", x))
    +                    // .inspect(|x| println!("filter {:?}", x))
                         // push them into the map
                         .for_each(|(key, val)| {
                             map.entry(key)
    @@ -2345,7 +2344,7 @@
         pub item: SatisfiableItem,
         /// How much a given PSBT already satisfies this policy node in terms of signatures
         pub satisfaction: Satisfaction,
    -    /// How the wallet's descriptor can satisfy this policy node
    +    /// How the wallet's descriptor can satisfy this policy node
         pub contribution: Satisfaction,
     }
     
    @@ -2354,10 +2353,10 @@
     #[derive(Hash, Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Default, Serialize)]
     pub struct Condition {
         /// Optional CheckSequenceVerify condition
    -    #[serde(skip_serializing_if = "Option::is_none")]
    +    #[serde(skip_serializing_if = "Option::is_none")]
         pub csv: Option<Sequence>,
         /// Optional timelock condition
    -    #[serde(skip_serializing_if = "Option::is_none")]
    +    #[serde(skip_serializing_if = "Option::is_none")]
         pub timelock: Option<absolute::LockTime>,
     }
     
    @@ -2423,19 +2422,19 @@
     }
     
     impl fmt::Display for PolicyError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
    -            Self::NotEnoughItemsSelected(err) => write!(f, "Not enough items selected: {}", err),
    -            Self::IndexOutOfRange(index) => write!(f, "Index out of range: {}", index),
    -            Self::AddOnLeaf => write!(f, "Add on leaf"),
    -            Self::AddOnPartialComplete => write!(f, "Add on partial complete"),
    -            Self::MixedTimelockUnits => write!(f, "Mixed timelock units"),
    -            Self::IncompatibleConditions => write!(f, "Incompatible conditions"),
    +            Self::NotEnoughItemsSelected(err) => write!(f, "Not enough items selected: {}", err),
    +            Self::IndexOutOfRange(index) => write!(f, "Index out of range: {}", index),
    +            Self::AddOnLeaf => write!(f, "Add on leaf"),
    +            Self::AddOnPartialComplete => write!(f, "Add on partial complete"),
    +            Self::MixedTimelockUnits => write!(f, "Mixed timelock units"),
    +            Self::IncompatibleConditions => write!(f, "Incompatible conditions"),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for PolicyError {}
     
     impl Policy {
    @@ -2492,7 +2491,7 @@
             Ok(Some(policy))
         }
     
    -    fn make_multisig<Ctx: ScriptContext + 'static>(
    +    fn make_multisig<Ctx: ScriptContext + 'static>(
             keys: &[DescriptorPublicKey],
             signers: &SignersContainer,
             build_sat: BuildSatisfaction,
    @@ -2586,7 +2585,7 @@
                         .map(|i| i.get_condition(path))
                         .collect::<Vec<_>>();
     
    -                // if all the requirements are null we don't care about `selected` because there
    +                // if all the requirements are null we don't care about `selected` because there
                     // are no requirements
                     if mapped_req
                         .iter()
    @@ -2646,9 +2645,9 @@
     }
     
     fn signer_id(key: &DescriptorPublicKey, secp: &SecpCtx) -> SignerId {
    -    // For consistency we always compute the key hash in "ecdsa" form (with the leading sign
    +    // For consistency we always compute the key hash in "ecdsa" form (with the leading sign
         // prefix) even if we are in a taproot descriptor. We just want some kind of unique identifier
    -    // for a key, so it doesn't really matter how the identifier is computed.
    +    // for a key, so it doesn't really matter how the identifier is computed.
         match key {
             DescriptorPublicKey::Single(SinglePub {
                 key: SinglePubKey::FullKey(pk),
    @@ -2695,10 +2694,10 @@
     }
     
     fn generic_sig_in_psbt<
    -    // C is for "check", it's a closure we use to *check* if a psbt input contains the signature
    +    // C is for "check", it's a closure we use to *check* if a psbt input contains the signature
         // for a specific key
         C: Fn(&psbt::Input, &SinglePubKey) -> bool,
    -    // E is for "extract", it extracts a key from the bip32 derivations found in the psbt input
    +    // E is for "extract", it extracts a key from the bip32 derivations found in the psbt input
         E: Fn(&psbt::Input, Fingerprint) -> Option<SinglePubKey>,
     >(
         psbt: &Psbt,
    @@ -2738,7 +2737,7 @@
         fn find_signature(psbt: &Psbt, key: &DescriptorPublicKey, secp: &SecpCtx) -> bool;
     }
     
    -impl<T: ScriptContext + 'static> SigExt for T {
    +impl<T: ScriptContext + 'static> SigExt for T {
         fn make_signature(
             key: &DescriptorPublicKey,
             signers: &SignersContainer,
    @@ -2813,7 +2812,7 @@
         }
     }
     
    -impl<Ctx: ScriptContext + 'static> ExtractPolicy for Miniscript<DescriptorPublicKey, Ctx> {
    +impl<Ctx: ScriptContext + 'static> ExtractPolicy for Miniscript<DescriptorPublicKey, Ctx> {
         fn extract_policy(
             &self,
             signers: &SignersContainer,
    @@ -2954,15 +2953,15 @@
     
     /// Options to build the satisfaction field in the policy
     #[derive(Debug, Clone, Copy)]
    -pub enum BuildSatisfaction<'a> {
    -    /// Don't generate `satisfaction` field
    +pub enum BuildSatisfaction<'a> {
    +    /// Don't generate `satisfaction` field
         None,
         /// Analyze the given PSBT to check for existing signatures
    -    Psbt(&'a Psbt),
    +    Psbt(&'a Psbt),
         /// Like `Psbt` variant and also check for expired timelocks
         PsbtTimelocks {
             /// Given PSBT
    -        psbt: &'a Psbt,
    +        psbt: &'a Psbt,
             /// Current blockchain height
             current_height: u32,
             /// The highest confirmation height between the inputs
    @@ -2970,8 +2969,8 @@
             input_max_height: u32,
         },
     }
    -impl<'a> BuildSatisfaction<'a> {
    -    fn psbt(&self) -> Option<&'a Psbt> {
    +impl<'a> BuildSatisfaction<'a> {
    +    fn psbt(&self) -> Option<&'a Psbt> {
             match self {
                 BuildSatisfaction::None => None,
                 BuildSatisfaction::Psbt(psbt) => Some(psbt),
    @@ -2987,7 +2986,7 @@
             build_sat: BuildSatisfaction,
             secp: &SecpCtx,
         ) -> Result<Option<Policy>, Error> {
    -        fn make_sortedmulti<Ctx: ScriptContext + 'static>(
    +        fn make_sortedmulti<Ctx: ScriptContext + 'static>(
                 keys: &SortedMultiVec<DescriptorPublicKey, Ctx>,
                 signers: &SignersContainer,
                 build_sat: BuildSatisfaction,
    @@ -3038,7 +3037,7 @@
                 },
                 Descriptor::Bare(ms) => Ok(ms.as_inner().extract_policy(signers, build_sat, secp)?),
                 Descriptor::Tr(tr) => {
    -                // If there's no tap tree, treat this as a single sig, otherwise build a `Thresh`
    +                // If there's no tap tree, treat this as a single sig, otherwise build a `Thresh`
                     // node with threshold = 1 and the key spend signature plus all the tree leaves
                     let key_spend_sig =
                         miniscript::Tap::make_signature(tr.internal_key(), signers, build_sat, secp);
    @@ -3079,10 +3078,10 @@
         use bitcoin::Network;
         use core::str::FromStr;
     
    -    const TPRV0_STR:&str = "tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf";
    -    const TPRV1_STR:&str = "tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N";
    +    const TPRV0_STR:&str = "tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf";
    +    const TPRV1_STR:&str = "tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N";
     
    -    const PATH: &str = "m/44'/1'/0'/0";
    +    const PATH: &str = "m/44'/1'/0'/0";
     
         fn setup_keys<Ctx: ScriptContext>(
             tprv: &str,
    @@ -3153,7 +3152,7 @@
                 && keys[0] == PkOrF::Fingerprint(fingerprint0)
                 && keys[1] == PkOrF::Fingerprint(fingerprint1)
             );
    -        // TODO should this be "Satisfaction::None" since we have no prv keys?
    +        // TODO should this be "Satisfaction::None" since we have no prv keys?
             // TODO should items and conditions not be empty?
             assert_matches!(&policy.contribution, Satisfaction::Partial { n, m, items, conditions, ..} if n == &2usize
                 && m == &2usize
    @@ -3374,7 +3373,7 @@
                 .extract_policy(&signers_container, BuildSatisfaction::None, &secp)
                 .unwrap()
                 .unwrap();
    -        // println!("desc policy = {:?}", policy); // TODO remove
    +        // println!("desc policy = {:?}", policy); // TODO remove
             // TODO how should this fail with mixed timelocks?
         }
     
    @@ -3399,7 +3398,7 @@
                 .extract_policy(&signers_container, BuildSatisfaction::None, &secp)
                 .unwrap()
                 .unwrap();
    -        // println!("desc policy = {:?}", policy); // TODO remove
    +        // println!("desc policy = {:?}", policy); // TODO remove
             // TODO how should this merge timelocks?
             let (prvkey1, _pubkey1, _fingerprint1) = setup_keys(TPRV0_STR, PATH, &secp);
             let locktime_seconds0 = 500000100;
    @@ -3418,7 +3417,7 @@
                 .unwrap()
                 .unwrap();
     
    -        // println!("desc policy = {:?}", policy); // TODO remove
    +        // println!("desc policy = {:?}", policy); // TODO remove
     
             // TODO how should this merge timelocks?
         }
    @@ -3450,7 +3449,7 @@
                 policy.get_condition(&vec![(policy.id.clone(), vec![0])].into_iter().collect());
             assert_eq!(eq_thresh, Ok(Condition::default()));
     
    -        // more args, it doesn't really change anything
    +        // more args, it doesn't really change anything
             let gt_thresh =
                 policy.get_condition(&vec![(policy.id.clone(), vec![0, 1])].into_iter().collect());
             assert_eq!(gt_thresh, Ok(Condition::default()));
    @@ -3469,16 +3468,16 @@
             assert_eq!(out_of_range, Err(PolicyError::IndexOutOfRange(5)));
         }
     
    -    const ALICE_TPRV_STR:&str = "tprv8ZgxMBicQKsPf6T5X327efHnvJDr45Xnb8W4JifNWtEoqXu9MRYS4v1oYe6DFcMVETxy5w3bqpubYRqvcVTqovG1LifFcVUuJcbwJwrhYzP";
    -    const BOB_TPRV_STR:&str = "tprv8ZgxMBicQKsPeinZ155cJAn117KYhbaN6MV3WeG6sWhxWzcvX1eg1awd4C9GpUN1ncLEM2rzEvunAg3GizdZD4QPPCkisTz99tXXB4wZArp";
    -    const CAROL_TPRV_STR:&str = "tprv8ZgxMBicQKsPdC3CicFifuLCEyVVdXVUNYorxUWj3iGZ6nimnLAYAY9SYB7ib8rKzRxrCKFcEytCt6szwd2GHnGPRCBLAEAoSVDefSNk4Bt";
    -    const ALICE_BOB_PATH: &str = "m/0'";
    +    const ALICE_TPRV_STR:&str = "tprv8ZgxMBicQKsPf6T5X327efHnvJDr45Xnb8W4JifNWtEoqXu9MRYS4v1oYe6DFcMVETxy5w3bqpubYRqvcVTqovG1LifFcVUuJcbwJwrhYzP";
    +    const BOB_TPRV_STR:&str = "tprv8ZgxMBicQKsPeinZ155cJAn117KYhbaN6MV3WeG6sWhxWzcvX1eg1awd4C9GpUN1ncLEM2rzEvunAg3GizdZD4QPPCkisTz99tXXB4wZArp";
    +    const CAROL_TPRV_STR:&str = "tprv8ZgxMBicQKsPdC3CicFifuLCEyVVdXVUNYorxUWj3iGZ6nimnLAYAY9SYB7ib8rKzRxrCKFcEytCt6szwd2GHnGPRCBLAEAoSVDefSNk4Bt";
    +    const ALICE_BOB_PATH: &str = "m/0'";
     
         #[test]
         fn test_extract_satisfaction() {
    -        const ALICE_SIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstHMEQCIBj0jLjUeVYXNQ6cqB+gbtvuKMjV54wSgWlm1cfcgpHVAiBa3DtC9l/1Mt4IDCvR7mmwQd3eAP/m5++81euhJNSrgQEBBUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSriIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA";
    -        const BOB_SIGNED_PSBT: &str =   "cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhIMEUCIQD5zDtM5MwklurwJ5aW76RsO36Iqyu+6uMdVlhL6ws2GQIgesAiz4dbKS7UmhDsC/c1ezu0o6hp00UUtsCMfUZ4anYBAQVHUiEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZsshAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIUq4iBgL4YT/L4um0jzGaJHqw5733wgbPJujHRB/Pj4FCXWeZiAwcLu4+AAAAgAAAAAAiBgN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmywzJEXwuAAAAgAAAAAAAAA==";
    -        const ALICE_BOB_SIGNED_PSBT: &str =   "cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhIMEUCIQD5zDtM5MwklurwJ5aW76RsO36Iqyu+6uMdVlhL6ws2GQIgesAiz4dbKS7UmhDsC/c1ezu0o6hp00UUtsCMfUZ4anYBIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstHMEQCIBj0jLjUeVYXNQ6cqB+gbtvuKMjV54wSgWlm1cfcgpHVAiBa3DtC9l/1Mt4IDCvR7mmwQd3eAP/m5++81euhJNSrgQEBBUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSriIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAEHAAEI2wQARzBEAiAY9Iy41HlWFzUOnKgfoG7b7ijI1eeMEoFpZtXH3IKR1QIgWtw7QvZf9TLeCAwr0e5psEHd3gD/5ufvvNXroSTUq4EBSDBFAiEA+cw7TOTMJJbq8CeWlu+kbDt+iKsrvurjHVZYS+sLNhkCIHrAIs+HWyku1JoQ7Av3NXs7tKOoadNFFLbAjH1GeGp2AUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSrgAA";
    +        const ALICE_SIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstHMEQCIBj0jLjUeVYXNQ6cqB+gbtvuKMjV54wSgWlm1cfcgpHVAiBa3DtC9l/1Mt4IDCvR7mmwQd3eAP/m5++81euhJNSrgQEBBUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSriIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA";
    +        const BOB_SIGNED_PSBT: &str =   "cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhIMEUCIQD5zDtM5MwklurwJ5aW76RsO36Iqyu+6uMdVlhL6ws2GQIgesAiz4dbKS7UmhDsC/c1ezu0o6hp00UUtsCMfUZ4anYBAQVHUiEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZsshAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIUq4iBgL4YT/L4um0jzGaJHqw5733wgbPJujHRB/Pj4FCXWeZiAwcLu4+AAAAgAAAAAAiBgN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmywzJEXwuAAAAgAAAAAAAAA==";
    +        const ALICE_BOB_SIGNED_PSBT: &str =   "cHNidP8BAFMBAAAAAZb0njwT2wRS3AumaaP3yb7T4MxOePpSWih4Nq+jWChMAQAAAAD/////Af4lAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASuJJgAAAAAAACIAIERw5kTLo9DUH9QDJSClHQwPpC7VGJ+ZMDpa8U+2fzcYIgIC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhIMEUCIQD5zDtM5MwklurwJ5aW76RsO36Iqyu+6uMdVlhL6ws2GQIgesAiz4dbKS7UmhDsC/c1ezu0o6hp00UUtsCMfUZ4anYBIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstHMEQCIBj0jLjUeVYXNQ6cqB+gbtvuKMjV54wSgWlm1cfcgpHVAiBa3DtC9l/1Mt4IDCvR7mmwQd3eAP/m5++81euhJNSrgQEBBUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSriIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAEHAAEI2wQARzBEAiAY9Iy41HlWFzUOnKgfoG7b7ijI1eeMEoFpZtXH3IKR1QIgWtw7QvZf9TLeCAwr0e5psEHd3gD/5ufvvNXroSTUq4EBSDBFAiEA+cw7TOTMJJbq8CeWlu+kbDt+iKsrvurjHVZYS+sLNhkCIHrAIs+HWyku1JoQ7Av3NXs7tKOoadNFFLbAjH1GeGp2AUdSIQN4C2NhCT9V+7h1vb7ryHIwqNzfz6RaXmw/lAfwvjZmyyEC+GE/y+LptI8xmiR6sOe998IGzybox0Qfz4+BQl1nmYhSrgAA";
     
             let secp = Secp256k1::new();
     
    @@ -3497,7 +3496,7 @@
                 .address(Network::Testnet)
                 .unwrap();
             assert_eq!(
    -            "tb1qg3cwv3xt50gdg875qvjjpfgaps86gtk4rz0ejvp6ttc5ldnlxuvqlcn0xk",
    +            "tb1qg3cwv3xt50gdg875qvjjpfgaps86gtk4rz0ejvp6ttc5ldnlxuvqlcn0xk",
                 addr.to_string()
             );
     
    @@ -3509,7 +3508,7 @@
                 .extract_policy(&signers_container, BuildSatisfaction::Psbt(&psbt), &secp)
                 .unwrap()
                 .unwrap();
    -        //println!("{}", serde_json::to_string(&policy_alice_psbt).unwrap());
    +        //println!("{}", serde_json::to_string(&policy_alice_psbt).unwrap());
     
             assert_matches!(&policy_alice_psbt.satisfaction, Satisfaction::Partial { n, m, items, .. } if n == &2
                  && m == &2
    @@ -3521,7 +3520,7 @@
                 .extract_policy(&signers_container, BuildSatisfaction::Psbt(&psbt), &secp)
                 .unwrap()
                 .unwrap();
    -        //println!("{}", serde_json::to_string(&policy_bob_psbt).unwrap());
    +        //println!("{}", serde_json::to_string(&policy_bob_psbt).unwrap());
     
             assert_matches!(&policy_bob_psbt.satisfaction, Satisfaction::Partial { n, m, items, .. } if n == &2
                  && m == &2
    @@ -3541,9 +3540,9 @@
     
         #[test]
         fn test_extract_satisfaction_timelock() {
    -        //const PSBT_POLICY_CONSIDER_TIMELOCK_NOT_EXPIRED: &str = "cHNidP8BAFMBAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAD/////ATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA";
    -        const PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED:     &str = "cHNidP8BAFMCAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAACAAAAATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA";
    -        const PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED_SIGNED: &str ="cHNidP8BAFMCAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAACAAAAATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstIMEUCIQCtZxNm6H3Ux3pnc64DSpgohMdBj+57xhFHcURYt2BpPAIgG3OnI7bcj/3GtWX1HHyYGSI7QGa/zq5YnsmK1Cw29NABAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAEHAAEIoAQASDBFAiEArWcTZuh91Md6Z3OuA0qYKITHQY/ue8YRR3FEWLdgaTwCIBtzpyO23I/9xrVl9Rx8mBkiO0Bmv86uWJ7JitQsNvTQAQEBUnZjUrJpaHwhA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLrJN8IQL4YT/L4um0jzGaJHqw5733wgbPJujHRB/Pj4FCXWeZiKyTUocAAA==";
    +        //const PSBT_POLICY_CONSIDER_TIMELOCK_NOT_EXPIRED: &str = "cHNidP8BAFMBAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAD/////ATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA";
    +        const PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED:     &str = "cHNidP8BAFMCAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAACAAAAATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAAA";
    +        const PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED_SIGNED: &str ="cHNidP8BAFMCAAAAAdld52uJFGT7Yde0YZdSVh2vL020Zm2exadH5R4GSNScAAAAAAACAAAAATrcAAAAAAAAF6kUXv2Fn+YemPP4PUpNR1ZbU16/eRCHAAAAAAABASvI3AAAAAAAACIAILhzvvcBzw/Zfnc9ispRK0PCahxn1F6RHXTZAmw5tqNPIgIDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42ZstIMEUCIQCtZxNm6H3Ux3pnc64DSpgohMdBj+57xhFHcURYt2BpPAIgG3OnI7bcj/3GtWX1HHyYGSI7QGa/zq5YnsmK1Cw29NABAQVSdmNSsmlofCEDeAtjYQk/Vfu4db2+68hyMKjc38+kWl5sP5QH8L42Zsusk3whAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIrJNShyIGAvhhP8vi6bSPMZokerDnvffCBs8m6MdEH8+PgUJdZ5mIDBwu7j4AAACAAAAAACIGA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLDMkRfC4AAACAAAAAAAEHAAEIoAQASDBFAiEArWcTZuh91Md6Z3OuA0qYKITHQY/ue8YRR3FEWLdgaTwCIBtzpyO23I/9xrVl9Rx8mBkiO0Bmv86uWJ7JitQsNvTQAQEBUnZjUrJpaHwhA3gLY2EJP1X7uHW9vuvIcjCo3N/PpFpebD+UB/C+NmbLrJN8IQL4YT/L4um0jzGaJHqw5733wgbPJujHRB/Pj4FCXWeZiKyTUocAAA==";
     
             let secp = Secp256k1::new();
     
    @@ -3564,7 +3563,7 @@
                 .address(Network::Testnet)
                 .unwrap();
             assert_eq!(
    -            "tb1qsydsey4hexagwkvercqsmes6yet0ndkyt6uzcphtqnygjd8hmzmsfxrv58",
    +            "tb1qsydsey4hexagwkvercqsmes6yet0ndkyt6uzcphtqnygjd8hmzmsfxrv58",
                 addr.to_string()
             );
     
    @@ -3584,7 +3583,7 @@
                  && m == &2
                  && items.is_empty()
             );
    -        //println!("{}", serde_json::to_string(&policy).unwrap());
    +        //println!("{}", serde_json::to_string(&policy).unwrap());
     
             let build_sat_expired = BuildSatisfaction::PsbtTimelocks {
                 psbt: &psbt,
    @@ -3600,7 +3599,7 @@
                  && m == &2
                  && items == &vec![0]
             );
    -        //println!("{}", serde_json::to_string(&policy_expired).unwrap());
    +        //println!("{}", serde_json::to_string(&policy_expired).unwrap());
     
             let psbt_signed = Psbt::from_str(PSBT_POLICY_CONSIDER_TIMELOCK_EXPIRED_SIGNED).unwrap();
     
    @@ -3618,7 +3617,7 @@
                  && m == &2
                  && items == &vec![0, 1]
             );
    -        //println!("{}", serde_json::to_string(&policy_expired_signed).unwrap());
    +        //println!("{}", serde_json::to_string(&policy_expired_signed).unwrap());
         }
     
         #[test]
    @@ -3663,7 +3662,7 @@
             assert_eq!(
                 policy,
                 Some(Policy {
    -                id: "48u0tz0n".to_string(),
    +                id: "48u0tz0n".to_string(),
                     item: SatisfiableItem::SchnorrSignature(PkOrF::Fingerprint(fingerprint)),
                     satisfaction: Satisfaction::None,
                     contribution: Satisfaction::Complete {
    @@ -3708,8 +3707,8 @@
     
         #[test]
         fn test_extract_tr_satisfaction_key_spend() {
    -        const UNSIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAUKgMCqtGLSiGYhsTols2UJ/VQQgQi/SXO38uXs2SahdAQAAAAD/////ARyWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRIEiEBFjbZa1xdjLfFjrKzuC1F1LeRyI/gL6IuGKNmUuSIRYnkGTDxwXMHP32fkDFoGJY28trxbkkVgR2z7jZa2pOJA0AyRF8LgAAAIADAAAAARcgJ5Bkw8cFzBz99n5AxaBiWNvLa8W5JFYEds+42WtqTiQAAA==";
    -        const SIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAUKgMCqtGLSiGYhsTols2UJ/VQQgQi/SXO38uXs2SahdAQAAAAD/////ARyWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRIEiEBFjbZa1xdjLfFjrKzuC1F1LeRyI/gL6IuGKNmUuSARNAIsRvARpRxuyQosVA7guRQT9vXr+S25W2tnP2xOGBsSgq7A4RL8yrbvwDmNlWw9R0Nc/6t+IsyCyy7dD/lbUGgyEWJ5Bkw8cFzBz99n5AxaBiWNvLa8W5JFYEds+42WtqTiQNAMkRfC4AAACAAwAAAAEXICeQZMPHBcwc/fZ+QMWgYljby2vFuSRWBHbPuNlrak4kAAA=";
    +        const UNSIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAUKgMCqtGLSiGYhsTols2UJ/VQQgQi/SXO38uXs2SahdAQAAAAD/////ARyWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRIEiEBFjbZa1xdjLfFjrKzuC1F1LeRyI/gL6IuGKNmUuSIRYnkGTDxwXMHP32fkDFoGJY28trxbkkVgR2z7jZa2pOJA0AyRF8LgAAAIADAAAAARcgJ5Bkw8cFzBz99n5AxaBiWNvLa8W5JFYEds+42WtqTiQAAA==";
    +        const SIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAUKgMCqtGLSiGYhsTols2UJ/VQQgQi/SXO38uXs2SahdAQAAAAD/////ARyWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRIEiEBFjbZa1xdjLfFjrKzuC1F1LeRyI/gL6IuGKNmUuSARNAIsRvARpRxuyQosVA7guRQT9vXr+S25W2tnP2xOGBsSgq7A4RL8yrbvwDmNlWw9R0Nc/6t+IsyCyy7dD/lbUGgyEWJ5Bkw8cFzBz99n5AxaBiWNvLa8W5JFYEds+42WtqTiQNAMkRfC4AAACAAwAAAAEXICeQZMPHBcwc/fZ+QMWgYljby2vFuSRWBHbPuNlrak4kAAA=";
     
             let unsigned_psbt = Psbt::from_str(UNSIGNED_PSBT).unwrap();
             let signed_psbt = Psbt::from_str(SIGNED_PSBT).unwrap();
    @@ -3751,8 +3750,8 @@
     
         #[test]
         fn test_extract_tr_satisfaction_script_spend() {
    -        const UNSIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAWZalxaErOL7P3WPIUc8DsjgE68S+ww+uqiqEI2SAwlPAAAAAAD/////AQiWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRINa6bLPZwp3/CYWoxyI3mLYcSC5f9LInAMUng94nspa2IhXBgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYjIHhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQarMAhFnhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQaLQH2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHRwu7j4AAACAAgAAACEWgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYNAMkRfC4AAACAAgAAAAEXIIIj2PpHKJUtR6dJ4jiv/u1R8+hfp7M/CVcZ81s5IE6GARgg9qJ1hXN1EeiPWYbh1XiQouSzQH+AD1Xe5h5+AYXVYh0AAA==";
    -        const SIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAWZalxaErOL7P3WPIUc8DsjgE68S+ww+uqiqEI2SAwlPAAAAAAD/////AQiWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRINa6bLPZwp3/CYWoxyI3mLYcSC5f9LInAMUng94nspa2AQcAAQhCAUALcP9w/+Ddly9DWdhHTnQ9uCDWLPZjR6vKbKePswW2Ee6W5KNfrklus/8z98n7BQ1U4vADHk0FbadeeL8rrbHlARNAC3D/cP/g3ZcvQ1nYR050Pbgg1iz2Y0erymynj7MFthHuluSjX65JbrP/M/fJ+wUNVOLwAx5NBW2nXni/K62x5UEUeEbK57HG1FUp69HHhjBZH9bSvss8e3qhLoMuXPK5hBr2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHUAXNmWieJ80Fs+PMa2C186YOBPZbYG/ieEUkagMwzJ788SoCucNdp5wnxfpuJVygFhglDrXGzujFtC82PrMohwuIhXBgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYjIHhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQarMAhFnhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQaLQH2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHRwu7j4AAACAAgAAACEWgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYNAMkRfC4AAACAAgAAAAEXIIIj2PpHKJUtR6dJ4jiv/u1R8+hfp7M/CVcZ81s5IE6GARgg9qJ1hXN1EeiPWYbh1XiQouSzQH+AD1Xe5h5+AYXVYh0AAA==";
    +        const UNSIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAWZalxaErOL7P3WPIUc8DsjgE68S+ww+uqiqEI2SAwlPAAAAAAD/////AQiWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRINa6bLPZwp3/CYWoxyI3mLYcSC5f9LInAMUng94nspa2IhXBgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYjIHhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQarMAhFnhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQaLQH2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHRwu7j4AAACAAgAAACEWgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYNAMkRfC4AAACAAgAAAAEXIIIj2PpHKJUtR6dJ4jiv/u1R8+hfp7M/CVcZ81s5IE6GARgg9qJ1hXN1EeiPWYbh1XiQouSzQH+AD1Xe5h5+AYXVYh0AAA==";
    +        const SIGNED_PSBT: &str = "cHNidP8BAFMBAAAAAWZalxaErOL7P3WPIUc8DsjgE68S+ww+uqiqEI2SAwlPAAAAAAD/////AQiWmAAAAAAAF6kU4R3W8CnGzZcSsaovTYu0X8vHt3WHAAAAAAABASuAlpgAAAAAACJRINa6bLPZwp3/CYWoxyI3mLYcSC5f9LInAMUng94nspa2AQcAAQhCAUALcP9w/+Ddly9DWdhHTnQ9uCDWLPZjR6vKbKePswW2Ee6W5KNfrklus/8z98n7BQ1U4vADHk0FbadeeL8rrbHlARNAC3D/cP/g3ZcvQ1nYR050Pbgg1iz2Y0erymynj7MFthHuluSjX65JbrP/M/fJ+wUNVOLwAx5NBW2nXni/K62x5UEUeEbK57HG1FUp69HHhjBZH9bSvss8e3qhLoMuXPK5hBr2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHUAXNmWieJ80Fs+PMa2C186YOBPZbYG/ieEUkagMwzJ788SoCucNdp5wnxfpuJVygFhglDrXGzujFtC82PrMohwuIhXBgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYjIHhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQarMAhFnhGyuexxtRVKevRx4YwWR/W0r7LPHt6oS6DLlzyuYQaLQH2onWFc3UR6I9ZhuHVeJCi5LNAf4APVd7mHn4BhdViHRwu7j4AAACAAgAAACEWgiPY+kcolS1Hp0niOK/+7VHz6F+nsz8JVxnzWzkgToYNAMkRfC4AAACAAgAAAAEXIIIj2PpHKJUtR6dJ4jiv/u1R8+hfp7M/CVcZ81s5IE6GARgg9qJ1hXN1EeiPWYbh1XiQouSzQH+AD1Xe5h5+AYXVYh0AAA==";
     
             let unsigned_psbt = Psbt::from_str(UNSIGNED_PSBT).unwrap();
             let signed_psbt = Psbt::from_str(SIGNED_PSBT).unwrap();
    @@ -3809,5 +3808,4 @@
             );
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/template.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/template.rs.html index f807cebf66..bcd358e798 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/template.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/descriptor/template.rs.html @@ -1,5 +1,4 @@ -template.rs - source
    1
    +template.rs - source
    1
     2
     3
     4
    @@ -984,7 +983,7 @@
     983
     984
     985
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -1064,14 +1063,14 @@
     /// use bdk_wallet::template::P2Pkh;
     ///
     /// let key =
    -///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
    +///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     /// let mut wallet = Wallet::new_no_persist(P2Pkh(key), None, Network::Testnet)?;
     ///
     /// assert_eq!(
     ///     wallet
     ///         .next_unused_address(KeychainKind::External)?
     ///         .to_string(),
    -///     "mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"
    +///     "mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"
     /// );
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    @@ -1094,14 +1093,14 @@
     /// use bdk_wallet::template::P2Wpkh_P2Sh;
     ///
     /// let key =
    -///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
    +///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     /// let mut wallet = Wallet::new_no_persist(P2Wpkh_P2Sh(key), None, Network::Testnet)?;
     ///
     /// assert_eq!(
     ///     wallet
     ///         .next_unused_address(KeychainKind::External)?
     ///         .to_string(),
    -///     "2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"
    +///     "2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"
     /// );
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    @@ -1125,14 +1124,14 @@
     /// use bdk_wallet::template::P2Wpkh;
     ///
     /// let key =
    -///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
    +///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     /// let mut wallet = Wallet::new_no_persist(P2Wpkh(key), None, Network::Testnet)?;
     ///
     /// assert_eq!(
     ///     wallet
     ///         .next_unused_address(KeychainKind::External)?
     ///         .to_string(),
    -///     "tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"
    +///     "tb1q4525hmgw265tl3drrl8jjta7ayffu6jf68ltjd"
     /// );
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    @@ -1155,14 +1154,14 @@
     /// use bdk_wallet::template::P2TR;
     ///
     /// let key =
    -///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
    +///     bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
     /// let mut wallet = Wallet::new_no_persist(P2TR(key), None, Network::Testnet)?;
     ///
     /// assert_eq!(
     ///     wallet
     ///         .next_unused_address(KeychainKind::External)?
     ///         .to_string(),
    -///     "tb1pvjf9t34fznr53u5tqhejz4nr69luzkhlvsdsdfq9pglutrpve2xq7hps46"
    +///     "tb1pvjf9t34fznr53u5tqhejz4nr69luzkhlvsdsdfq9pglutrpve2xq7hps46"
     /// );
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
    @@ -1174,7 +1173,7 @@
         }
     }
     
    -/// BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`
    +/// BIP44 template. Expands to `pkh(key/44'/{0,1}'/0'/{0,1}/*)`
     ///
     /// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).
     ///
    @@ -1188,15 +1187,15 @@
     /// # use bdk_wallet::{Wallet,  KeychainKind};
     /// use bdk_wallet::template::Bip44;
     ///
    -/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    +/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
     /// let mut wallet = Wallet::new_no_persist(
     ///     Bip44(key.clone(), KeychainKind::External),
     ///     Some(Bip44(key, KeychainKind::Internal)),
     ///     Network::Testnet,
     /// )?;
     ///
    -/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89");
    -/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
    +/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "mmogjc7HJEZkrLqyQYqJmxUqFaC7i4uf89");
    +/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDCuorCpzvYS2LCD75BR46KHE8GdDeg1wsAgNZeNr6DaB5gQK1o14uErKwKLuFmeemkQ6N2m3rNgvctdJLyr7nwu2yia7413Hhg8WWE44cgT/0/*)#5wrnv0xt");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     pub struct Bip44<K: DerivableKey<Legacy>>(pub K, pub KeychainKind);
    @@ -1209,7 +1208,7 @@
     
     /// BIP44 public template. Expands to `pkh(key/{0,1}/*)`
     ///
    -/// This assumes that the key used has already been derived with `m/44'/0'/0'` for Mainnet or `m/44'/1'/0'` for Testnet.
    +/// This assumes that the key used has already been derived with `m/44'/0'/0'` for Mainnet or `m/44'/1'/0'` for Testnet.
     ///
     /// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
     ///
    @@ -1224,16 +1223,16 @@
     /// # use bdk_wallet::{Wallet,  KeychainKind};
     /// use bdk_wallet::template::Bip44Public;
     ///
    -/// let key = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;
    -/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    +/// let key = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;
    +/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
     /// let mut wallet = Wallet::new_no_persist(
     ///     Bip44Public(key.clone(), fingerprint, KeychainKind::External),
     ///     Some(Bip44Public(key, fingerprint, KeychainKind::Internal)),
     ///     Network::Testnet,
     /// )?;
     ///
    -/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR");
    -/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#cfhumdqz");
    +/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "miNG7dJTzJqNbFS19svRdTCisC65dsubtR");
    +/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "pkh([c55b303f/44'/1'/0']tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU/0/*)#cfhumdqz");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     pub struct Bip44Public<K: DerivableKey<Legacy>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
    @@ -1247,7 +1246,7 @@
         }
     }
     
    -/// BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`
    +/// BIP49 template. Expands to `sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))`
     ///
     /// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).
     ///
    @@ -1261,15 +1260,15 @@
     /// # use bdk_wallet::{Wallet,  KeychainKind};
     /// use bdk_wallet::template::Bip49;
     ///
    -/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    +/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
     /// let mut wallet = Wallet::new_no_persist(
     ///     Bip49(key.clone(), KeychainKind::External),
     ///     Some(Bip49(key, KeychainKind::Internal)),
     ///     Network::Testnet,
     /// )?;
     ///
    -/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");
    -/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
    +/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N4zkWAoGdUv4NXhSsU8DvS5MB36T8nKHEB");
    +/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDDYr4kdnZgjjShzYNjZUZXUUtpXaofdkMaipyS8ThEh45qFmhT4hKYways7UXmg6V7het1QiFo9kf4kYUXyDvV4rHEyvSpys9pjCB3pukxi/0/*))#s9vxlc8e");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     pub struct Bip49<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    @@ -1282,7 +1281,7 @@
     
     /// BIP49 public template. Expands to `sh(wpkh(key/{0,1}/*))`
     ///
    -/// This assumes that the key used has already been derived with `m/49'/0'/0'` for Mainnet or `m/49'/1'/0'` for Testnet.
    +/// This assumes that the key used has already been derived with `m/49'/0'/0'` for Mainnet or `m/49'/1'/0'` for Testnet.
     ///
     /// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
     ///
    @@ -1297,16 +1296,16 @@
     /// # use bdk_wallet::{Wallet,  KeychainKind};
     /// use bdk_wallet::template::Bip49Public;
     ///
    -/// let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;
    -/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    +/// let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;
    +/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
     /// let mut wallet = Wallet::new_no_persist(
     ///     Bip49Public(key.clone(), fingerprint, KeychainKind::External),
     ///     Some(Bip49Public(key, fingerprint, KeychainKind::Internal)),
     ///     Network::Testnet,
     /// )?;
     ///
    -/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt");
    -/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
    +/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt");
    +/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "sh(wpkh([c55b303f/49'/1'/0']tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L/0/*))#3tka9g0q");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     pub struct Bip49Public<K: DerivableKey<Segwitv0>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
    @@ -1320,7 +1319,7 @@
         }
     }
     
    -/// BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`
    +/// BIP84 template. Expands to `wpkh(key/84'/{0,1}'/0'/{0,1}/*)`
     ///
     /// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).
     ///
    @@ -1334,15 +1333,15 @@
     /// # use bdk_wallet::{Wallet,  KeychainKind};
     /// use bdk_wallet::template::Bip84;
     ///
    -/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    +/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
     /// let mut wallet = Wallet::new_no_persist(
     ///     Bip84(key.clone(), KeychainKind::External),
     ///     Some(Bip84(key, KeychainKind::Internal)),
     ///     Network::Testnet,
     /// )?;
     ///
    -/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n");
    -/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
    +/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qhl85z42h7r4su5u37rvvw0gk8j2t3n9y7zsg4n");
    +/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDDc5mum24DekpNw92t6fHGp8Gr2JjF9J7i4TZBtN6Vp8xpAULG5CFaKsfugWa5imhrQQUZKXe261asP5koDHo5bs3qNTmf3U3o4v9SaB8gg/0/*)#6kfecsmr");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     pub struct Bip84<K: DerivableKey<Segwitv0>>(pub K, pub KeychainKind);
    @@ -1355,7 +1354,7 @@
     
     /// BIP84 public template. Expands to `wpkh(key/{0,1}/*)`
     ///
    -/// This assumes that the key used has already been derived with `m/84'/0'/0'` for Mainnet or `m/84'/1'/0'` for Testnet.
    +/// This assumes that the key used has already been derived with `m/84'/0'/0'` for Mainnet or `m/84'/1'/0'` for Testnet.
     ///
     /// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
     ///
    @@ -1370,16 +1369,16 @@
     /// # use bdk_wallet::{Wallet,  KeychainKind};
     /// use bdk_wallet::template::Bip84Public;
     ///
    -/// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
    -/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    +/// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
    +/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
     /// let mut wallet = Wallet::new_no_persist(
     ///     Bip84Public(key.clone(), fingerprint, KeychainKind::External),
     ///     Some(Bip84Public(key, fingerprint, KeychainKind::Internal)),
     ///     Network::Testnet,
     /// )?;
     ///
    -/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7");
    -/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#dhu402yv");
    +/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2pr6y4qc7");
    +/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "wpkh([c55b303f/84'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#dhu402yv");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     pub struct Bip84Public<K: DerivableKey<Segwitv0>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
    @@ -1393,7 +1392,7 @@
         }
     }
     
    -/// BIP86 template. Expands to `tr(key/86'/{0,1}'/0'/{0,1}/*)`
    +/// BIP86 template. Expands to `tr(key/86'/{0,1}'/0'/{0,1}/*)`
     ///
     /// Since there are hardened derivation steps, this template requires a private derivable key (generally a `xprv`/`tprv`).
     ///
    @@ -1407,15 +1406,15 @@
     /// # use bdk_wallet::{Wallet,  KeychainKind};
     /// use bdk_wallet::template::Bip86;
     ///
    -/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
    +/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
     /// let mut wallet = Wallet::new_no_persist(
     ///     Bip86(key.clone(), KeychainKind::External),
     ///     Some(Bip86(key, KeychainKind::Internal)),
     ///     Network::Testnet,
     /// )?;
     ///
    -/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu");
    -/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
    +/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1p5unlj09djx8xsjwe97269kqtxqpwpu2epeskgqjfk4lnf69v4tnqpp35qu");
    +/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDCiHofpEs47kx358bPdJmTZHmCDqQ8qw32upCSxHrSEdeeBs2T5Mq6QMB2ukeMqhNBiyhosBvJErteVhfURPGXPv3qLJPw5MVpHUewsbP2m/0/*)#dkgvr5hm");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     pub struct Bip86<K: DerivableKey<Tap>>(pub K, pub KeychainKind);
    @@ -1428,7 +1427,7 @@
     
     /// BIP86 public template. Expands to `tr(key/{0,1}/*)`
     ///
    -/// This assumes that the key used has already been derived with `m/86'/0'/0'` for Mainnet or `m/86'/1'/0'` for Testnet.
    +/// This assumes that the key used has already been derived with `m/86'/0'/0'` for Mainnet or `m/86'/1'/0'` for Testnet.
     ///
     /// This template requires the parent fingerprint to populate correctly the metadata of PSBTs.
     ///
    @@ -1443,16 +1442,16 @@
     /// # use bdk_wallet::{Wallet,  KeychainKind};
     /// use bdk_wallet::template::Bip86Public;
     ///
    -/// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
    -/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
    +/// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
    +/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
     /// let mut wallet = Wallet::new_no_persist(
     ///     Bip86Public(key.clone(), fingerprint, KeychainKind::External),
     ///     Some(Bip86Public(key, fingerprint, KeychainKind::Internal)),
     ///     Network::Testnet,
     /// )?;
     ///
    -/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37");
    -/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");
    +/// assert_eq!(wallet.next_unused_address(KeychainKind::External)?.to_string(), "tb1pwjp9f2k5n0xq73ecuu0c5njvgqr3vkh7yaylmpqvsuuaafymh0msvcmh37");
    +/// assert_eq!(wallet.public_descriptor(KeychainKind::External).unwrap().to_string(), "tr([c55b303f/86'/1'/0']tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q/0/*)#2p65srku");
     /// # Ok::<_, Box<dyn std::error::Error>>(())
     /// ```
     pub struct Bip86Public<K: DerivableKey<Tap>>(pub K, pub bip32::Fingerprint, pub KeychainKind);
    @@ -1466,7 +1465,7 @@
         }
     }
     
    -macro_rules! expand_make_bipxx {
    +macro_rules! expand_make_bipxx {
         ( $mod_name:ident, $ctx:ty ) => {
             mod $mod_name {
                 use super::*;
    @@ -1548,12 +1547,12 @@
         use miniscript::descriptor::{DescriptorPublicKey, KeyMap};
         use miniscript::Descriptor;
     
    -    // BIP44 `pkh(key/44'/{0,1}'/0'/{0,1}/*)`
    +    // BIP44 `pkh(key/44'/{0,1}'/0'/{0,1}/*)`
         #[test]
         fn test_bip44_template_cointype() {
             use bitcoin::bip32::ChildNumber::{self, Hardened};
     
    -        let xprvkey = bitcoin::bip32::Xpriv::from_str("xprv9s21ZrQH143K2fpbqApQL69a4oKdGVnVN52R82Ft7d1pSqgKmajF62acJo3aMszZb6qQ22QsVECSFxvf9uyxFUvFYQMq3QbtwtRSMjLAhMf").unwrap();
    +        let xprvkey = bitcoin::bip32::Xpriv::from_str("xprv9s21ZrQH143K2fpbqApQL69a4oKdGVnVN52R82Ft7d1pSqgKmajF62acJo3aMszZb6qQ22QsVECSFxvf9uyxFUvFYQMq3QbtwtRSMjLAhMf").unwrap();
             assert_eq!(Network::Bitcoin, xprvkey.network);
             let xdesc = Bip44(xprvkey, KeychainKind::Internal)
                 .build(Network::Bitcoin)
    @@ -1567,7 +1566,7 @@
                 assert_matches!(coin_type, Hardened { index: 0 });
             }
     
    -        let tprvkey = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let tprvkey = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
             assert_eq!(Network::Testnet, tprvkey.network);
             let tdesc = Bip44(tprvkey, KeychainKind::Internal)
                 .build(Network::Testnet)
    @@ -1611,7 +1610,7 @@
         #[test]
         fn test_p2ph_template() {
             let prvkey =
    -            bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")
    +            bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")
                     .unwrap();
             check(
                 P2Pkh(prvkey).build(Network::Bitcoin),
    @@ -1619,11 +1618,11 @@
                 false,
                 true,
                 Network::Regtest,
    -            &["mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"],
    +            &["mwJ8hxFYW19JLuc65RCTaP4v1rzVU8cVMT"],
             );
     
             let pubkey = bitcoin::PublicKey::from_str(
    -            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
    +            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
             )
             .unwrap();
             check(
    @@ -1632,7 +1631,7 @@
                 false,
                 true,
                 Network::Regtest,
    -            &["muZpTpBYhxmRFuCjLc7C6BBDF32C8XVJUi"],
    +            &["muZpTpBYhxmRFuCjLc7C6BBDF32C8XVJUi"],
             );
         }
     
    @@ -1640,7 +1639,7 @@
         #[test]
         fn test_p2wphp2sh_template() {
             let prvkey =
    -            bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")
    +            bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")
                     .unwrap();
             check(
                 P2Wpkh_P2Sh(prvkey).build(Network::Bitcoin),
    @@ -1648,11 +1647,11 @@
                 false,
                 true,
                 Network::Regtest,
    -            &["2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"],
    +            &["2NB4ox5VDRw1ecUv6SnT3VQHPXveYztRqk5"],
             );
     
             let pubkey = bitcoin::PublicKey::from_str(
    -            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
    +            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
             )
             .unwrap();
             check(
    @@ -1661,7 +1660,7 @@
                 false,
                 true,
                 Network::Regtest,
    -            &["2N5LiC3CqzxDamRTPG1kiNv1FpNJQ7x28sb"],
    +            &["2N5LiC3CqzxDamRTPG1kiNv1FpNJQ7x28sb"],
             );
         }
     
    @@ -1669,7 +1668,7 @@
         #[test]
         fn test_p2wph_template() {
             let prvkey =
    -            bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")
    +            bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")
                     .unwrap();
             check(
                 P2Wpkh(prvkey).build(Network::Bitcoin),
    @@ -1677,11 +1676,11 @@
                 false,
                 true,
                 Network::Regtest,
    -            &["bcrt1q4525hmgw265tl3drrl8jjta7ayffu6jfcwxx9y"],
    +            &["bcrt1q4525hmgw265tl3drrl8jjta7ayffu6jfcwxx9y"],
             );
     
             let pubkey = bitcoin::PublicKey::from_str(
    -            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
    +            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
             )
             .unwrap();
             check(
    @@ -1690,7 +1689,7 @@
                 false,
                 true,
                 Network::Regtest,
    -            &["bcrt1qngw83fg8dz0k749cg7k3emc7v98wy0c7azaa6h"],
    +            &["bcrt1qngw83fg8dz0k749cg7k3emc7v98wy0c7azaa6h"],
             );
         }
     
    @@ -1698,7 +1697,7 @@
         #[test]
         fn test_p2tr_template() {
             let prvkey =
    -            bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")
    +            bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")
                     .unwrap();
             check(
                 P2TR(prvkey).build(Network::Bitcoin),
    @@ -1706,11 +1705,11 @@
                 true,
                 true,
                 Network::Regtest,
    -            &["bcrt1pvjf9t34fznr53u5tqhejz4nr69luzkhlvsdsdfq9pglutrpve2xqnwtkqq"],
    +            &["bcrt1pvjf9t34fznr53u5tqhejz4nr69luzkhlvsdsdfq9pglutrpve2xqnwtkqq"],
             );
     
             let pubkey = bitcoin::PublicKey::from_str(
    -            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
    +            "03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd",
             )
             .unwrap();
             check(
    @@ -1719,14 +1718,14 @@
                 true,
                 true,
                 Network::Regtest,
    -            &["bcrt1pw74tdcrxlzn5r8z6ku2vztr86fgq0m245s72mjktf4afwzsf8ugs4evwdf"],
    +            &["bcrt1pw74tdcrxlzn5r8z6ku2vztr86fgq0m245s72mjktf4afwzsf8ugs4evwdf"],
             );
         }
     
    -    // BIP44 `pkh(key/44'/0'/0'/{0,1}/*)`
    +    // BIP44 `pkh(key/44'/0'/0'/{0,1}/*)`
         #[test]
         fn test_bip44_template() {
    -        let prvkey = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let prvkey = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
             check(
                 Bip44(prvkey, KeychainKind::External).build(Network::Bitcoin),
                 false,
    @@ -1734,9 +1733,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "n453VtnjDHPyDt2fDstKSu7A3YCJoHZ5g5",
    -                "mvfrrumXgTtwFPWDNUecBBgzuMXhYM7KRP",
    -                "mzYvhRAuQqbdSKMVVzXNYyqihgNdRadAUQ",
    +                "n453VtnjDHPyDt2fDstKSu7A3YCJoHZ5g5",
    +                "mvfrrumXgTtwFPWDNUecBBgzuMXhYM7KRP",
    +                "mzYvhRAuQqbdSKMVVzXNYyqihgNdRadAUQ",
                 ],
             );
             check(
    @@ -1746,9 +1745,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "muHF98X9KxEzdKrnFAX85KeHv96eXopaip",
    -                "n4hpyLJE5ub6B5Bymv4eqFxS5KjrewSmYR",
    -                "mgvkdv1ffmsXd2B1sRKQ5dByK3SzpG42rA",
    +                "muHF98X9KxEzdKrnFAX85KeHv96eXopaip",
    +                "n4hpyLJE5ub6B5Bymv4eqFxS5KjrewSmYR",
    +                "mgvkdv1ffmsXd2B1sRKQ5dByK3SzpG42rA",
                 ],
             );
         }
    @@ -1756,8 +1755,8 @@
         // BIP44 public `pkh(key/{0,1}/*)`
         #[test]
         fn test_bip44_public_template() {
    -        let pubkey = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU").unwrap();
    -        let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f").unwrap();
    +        let pubkey = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU").unwrap();
    +        let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f").unwrap();
             check(
                 Bip44Public(pubkey, fingerprint, KeychainKind::External).build(Network::Bitcoin),
                 false,
    @@ -1765,9 +1764,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "miNG7dJTzJqNbFS19svRdTCisC65dsubtR",
    -                "n2UqaDbCjWSFJvpC84m3FjUk5UaeibCzYg",
    -                "muCPpS6Ue7nkzeJMWDViw7Lkwr92Yc4K8g",
    +                "miNG7dJTzJqNbFS19svRdTCisC65dsubtR",
    +                "n2UqaDbCjWSFJvpC84m3FjUk5UaeibCzYg",
    +                "muCPpS6Ue7nkzeJMWDViw7Lkwr92Yc4K8g",
                 ],
             );
             check(
    @@ -1777,17 +1776,17 @@
                 false,
                 Network::Regtest,
                 &[
    -                "moDr3vJ8wpt5nNxSK55MPq797nXJb2Ru9H",
    -                "ms7A1Yt4uTezT2XkefW12AvLoko8WfNJMG",
    -                "mhYiyat2rtEnV77cFfQsW32y1m2ceCGHPo",
    +                "moDr3vJ8wpt5nNxSK55MPq797nXJb2Ru9H",
    +                "ms7A1Yt4uTezT2XkefW12AvLoko8WfNJMG",
    +                "mhYiyat2rtEnV77cFfQsW32y1m2ceCGHPo",
                 ],
             );
         }
     
    -    // BIP49 `sh(wpkh(key/49'/0'/0'/{0,1}/*))`
    +    // BIP49 `sh(wpkh(key/49'/0'/0'/{0,1}/*))`
         #[test]
         fn test_bip49_template() {
    -        let prvkey = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let prvkey = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
             check(
                 Bip49(prvkey, KeychainKind::External).build(Network::Bitcoin),
                 true,
    @@ -1795,9 +1794,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "2N9bCAJXGm168MjVwpkBdNt6ucka3PKVoUV",
    -                "2NDckYkqrYyDMtttEav5hB3Bfw9EGAW5HtS",
    -                "2NAFTVtksF9T4a97M7nyCjwUBD24QevZ5Z4",
    +                "2N9bCAJXGm168MjVwpkBdNt6ucka3PKVoUV",
    +                "2NDckYkqrYyDMtttEav5hB3Bfw9EGAW5HtS",
    +                "2NAFTVtksF9T4a97M7nyCjwUBD24QevZ5Z4",
                 ],
             );
             check(
    @@ -1807,9 +1806,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "2NB3pA8PnzJLGV8YEKNDFpbViZv3Bm1K6CG",
    -                "2NBiX2Wzxngb5rPiWpUiJQ2uLVB4HBjFD4p",
    -                "2NA8ek4CdQ6aMkveYF6AYuEYNrftB47QGTn",
    +                "2NB3pA8PnzJLGV8YEKNDFpbViZv3Bm1K6CG",
    +                "2NBiX2Wzxngb5rPiWpUiJQ2uLVB4HBjFD4p",
    +                "2NA8ek4CdQ6aMkveYF6AYuEYNrftB47QGTn",
                 ],
             );
         }
    @@ -1817,8 +1816,8 @@
         // BIP49 public `sh(wpkh(key/{0,1}/*))`
         #[test]
         fn test_bip49_public_template() {
    -        let pubkey = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L").unwrap();
    -        let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f").unwrap();
    +        let pubkey = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L").unwrap();
    +        let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f").unwrap();
             check(
                 Bip49Public(pubkey, fingerprint, KeychainKind::External).build(Network::Bitcoin),
                 true,
    @@ -1826,9 +1825,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt",
    -                "2NCTQfJ1sZa3wQ3pPseYRHbaNEpC3AquEfX",
    -                "2MveFxAuC8BYPzTybx7FxSzW8HSd8ATT4z7",
    +                "2N3K4xbVAHoiTQSwxkZjWDfKoNC27pLkYnt",
    +                "2NCTQfJ1sZa3wQ3pPseYRHbaNEpC3AquEfX",
    +                "2MveFxAuC8BYPzTybx7FxSzW8HSd8ATT4z7",
                 ],
             );
             check(
    @@ -1838,17 +1837,17 @@
                 false,
                 Network::Regtest,
                 &[
    -                "2NF2vttKibwyxigxtx95Zw8K7JhDbo5zPVJ",
    -                "2Mtmyd8taksxNVWCJ4wVvaiss7QPZGcAJuH",
    -                "2NBs3CTVYPr1HCzjB4YFsnWCPCtNg8uMEfp",
    +                "2NF2vttKibwyxigxtx95Zw8K7JhDbo5zPVJ",
    +                "2Mtmyd8taksxNVWCJ4wVvaiss7QPZGcAJuH",
    +                "2NBs3CTVYPr1HCzjB4YFsnWCPCtNg8uMEfp",
                 ],
             );
         }
     
    -    // BIP84 `wpkh(key/84'/0'/0'/{0,1}/*)`
    +    // BIP84 `wpkh(key/84'/0'/0'/{0,1}/*)`
         #[test]
         fn test_bip84_template() {
    -        let prvkey = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
    +        let prvkey = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
             check(
                 Bip84(prvkey, KeychainKind::External).build(Network::Bitcoin),
                 true,
    @@ -1856,9 +1855,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "bcrt1qkmvk2nadgplmd57ztld8nf8v2yxkzmdvwtjf8s",
    -                "bcrt1qx0v6zgfwe50m4kqc58cqzcyem7ay2sfl3gvqhp",
    -                "bcrt1q4h7fq9zhxst6e69p3n882nfj649l7w9g3zccfp",
    +                "bcrt1qkmvk2nadgplmd57ztld8nf8v2yxkzmdvwtjf8s",
    +                "bcrt1qx0v6zgfwe50m4kqc58cqzcyem7ay2sfl3gvqhp",
    +                "bcrt1q4h7fq9zhxst6e69p3n882nfj649l7w9g3zccfp",
                 ],
             );
             check(
    @@ -1868,9 +1867,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "bcrt1qtrwtz00wxl69e5xex7amy4xzlxkaefg3gfdkxa",
    -                "bcrt1qqqasfhxpkkf7zrxqnkr2sfhn74dgsrc3e3ky45",
    -                "bcrt1qpks7n0gq74hsgsz3phn5vuazjjq0f5eqhsgyce",
    +                "bcrt1qtrwtz00wxl69e5xex7amy4xzlxkaefg3gfdkxa",
    +                "bcrt1qqqasfhxpkkf7zrxqnkr2sfhn74dgsrc3e3ky45",
    +                "bcrt1qpks7n0gq74hsgsz3phn5vuazjjq0f5eqhsgyce",
                 ],
             );
         }
    @@ -1878,8 +1877,8 @@
         // BIP84 public `wpkh(key/{0,1}/*)`
         #[test]
         fn test_bip84_public_template() {
    -        let pubkey = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q").unwrap();
    -        let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f").unwrap();
    +        let pubkey = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q").unwrap();
    +        let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f").unwrap();
             check(
                 Bip84Public(pubkey, fingerprint, KeychainKind::External).build(Network::Bitcoin),
                 true,
    @@ -1887,9 +1886,9 @@
                 false,
                 Network::Regtest,
                 &[
    -                "bcrt1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2prcdvd0h",
    -                "bcrt1q3lncdlwq3lgcaaeyruynjnlccr0ve0kakh6ana",
    -                "bcrt1qt9800y6xl3922jy3uyl0z33jh5wfpycyhcylr9",
    +                "bcrt1qedg9fdlf8cnnqfd5mks6uz5w4kgpk2prcdvd0h",
    +                "bcrt1q3lncdlwq3lgcaaeyruynjnlccr0ve0kakh6ana",
    +                "bcrt1qt9800y6xl3922jy3uyl0z33jh5wfpycyhcylr9",
                 ],
             );
             check(
    @@ -1899,18 +1898,18 @@
                 false,
                 Network::Regtest,
                 &[
    -                "bcrt1qm6wqukenh7guu792lj2njgw9n78cmwsy8xy3z2",
    -                "bcrt1q694twxtjn4nnrvnyvra769j0a23rllj5c6cgwp",
    -                "bcrt1qhlac3c5ranv5w5emlnqs7wxhkxt8maelylcarp",
    +                "bcrt1qm6wqukenh7guu792lj2njgw9n78cmwsy8xy3z2",
    +                "bcrt1q694twxtjn4nnrvnyvra769j0a23rllj5c6cgwp",
    +                "bcrt1qhlac3c5ranv5w5emlnqs7wxhkxt8maelylcarp",
                 ],
             );
         }
     
    -    // BIP86 `tr(key/86'/0'/0'/{0,1}/*)`
    +    // BIP86 `tr(key/86'/0'/0'/{0,1}/*)`
         // Used addresses in test vector in https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki
         #[test]
         fn test_bip86_template() {
    -        let prvkey = bitcoin::bip32::Xpriv::from_str("xprv9s21ZrQH143K3GJpoapnV8SFfukcVBSfeCficPSGfubmSFDxo1kuHnLisriDvSnRRuL2Qrg5ggqHKNVpxR86QEC8w35uxmGoggxtQTPvfUu").unwrap();
    +        let prvkey = bitcoin::bip32::Xpriv::from_str("xprv9s21ZrQH143K3GJpoapnV8SFfukcVBSfeCficPSGfubmSFDxo1kuHnLisriDvSnRRuL2Qrg5ggqHKNVpxR86QEC8w35uxmGoggxtQTPvfUu").unwrap();
             check(
                 Bip86(prvkey, KeychainKind::External).build(Network::Bitcoin),
                 false,
    @@ -1918,9 +1917,9 @@
                 false,
                 Network::Bitcoin,
                 &[
    -                "bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr",
    -                "bc1p4qhjn9zdvkux4e44uhx8tc55attvtyu358kutcqkudyccelu0was9fqzwh",
    -                "bc1p0d0rhyynq0awa9m8cqrcr8f5nxqx3aw29w4ru5u9my3h0sfygnzs9khxz8",
    +                "bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr",
    +                "bc1p4qhjn9zdvkux4e44uhx8tc55attvtyu358kutcqkudyccelu0was9fqzwh",
    +                "bc1p0d0rhyynq0awa9m8cqrcr8f5nxqx3aw29w4ru5u9my3h0sfygnzs9khxz8",
                 ],
             );
             check(
    @@ -1930,9 +1929,9 @@
                 false,
                 Network::Bitcoin,
                 &[
    -                "bc1p3qkhfews2uk44qtvauqyr2ttdsw7svhkl9nkm9s9c3x4ax5h60wqwruhk7",
    -                "bc1ptdg60grjk9t3qqcqczp4tlyy3z47yrx9nhlrjsmw36q5a72lhdrs9f00nj",
    -                "bc1pgcwgsu8naxp7xlp5p7ufzs7emtfza2las7r2e7krzjhe5qj5xz2q88kmk5",
    +                "bc1p3qkhfews2uk44qtvauqyr2ttdsw7svhkl9nkm9s9c3x4ax5h60wqwruhk7",
    +                "bc1ptdg60grjk9t3qqcqczp4tlyy3z47yrx9nhlrjsmw36q5a72lhdrs9f00nj",
    +                "bc1pgcwgsu8naxp7xlp5p7ufzs7emtfza2las7r2e7krzjhe5qj5xz2q88kmk5",
                 ],
             );
         }
    @@ -1941,8 +1940,8 @@
         // Used addresses in test vector in https://github.com/bitcoin/bips/blob/master/bip-0086.mediawiki
         #[test]
         fn test_bip86_public_template() {
    -        let pubkey = bitcoin::bip32::Xpub::from_str("xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ").unwrap();
    -        let fingerprint = bitcoin::bip32::Fingerprint::from_str("73c5da0a").unwrap();
    +        let pubkey = bitcoin::bip32::Xpub::from_str("xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ").unwrap();
    +        let fingerprint = bitcoin::bip32::Fingerprint::from_str("73c5da0a").unwrap();
             check(
                 Bip86Public(pubkey, fingerprint, KeychainKind::External).build(Network::Bitcoin),
                 false,
    @@ -1950,9 +1949,9 @@
                 false,
                 Network::Bitcoin,
                 &[
    -                "bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr",
    -                "bc1p4qhjn9zdvkux4e44uhx8tc55attvtyu358kutcqkudyccelu0was9fqzwh",
    -                "bc1p0d0rhyynq0awa9m8cqrcr8f5nxqx3aw29w4ru5u9my3h0sfygnzs9khxz8",
    +                "bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr",
    +                "bc1p4qhjn9zdvkux4e44uhx8tc55attvtyu358kutcqkudyccelu0was9fqzwh",
    +                "bc1p0d0rhyynq0awa9m8cqrcr8f5nxqx3aw29w4ru5u9my3h0sfygnzs9khxz8",
                 ],
             );
             check(
    @@ -1962,12 +1961,11 @@
                 false,
                 Network::Bitcoin,
                 &[
    -                "bc1p3qkhfews2uk44qtvauqyr2ttdsw7svhkl9nkm9s9c3x4ax5h60wqwruhk7",
    -                "bc1ptdg60grjk9t3qqcqczp4tlyy3z47yrx9nhlrjsmw36q5a72lhdrs9f00nj",
    -                "bc1pgcwgsu8naxp7xlp5p7ufzs7emtfza2las7r2e7krzjhe5qj5xz2q88kmk5",
    +                "bc1p3qkhfews2uk44qtvauqyr2ttdsw7svhkl9nkm9s9c3x4ax5h60wqwruhk7",
    +                "bc1ptdg60grjk9t3qqcqczp4tlyy3z47yrx9nhlrjsmw36q5a72lhdrs9f00nj",
    +                "bc1pgcwgsu8naxp7xlp5p7ufzs7emtfza2las7r2e7krzjhe5qj5xz2q88kmk5",
                 ],
             );
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/keys/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/keys/mod.rs.html index c4ad1fa450..5f10dd7514 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/keys/mod.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/keys/mod.rs.html @@ -1,5 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -1007,7 +1006,7 @@
     1006
     1007
     1008
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -1045,8 +1044,8 @@
     use crate::descriptor::{CheckMiniscript, DescriptorError};
     use crate::wallet::utils::SecpCtx;
     
    -#[cfg(feature = "keys-bip39")]
    -#[cfg_attr(docsrs, doc(cfg(feature = "keys-bip39")))]
    +#[cfg(feature = "keys-bip39")]
    +#[cfg_attr(docsrs, doc(cfg(feature = "keys-bip39")))]
     pub mod bip39;
     
     /// Set of valid networks for a key
    @@ -1181,13 +1180,13 @@
         }
     }
     
    -impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx {
    +impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx {
         fn as_enum() -> ScriptContextEnum {
             match TypeId::of::<Ctx>() {
                 t if t == TypeId::of::<miniscript::Legacy>() => ScriptContextEnum::Legacy,
                 t if t == TypeId::of::<miniscript::Segwitv0>() => ScriptContextEnum::Segwitv0,
                 t if t == TypeId::of::<miniscript::Tap>() => ScriptContextEnum::Tap,
    -            _ => unimplemented!("Unknown ScriptContext type"),
    +            _ => unimplemented!("Unknown ScriptContext type"),
             }
         }
     }
    @@ -1203,7 +1202,7 @@
     /// methods that can be used to check at runtime which `Ctx` is being used.
     ///
     /// For key types that can do this check statically (because they can only work within a
    -/// single `Ctx`), the "specialized" trait can be implemented to make the compiler handle the type
    +/// single `Ctx`), the "specialized" trait can be implemented to make the compiler handle the type
     /// checking.
     ///
     /// Keys also have control over the networks they support: constructing the return object with
    @@ -1257,7 +1256,7 @@
     /// }
     /// ```
     ///
    -/// Key type that internally encodes in which context it's valid. The context is checked at runtime:
    +/// Key type that internally encodes in which context it's valid. The context is checked at runtime:
     ///
     /// ```
     /// use bdk_wallet::bitcoin::PublicKey;
    @@ -1271,7 +1270,7 @@
     ///     pubkey: PublicKey,
     /// }
     ///
    -/// impl<Ctx: ScriptContext + 'static> IntoDescriptorKey<Ctx> for MyKeyType {
    +/// impl<Ctx: ScriptContext + 'static> IntoDescriptorKey<Ctx> for MyKeyType {
     ///     fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
     ///         if Ctx::is_legacy() == self.is_legacy {
     ///             self.pubkey.into_descriptor_key()
    @@ -1286,7 +1285,7 @@
     /// of the trait is implemented.
     ///
     /// This example deliberately fails to compile, to demonstrate how the compiler can catch when keys
    -/// are misused. In this case, the "segwit-only" key is used to build a `pkh()` descriptor, which
    +/// are misused. In this case, the "segwit-only" key is used to build a `pkh()` descriptor, which
     /// makes the compiler (correctly) fail.
     ///
     /// ```compile_fail
    @@ -1306,7 +1305,7 @@
     /// }
     ///
     /// let key = MySegwitOnlyKeyType {
    -///     pubkey: PublicKey::from_str("...")?,
    +///     pubkey: PublicKey::from_str("...")?,
     /// };
     /// let (descriptor, _, _) = bdk_wallet::descriptor!(pkh(key))?;
     /// //                                               ^^^^^ changing this to `wpkh` would make it compile
    @@ -1388,7 +1387,7 @@
     /// for `(DerivableKey, DerivationPath)` and
     /// `(DerivableKey, KeySource, DerivationPath)` tuples.
     ///
    -/// For key types that don't encode any indication about the path to use (like bip39), it's
    +/// For key types that don't encode any indication about the path to use (like bip39), it's
     /// generally recommended to implement this trait instead of [`IntoDescriptorKey`]. The same
     /// rules regarding script context and valid networks apply.
     ///
    @@ -1424,7 +1423,7 @@
     /// }
     /// ```
     ///
    -/// Types that don't internally encode the [`Network`] in which they are valid need some extra
    +/// Types that don't internally encode the [`Network`] in which they are valid need some extra
     /// steps to override the set of valid networks, otherwise only the network specified in the
     /// [`Xpriv`] or [`Xpub`] will be considered valid.
     ///
    @@ -1475,8 +1474,8 @@
     pub trait DerivableKey<Ctx: ScriptContext = miniscript::Legacy>: Sized {
         /// Consume `self` and turn it into an [`ExtendedKey`]
         #[cfg_attr(
    -        feature = "keys-bip39",
    -        doc = r##"
    +        feature = "keys-bip39",
    +        doc = r##"
     This can be used to get direct access to `xprv`s and `xpub`s for types that implement this trait,
     like [`Mnemonic`](bip39::Mnemonic) when the `keys-bip39` feature is enabled.
     ```rust
    @@ -1488,13 +1487,13 @@ use bdk_wallet::keys::bip39::{Mnemonic, Language};
     let xkey: ExtendedKey =
         Mnemonic::parse_in(
             Language::English,
    -        "jelly crash boy whisper mouse ecology tuna soccer memory million news short",
    +        "jelly crash boy whisper mouse ecology tuna soccer memory million news short",
         )?
         .into_extended_key()?;
     let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     # Ok(()) }
     ```
    -"##
    +"##
         )]
         fn into_extended_key(self) -> Result<ExtendedKey<Ctx>, KeyError>;
     
    @@ -1583,7 +1582,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
         }
     }
     
    -// Make generated "derivable" keys themselves "derivable". Also make sure they are assigned the
    +// Make generated "derivable" keys themselves "derivable". Also make sure they are assigned the
     // right `valid_networks`.
     impl<Ctx, K> DerivableKey<Ctx> for GeneratedKey<K, Ctx>
     where
    @@ -1702,7 +1701,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     /// Defaults to creating compressed keys, which save on-chain bytes and fees
     #[derive(Debug, Copy, Clone)]
     pub struct PrivateKeyGenerateOptions {
    -    /// Whether the generated key should be "compressed" or not
    +    /// Whether the generated key should be "compressed" or not
         pub compressed: bool,
     }
     
    @@ -1845,7 +1844,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
         Ok((descriptor, key_map, valid_networks))
     }
     
    -/// The "identity" conversion is used internally by some `bdk_wallet::fragment`s
    +/// The "identity" conversion is used internally by some `bdk_wallet::fragment`s
     impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorKey<Ctx> {
         fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
             Ok(self)
    @@ -1906,7 +1905,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
         }
     }
     
    -impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for &'_ str {
    +impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for &'_ str {
         fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
             DescriptorSecretKey::from_str(self)
                 .map_err(|e| KeyError::Message(e.to_string()))?
    @@ -1956,19 +1955,19 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
     }
     
     impl fmt::Display for KeyError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
    -            Self::InvalidScriptContext => write!(f, "Invalid script context"),
    -            Self::InvalidNetwork => write!(f, "Invalid network"),
    -            Self::InvalidChecksum => write!(f, "Invalid checksum"),
    -            Self::Message(err) => write!(f, "{}", err),
    -            Self::Bip32(err) => write!(f, "BIP32 error: {}", err),
    -            Self::Miniscript(err) => write!(f, "Miniscript error: {}", err),
    +            Self::InvalidScriptContext => write!(f, "Invalid script context"),
    +            Self::InvalidNetwork => write!(f, "Invalid network"),
    +            Self::InvalidChecksum => write!(f, "Invalid checksum"),
    +            Self::Message(err) => write!(f, "{}", err),
    +            Self::Bip32(err) => write!(f, "BIP32 error: {}", err),
    +            Self::Miniscript(err) => write!(f, "Miniscript error: {}", err),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for KeyError {}
     
     #[cfg(test)]
    @@ -1985,7 +1984,7 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
                 bip32::Xpriv::generate_with_entropy_default(TEST_ENTROPY).unwrap();
     
             assert_eq!(generated_xprv.valid_networks, any_network());
    -        assert_eq!(generated_xprv.to_string(), "xprv9s21ZrQH143K4Xr1cJyqTvuL2FWR8eicgY9boWqMBv8MDVUZ65AXHnzBrK1nyomu6wdcabRgmGTaAKawvhAno1V5FowGpTLVx3jxzE5uk3Q");
    +        assert_eq!(generated_xprv.to_string(), "xprv9s21ZrQH143K4Xr1cJyqTvuL2FWR8eicgY9boWqMBv8MDVUZ65AXHnzBrK1nyomu6wdcabRgmGTaAKawvhAno1V5FowGpTLVx3jxzE5uk3Q");
         }
     
         #[test]
    @@ -1996,16 +1995,16 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
             assert_eq!(generated_wif.valid_networks, any_network());
             assert_eq!(
                 generated_wif.to_string(),
    -            "L2wTu6hQrnDMiFNWA5na6jB12ErGQqtXwqpSL7aWquJaZG8Ai3ch"
    +            "L2wTu6hQrnDMiFNWA5na6jB12ErGQqtXwqpSL7aWquJaZG8Ai3ch"
             );
         }
     
    -    #[cfg(feature = "keys-bip39")]
    +    #[cfg(feature = "keys-bip39")]
         #[test]
         fn test_keys_wif_network_bip39() {
             let xkey: ExtendedKey = bip39::Mnemonic::parse_in(
                 bip39::Language::English,
    -            "jelly crash boy whisper mouse ecology tuna soccer memory million news short",
    +            "jelly crash boy whisper mouse ecology tuna soccer memory million news short",
             )
             .unwrap()
             .into_extended_key()
    @@ -2015,5 +2014,4 @@ let xprv = xkey.into_xprv(Network::Bitcoin).unwrap();
             assert_eq!(xprv.network, Network::Testnet);
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/lib.rs.html index 4f52b410d9..c8ece7262c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/lib.rs.html @@ -1,5 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -46,17 +45,17 @@
     45
     46
     47
    -
    #![doc = include_str!("../README.md")]
    +
    #![doc = include_str!("../README.md")]
     // only enables the `doc_cfg` feature when the `docsrs` configuration attribute is defined
     #![cfg_attr(docsrs, feature(doc_cfg))]
     #![cfg_attr(
         docsrs,
    -    doc(html_logo_url = "https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png")
    +    doc(html_logo_url = "https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png")
     )]
     #![no_std]
     #![warn(missing_docs)]
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     #[macro_use]
     extern crate std;
     
    @@ -69,7 +68,7 @@
     extern crate serde;
     extern crate serde_json;
     
    -#[cfg(feature = "keys-bip39")]
    +#[cfg(feature = "keys-bip39")]
     extern crate bip39;
     
     pub mod descriptor;
    @@ -87,11 +86,10 @@
     pub use wallet::Wallet;
     
     /// Get the version of BDK at runtime
    -pub fn version() -> &'static str {
    -    env!("CARGO_PKG_VERSION", "unknown")
    +pub fn version() -> &'static str {
    +    env!("CARGO_PKG_VERSION", "unknown")
     }
     
     pub use bdk_chain as chain;
     pub(crate) use bdk_chain::collections;
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/psbt/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/psbt/mod.rs.html index 42772f98ab..ed465c8afd 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/psbt/mod.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/psbt/mod.rs.html @@ -1,5 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -74,7 +73,7 @@
     73
     74
     75
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -97,14 +96,14 @@
     
     /// Trait to add functions to extract utxos and calculate fees.
     pub trait PsbtUtils {
    -    /// Get the `TxOut` for the specified input index, if it doesn't exist in the PSBT `None` is returned.
    +    /// Get the `TxOut` for the specified input index, if it doesn't exist in the PSBT `None` is returned.
         fn get_utxo_for(&self, input_index: usize) -> Option<TxOut>;
     
         /// The total transaction fee amount, sum of input amounts minus sum of output amounts, in sats.
         /// If the PSBT is missing a TxOut for an input returns None.
         fn fee_amount(&self) -> Option<u64>;
     
    -    /// The transaction's fee rate. This value will only be accurate if calculated AFTER the
    +    /// The transaction's fee rate. This value will only be accurate if calculated AFTER the
         /// `Psbt` is finalized and all witness/signature data is added to the
         /// transaction.
         /// If the PSBT is missing a TxOut for an input returns None.
    @@ -139,7 +138,7 @@
                     .sum();
                 input_amount
                     .checked_sub(output_amount)
    -                .expect("input amount must be greater than output amount")
    +                .expect("input amount must be greater than output amount")
             })
         }
     
    @@ -149,5 +148,4 @@
             fee_amount.map(|fee| Amount::from_sat(fee) / weight)
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/types.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/types.rs.html index 3542610aef..5a19cadb53 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/types.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/types.rs.html @@ -1,5 +1,4 @@ -types.rs - source
    1
    +types.rs - source
    1
     2
     3
     4
    @@ -134,7 +133,7 @@
     133
     134
     135
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -167,8 +166,8 @@
         /// Return [`KeychainKind`] as a byte
         pub fn as_byte(&self) -> u8 {
             match self {
    -            KeychainKind::External => b'e',
    -            KeychainKind::Internal => b'i',
    +            KeychainKind::External => b'e',
    +            KeychainKind::Internal => b'i',
             }
         }
     }
    @@ -176,8 +175,8 @@
     impl AsRef<[u8]> for KeychainKind {
         fn as_ref(&self) -> &[u8] {
             match self {
    -            KeychainKind::External => b"e",
    -            KeychainKind::Internal => b"i",
    +            KeychainKind::External => b"e",
    +            KeychainKind::Internal => b"i",
             }
         }
     }
    @@ -256,7 +255,7 @@
                         return txout;
                     }
     
    -                unreachable!("Foreign UTXOs will always have one of these set")
    +                unreachable!("Foreign UTXOs will always have one of these set")
                 }
             }
         }
    @@ -269,5 +268,4 @@
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/coin_selection.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/coin_selection.rs.html index de081a0928..dced8bb219 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/coin_selection.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/coin_selection.rs.html @@ -1,5 +1,4 @@ -coin_selection.rs - source
    1
    +coin_selection.rs - source
    1
     2
     3
     4
    @@ -1601,7 +1600,7 @@
     1600
     1601
     1602
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -1689,7 +1688,7 @@
     //! # let mut wallet = doctest_wallet!();
     //! // create wallet, sync, ...
     //!
    -//! let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +//! let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
     //!     .unwrap()
     //!     .require_network(Network::Testnet)
     //!     .unwrap();
    @@ -1727,7 +1726,7 @@
     /// Errors that can be thrown by the [`coin_selection`](crate::wallet::coin_selection) module
     #[derive(Debug)]
     pub enum Error {
    -    /// Wallet's UTXO set is not enough to cover recipient's requested plus fee
    +    /// Wallet's UTXO set is not enough to cover recipient's requested plus fee
         InsufficientFunds {
             /// Sats needed for some transaction
             needed: u64,
    @@ -1743,28 +1742,28 @@
     }
     
     impl fmt::Display for Error {
    -    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
             match self {
                 Self::InsufficientFunds { needed, available } => write!(
                     f,
    -                "Insufficient funds: {} sat available of {} sat needed",
    +                "Insufficient funds: {} sat available of {} sat needed",
                     available, needed
                 ),
                 Self::BnBTotalTriesExceeded => {
    -                write!(f, "Branch and bound coin selection: total tries exceeded")
    +                write!(f, "Branch and bound coin selection: total tries exceeded")
                 }
    -            Self::BnBNoExactMatch => write!(f, "Branch and bound coin selection: not exact match"),
    +            Self::BnBNoExactMatch => write!(f, "Branch and bound coin selection: not exact match"),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for Error {}
     
     #[derive(Debug)]
     /// Remaining amount after performing coin selection
     pub enum Excess {
    -    /// It's not possible to create spendable output from excess using the current drain output
    +    /// It's not possible to create spendable output from excess using the current drain output
         NoChange {
             /// Threshold to consider amount as dust for this particular change script_pubkey
             dust_threshold: u64,
    @@ -1773,7 +1772,7 @@
             /// The calculated fee for the drain TxOut with the selected script_pubkey
             change_fee: u64,
         },
    -    /// It's possible to create spendable output from excess using the current drain output
    +    /// It's possible to create spendable output from excess using the current drain output
         Change {
             /// Effective amount available to create change after deducting the change output fee
             amount: u64,
    @@ -1816,11 +1815,11 @@
     /// This trait can be implemented to make the [`Wallet`](super::Wallet) use a customized coin
     /// selection algorithm when it creates transactions.
     ///
    -/// For an example see [this module](crate::wallet::coin_selection)'s documentation.
    +/// For an example see [this module](crate::wallet::coin_selection)'s documentation.
     pub trait CoinSelectionAlgorithm: core::fmt::Debug {
         /// Perform the coin selection
         ///
    -    /// - `database`: a reference to the wallet's database that can be used to lookup additional
    +    /// - `database`: a reference to the wallet's database that can be used to lookup additional
         ///               details for a specific UTXO
         /// - `required_utxos`: the utxos that must be spent regardless of `target_amount` with their
         ///                     weight cost
    @@ -1857,7 +1856,7 @@
             target_amount: u64,
             drain_script: &Script,
         ) -> Result<CoinSelectionResult, Error> {
    -        // We put the "required UTXOs" first and make sure the optional UTXOs are sorted,
    +        // We put the "required UTXOs" first and make sure the optional UTXOs are sorted,
             // initially smallest to largest, before being reversed with `.rev()`.
             let utxos = {
                 optional_utxos.sort_unstable_by_key(|wu| wu.utxo.txout().value);
    @@ -1887,9 +1886,9 @@
             target_amount: u64,
             drain_script: &Script,
         ) -> Result<CoinSelectionResult, Error> {
    -        // We put the "required UTXOs" first and make sure the optional UTXOs are sorted from
    +        // We put the "required UTXOs" first and make sure the optional UTXOs are sorted from
             // oldest to newest according to blocktime
    -        // For utxo that doesn't exist in DB, they will have lowest priority to be selected
    +        // For utxo that doesn't exist in DB, they will have lowest priority to be selected
             let utxos = {
                 optional_utxos.sort_unstable_by_key(|wu| match &wu.utxo {
                     Utxo::Local(local) => Some(local.confirmation_time),
    @@ -1915,7 +1914,7 @@
         // drain_output_len = size(len(script_pubkey)) + len(script_pubkey) + size(output_value)
         let drain_output_len = serialize(drain_script).len() + 8usize;
         let change_fee =
    -        (fee_rate * Weight::from_vb(drain_output_len as u64).expect("overflow occurred")).to_sat();
    +        (fee_rate * Weight::from_vb(drain_output_len as u64).expect("overflow occurred")).to_sat();
         let drain_val = remaining_amount.saturating_sub(change_fee);
     
         if drain_val.is_dust(drain_script) {
    @@ -2008,7 +2007,7 @@
     
     /// Branch and bound coin selection
     ///
    -/// Code adapted from Bitcoin Core's implementation and from Mark Erhardt Master's Thesis: <http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf>
    +/// Code adapted from Bitcoin Core's implementation and from Mark Erhardt Master's Thesis: <http://murch.one/wp-content/uploads/2016/11/erhardt2016coinselection.pdf>
     #[derive(Debug, Clone)]
     pub struct BranchAndBoundCoinSelection {
         size_of_change: u64,
    @@ -2064,7 +2063,7 @@
                 .fold(0, |acc, x| acc + x.effective_value);
     
             let cost_of_change =
    -            (Weight::from_vb(self.size_of_change).expect("overflow occurred") * fee_rate).to_sat();
    +            (Weight::from_vb(self.size_of_change).expect("overflow occurred") * fee_rate).to_sat();
     
             // `curr_value` and `curr_available_value` are both the sum of *effective_values* of
             // the UTXOs. For the optional UTXOs (curr_available_value) we filter out UTXOs with
    @@ -2075,7 +2074,7 @@
             // be negative as well.
             //
             // If the sum of curr_value and curr_available_value is negative or lower than our target,
    -        // we can immediately exit with an error, as it's guaranteed we will never find a solution
    +        // we can immediately exit with an error, as it's guaranteed we will never find a solution
             // if we actually run the BnB.
             let total_value: Result<u64, _> = (curr_available_value + curr_value).try_into();
             match total_value {
    @@ -2103,11 +2102,11 @@
     
             let target_amount = target_amount
                 .try_into()
    -            .expect("Bitcoin amount to fit into i64");
    +            .expect("Bitcoin amount to fit into i64");
     
             if curr_value > target_amount {
    -            // remaining_amount can't be negative as that would mean the
    -            // selection wasn't successful
    +            // remaining_amount can't be negative as that would mean the
    +            // selection wasn't successful
                 // target_amount = amount_needed + (fee_amount - vin_fees)
                 let remaining_amount = (curr_value - target_amount) as u64;
     
    @@ -2161,7 +2160,7 @@
         ) -> Result<CoinSelectionResult, Error> {
             // current_selection[i] will contain true if we are using optional_utxos[i],
             // false otherwise. Note that current_selection.len() could be less than
    -        // optional_utxos.len(), it just means that we still haven't decided if we should keep
    +        // optional_utxos.len(), it just means that we still haven't decided if we should keep
             // certain optional_utxos or not.
             let mut current_selection: Vec<bool> = Vec::with_capacity(optional_utxos.len());
     
    @@ -2185,11 +2184,11 @@
                 {
                     backtrack = true;
                 } else if curr_value >= target_amount {
    -                // Selected value is within range, there's no point in going forward. Start
    +                // Selected value is within range, there's no point in going forward. Start
                     // backtracking
                     backtrack = true;
     
    -                // If we found a solution better than the previous one, or if there wasn't previous
    +                // If we found a solution better than the previous one, or if there wasn't previous
                     // solution, update the best solution
                     if best_selection_value.is_none() || curr_value < best_selection_value.unwrap() {
                         best_selection.clone_from(&current_selection);
    @@ -2212,7 +2211,7 @@
     
                     if current_selection.last_mut().is_none() {
                         // We have walked back to the first utxo and no branch is untraversed. All solutions searched
    -                    // If best selection is empty, then there's no exact match
    +                    // If best selection is empty, then there's no exact match
                         if best_selection.is_empty() {
                             return Err(Error::BnBNoExactMatch);
                         }
    @@ -2253,8 +2252,8 @@
     
             let selected_amount = best_selection_value.unwrap();
     
    -        // remaining_amount can't be negative as that would mean the
    -        // selection wasn't successful
    +        // remaining_amount can't be negative as that would mean the
    +        // selection wasn't successful
             // target_amount = amount_needed + (fee_amount - vin_fees)
             let remaining_amount = (selected_amount - target_amount) as u64;
     
    @@ -2291,8 +2290,8 @@
                 },
             );
     
    -        // remaining_amount can't be negative as that would mean the
    -        // selection wasn't successful
    +        // remaining_amount can't be negative as that would mean the
    +        // selection wasn't successful
             // target_amount = amount_needed + (fee_amount - vin_fees)
             let remaining_amount = (selected_utxos.0 - target_amount) as u64;
     
    @@ -2365,7 +2364,7 @@
         fn utxo(value: u64, index: u32, confirmation_time: ConfirmationTime) -> WeightedUtxo {
             assert!(index < 10);
             let outpoint = OutPoint::from_str(&format!(
    -            "000000000000000000000000000000000000000000000000000000000000000{}:0",
    +            "000000000000000000000000000000000000000000000000000000000000000{}:0",
                 index
             ))
             .unwrap();
    @@ -2433,7 +2432,7 @@
                     satisfaction_weight: P2WPKH_SATISFACTION_SIZE,
                     utxo: Utxo::Local(LocalOutput {
                         outpoint: OutPoint::from_str(&format!(
    -                        "ebd9813ecebc57ff8f30797de7c205e3c7498ca950ea4341ee51a685ff2fa30a:{}",
    +                        "ebd9813ecebc57ff8f30797de7c205e3c7498ca950ea4341ee51a685ff2fa30a:{}",
                             i
                         ))
                         .unwrap(),
    @@ -2464,7 +2463,7 @@
                     satisfaction_weight: P2WPKH_SATISFACTION_SIZE,
                     utxo: Utxo::Local(LocalOutput {
                         outpoint: OutPoint::from_str(&format!(
    -                        "ebd9813ecebc57ff8f30797de7c205e3c7498ca950ea4341ee51a685ff2fa30a:{}",
    +                        "ebd9813ecebc57ff8f30797de7c205e3c7498ca950ea4341ee51a685ff2fa30a:{}",
                             i
                         ))
                         .unwrap(),
    @@ -2554,7 +2553,7 @@
         }
     
         #[test]
    -    #[should_panic(expected = "InsufficientFunds")]
    +    #[should_panic(expected = "InsufficientFunds")]
         fn test_largest_first_coin_selection_insufficient_funds() {
             let utxos = get_test_utxos();
             let drain_script = ScriptBuf::default();
    @@ -2572,7 +2571,7 @@
         }
     
         #[test]
    -    #[should_panic(expected = "InsufficientFunds")]
    +    #[should_panic(expected = "InsufficientFunds")]
         fn test_largest_first_coin_selection_insufficient_funds_high_fees() {
             let utxos = get_test_utxos();
             let drain_script = ScriptBuf::default();
    @@ -2653,7 +2652,7 @@
         }
     
         #[test]
    -    #[should_panic(expected = "InsufficientFunds")]
    +    #[should_panic(expected = "InsufficientFunds")]
         fn test_oldest_first_coin_selection_insufficient_funds() {
             let utxos = get_oldest_first_test_utxos();
             let drain_script = ScriptBuf::default();
    @@ -2671,7 +2670,7 @@
         }
     
         #[test]
    -    #[should_panic(expected = "InsufficientFunds")]
    +    #[should_panic(expected = "InsufficientFunds")]
         fn test_oldest_first_coin_selection_insufficient_funds_high_fees() {
             let utxos = get_oldest_first_test_utxos();
     
    @@ -2695,7 +2694,7 @@
     
         #[test]
         fn test_bnb_coin_selection_success() {
    -        // In this case bnb won't find a suitable match and single random draw will
    +        // In this case bnb won't find a suitable match and single random draw will
             // select three outputs
             let utxos = generate_same_value_utxos(100_000, 20);
     
    @@ -2798,7 +2797,7 @@
         }
     
         #[test]
    -    #[should_panic(expected = "InsufficientFunds")]
    +    #[should_panic(expected = "InsufficientFunds")]
         fn test_bnb_coin_selection_insufficient_funds() {
             let utxos = get_test_utxos();
             let drain_script = ScriptBuf::default();
    @@ -2816,7 +2815,7 @@
         }
     
         #[test]
    -    #[should_panic(expected = "InsufficientFunds")]
    +    #[should_panic(expected = "InsufficientFunds")]
         fn test_bnb_coin_selection_insufficient_funds_high_fees() {
             let utxos = get_test_utxos();
             let drain_script = ScriptBuf::default();
    @@ -2837,7 +2836,7 @@
         fn test_bnb_coin_selection_check_fee_rate() {
             let utxos = get_test_utxos();
             let drain_script = ScriptBuf::default();
    -        let target_amount = 99932; // first utxo's effective value
    +        let target_amount = 99932; // first utxo's effective value
             let feerate = FeeRate::BROADCAST_MIN;
     
             let result = BranchAndBoundCoinSelection::new(0)
    @@ -2876,7 +2875,7 @@
         }
     
         #[test]
    -    #[should_panic(expected = "BnBNoExactMatch")]
    +    #[should_panic(expected = "BnBNoExactMatch")]
         fn test_bnb_function_no_exact_match() {
             let fee_rate = FeeRate::from_sat_per_vb_unchecked(10);
             let utxos: Vec<OutputGroup> = get_test_utxos()
    @@ -2906,7 +2905,7 @@
         }
     
         #[test]
    -    #[should_panic(expected = "BnBTotalTriesExceeded")]
    +    #[should_panic(expected = "BnBTotalTriesExceeded")]
         fn test_bnb_function_tries_exceeded() {
             let fee_rate = FeeRate::from_sat_per_vb_unchecked(10);
             let utxos: Vec<OutputGroup> = generate_same_value_utxos(100_000, 100_000)
    @@ -2936,7 +2935,7 @@
                 .unwrap();
         }
     
    -    // The match won't be exact but still in the range
    +    // The match won't be exact but still in the range
         #[test]
         fn test_bnb_function_almost_exact_match_with_fees() {
             let fee_rate = FeeRate::from_sat_per_vb_unchecked(1);
    @@ -3143,65 +3142,64 @@
                 v
             }
     
    -        struct TestCase<'a> {
    -            name: &'a str,
    -            required: &'a [(&'a str, u64)],
    -            optional: &'a [(&'a str, u64)],
    -            exp_required: &'a [(&'a str, u64)],
    -            exp_optional: &'a [(&'a str, u64)],
    +        struct TestCase<'a> {
    +            name: &'a str,
    +            required: &'a [(&'a str, u64)],
    +            optional: &'a [(&'a str, u64)],
    +            exp_required: &'a [(&'a str, u64)],
    +            exp_optional: &'a [(&'a str, u64)],
             }
     
             let test_cases = [
                 TestCase {
    -                name: "no_duplicates",
    -                required: &[("A", 1000), ("B", 2100)],
    -                optional: &[("C", 1000)],
    -                exp_required: &[("A", 1000), ("B", 2100)],
    -                exp_optional: &[("C", 1000)],
    +                name: "no_duplicates",
    +                required: &[("A", 1000), ("B", 2100)],
    +                optional: &[("C", 1000)],
    +                exp_required: &[("A", 1000), ("B", 2100)],
    +                exp_optional: &[("C", 1000)],
                 },
                 TestCase {
    -                name: "duplicate_required_utxos",
    -                required: &[("A", 3000), ("B", 1200), ("C", 1234), ("A", 3000)],
    -                optional: &[("D", 2100)],
    -                exp_required: &[("A", 3000), ("B", 1200), ("C", 1234)],
    -                exp_optional: &[("D", 2100)],
    +                name: "duplicate_required_utxos",
    +                required: &[("A", 3000), ("B", 1200), ("C", 1234), ("A", 3000)],
    +                optional: &[("D", 2100)],
    +                exp_required: &[("A", 3000), ("B", 1200), ("C", 1234)],
    +                exp_optional: &[("D", 2100)],
                 },
                 TestCase {
    -                name: "duplicate_optional_utxos",
    -                required: &[("A", 3000), ("B", 1200)],
    -                optional: &[("C", 5000), ("D", 1300), ("C", 5000)],
    -                exp_required: &[("A", 3000), ("B", 1200)],
    -                exp_optional: &[("C", 5000), ("D", 1300)],
    +                name: "duplicate_optional_utxos",
    +                required: &[("A", 3000), ("B", 1200)],
    +                optional: &[("C", 5000), ("D", 1300), ("C", 5000)],
    +                exp_required: &[("A", 3000), ("B", 1200)],
    +                exp_optional: &[("C", 5000), ("D", 1300)],
                 },
                 TestCase {
    -                name: "duplicate_across_required_and_optional_utxos",
    -                required: &[("A", 3000), ("B", 1200), ("C", 2100)],
    -                optional: &[("A", 3000), ("D", 1200), ("E", 5000)],
    -                exp_required: &[("A", 3000), ("B", 1200), ("C", 2100)],
    -                exp_optional: &[("D", 1200), ("E", 5000)],
    +                name: "duplicate_across_required_and_optional_utxos",
    +                required: &[("A", 3000), ("B", 1200), ("C", 2100)],
    +                optional: &[("A", 3000), ("D", 1200), ("E", 5000)],
    +                exp_required: &[("A", 3000), ("B", 1200), ("C", 2100)],
    +                exp_optional: &[("D", 1200), ("E", 5000)],
                 },
             ];
     
             for (i, t) in test_cases.into_iter().enumerate() {
    -            println!("Case {}: {}", i, t.name);
    +            println!("Case {}: {}", i, t.name);
                 let (required, optional) =
                     filter_duplicates(to_utxo_vec(t.required), to_utxo_vec(t.optional));
                 assert_eq!(
                     required,
                     to_utxo_vec(t.exp_required),
    -                "[{}:{}] unexpected `required` result",
    +                "[{}:{}] unexpected `required` result",
                     i,
                     t.name
                 );
                 assert_eq!(
                     optional,
                     to_utxo_vec(t.exp_optional),
    -                "[{}:{}] unexpected `optional` result",
    +                "[{}:{}] unexpected `optional` result",
                     i,
                     t.name
                 );
             }
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/error.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/error.rs.html index 7aa30fc5f8..c9b9061b48 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/error.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/error.rs.html @@ -1,5 +1,4 @@ -error.rs - source
    1
    +error.rs - source
    1
     2
     3
     4
    @@ -290,7 +289,7 @@
     289
     290
     291
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -323,16 +322,16 @@
     }
     
     impl fmt::Display for MiniscriptPsbtError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
    -            Self::Conversion(err) => write!(f, "Conversion error: {}", err),
    -            Self::UtxoUpdate(err) => write!(f, "UTXO update error: {}", err),
    -            Self::OutputUpdate(err) => write!(f, "Output update error: {}", err),
    +            Self::Conversion(err) => write!(f, "Conversion error: {}", err),
    +            Self::UtxoUpdate(err) => write!(f, "UTXO update error: {}", err),
    +            Self::OutputUpdate(err) => write!(f, "Output update error: {}", err),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for MiniscriptPsbtError {}
     
     #[derive(Debug)]
    @@ -348,7 +347,7 @@
         Policy(PolicyError),
         /// Spending policy is not compatible with this [`KeychainKind`]
         SpendingPolicyRequired(KeychainKind),
    -    /// Requested invalid transaction version '0'
    +    /// Requested invalid transaction version '0'
         Version0,
         /// Requested transaction version `1`, but at least `2` is needed to use OP_CSV
         Version1Csv,
    @@ -386,7 +385,7 @@
         ChangePolicyDescriptor,
         /// There was an error with coin selection
         CoinSelection(coin_selection::Error),
    -    /// Wallet's UTXO set is not enough to cover recipient's requested plus fee
    +    /// Wallet's UTXO set is not enough to cover recipient's requested plus fee
         InsufficientFunds {
             /// Sats needed for some transaction
             needed: u64,
    @@ -412,92 +411,92 @@
     }
     
     impl fmt::Display for CreateTxError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 Self::Descriptor(e) => e.fmt(f),
                 Self::Persist(e) => {
                     write!(
                         f,
    -                    "failed to load wallet data from or write wallet data to persistence backend: {}",
    +                    "failed to load wallet data from or write wallet data to persistence backend: {}",
                         e
                     )
                 }
                 Self::Policy(e) => e.fmt(f),
                 CreateTxError::SpendingPolicyRequired(keychain_kind) => {
    -                write!(f, "Spending policy required: {:?}", keychain_kind)
    +                write!(f, "Spending policy required: {:?}", keychain_kind)
                 }
                 CreateTxError::Version0 => {
    -                write!(f, "Invalid version `0`")
    +                write!(f, "Invalid version `0`")
                 }
                 CreateTxError::Version1Csv => {
                     write!(
                         f,
    -                    "TxBuilder requested version `1`, but at least `2` is needed to use OP_CSV"
    +                    "TxBuilder requested version `1`, but at least `2` is needed to use OP_CSV"
                     )
                 }
                 CreateTxError::LockTime {
                     requested,
                     required,
                 } => {
    -                write!(f, "TxBuilder requested timelock of `{:?}`, but at least `{:?}` is required to spend from this script", required, requested)
    +                write!(f, "TxBuilder requested timelock of `{:?}`, but at least `{:?}` is required to spend from this script", required, requested)
                 }
                 CreateTxError::RbfSequence => {
    -                write!(f, "Cannot enable RBF with a nSequence >= 0xFFFFFFFE")
    +                write!(f, "Cannot enable RBF with a nSequence >= 0xFFFFFFFE")
                 }
                 CreateTxError::RbfSequenceCsv { rbf, csv } => {
                     write!(
                         f,
    -                    "Cannot enable RBF with nSequence `{:?}` given a required OP_CSV of `{:?}`",
    +                    "Cannot enable RBF with nSequence `{:?}` given a required OP_CSV of `{:?}`",
                         rbf, csv
                     )
                 }
                 CreateTxError::FeeTooLow { required } => {
    -                write!(f, "Fee to low: required {} sat", required)
    +                write!(f, "Fee to low: required {} sat", required)
                 }
                 CreateTxError::FeeRateTooLow { required } => {
                     write!(
                         f,
                         // Note: alternate fmt as sat/vb (ceil) available in bitcoin-0.31
    -                    //"Fee rate too low: required {required:#}"
    -                    "Fee rate too low: required {} sat/vb",
    +                    //"Fee rate too low: required {required:#}"
    +                    "Fee rate too low: required {} sat/vb",
                         crate::floating_rate!(required)
                     )
                 }
                 CreateTxError::NoUtxosSelected => {
    -                write!(f, "No UTXO selected")
    +                write!(f, "No UTXO selected")
                 }
                 CreateTxError::OutputBelowDustLimit(limit) => {
    -                write!(f, "Output below the dust limit: {}", limit)
    +                write!(f, "Output below the dust limit: {}", limit)
                 }
                 CreateTxError::ChangePolicyDescriptor => {
                     write!(
                         f,
    -                    "The `change_policy` can be set only if the wallet has a change_descriptor"
    +                    "The `change_policy` can be set only if the wallet has a change_descriptor"
                     )
                 }
                 CreateTxError::CoinSelection(e) => e.fmt(f),
                 CreateTxError::InsufficientFunds { needed, available } => {
                     write!(
                         f,
    -                    "Insufficient funds: {} sat available of {} sat needed",
    +                    "Insufficient funds: {} sat available of {} sat needed",
                         available, needed
                     )
                 }
                 CreateTxError::NoRecipients => {
    -                write!(f, "Cannot build tx without recipients")
    +                write!(f, "Cannot build tx without recipients")
                 }
                 CreateTxError::Psbt(e) => e.fmt(f),
                 CreateTxError::MissingKeyOrigin(err) => {
    -                write!(f, "Missing key origin: {}", err)
    +                write!(f, "Missing key origin: {}", err)
                 }
                 CreateTxError::UnknownUtxo => {
    -                write!(f, "UTXO not found in the internal database")
    +                write!(f, "UTXO not found in the internal database")
                 }
                 CreateTxError::MissingNonWitnessUtxo(outpoint) => {
    -                write!(f, "Missing non_witness_utxo on foreign utxo {}", outpoint)
    +                write!(f, "Missing non_witness_utxo on foreign utxo {}", outpoint)
                 }
                 CreateTxError::MiniscriptPsbt(err) => {
    -                write!(f, "Miniscript PSBT error: {}", err)
    +                write!(f, "Miniscript PSBT error: {}", err)
                 }
             }
         }
    @@ -533,7 +532,7 @@
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for CreateTxError {}
     
     #[derive(Debug)]
    @@ -549,37 +548,36 @@
         TransactionConfirmed(Txid),
         /// Trying to replace a tx that has a sequence >= `0xFFFFFFFE`
         IrreplaceableTransaction(Txid),
    -    /// Node doesn't have data to estimate a fee rate
    +    /// Node doesn't have data to estimate a fee rate
         FeeRateUnavailable,
     }
     
     impl fmt::Display for BuildFeeBumpError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 Self::UnknownUtxo(outpoint) => write!(
                     f,
    -                "UTXO not found in the internal database with txid: {}, vout: {}",
    +                "UTXO not found in the internal database with txid: {}, vout: {}",
                     outpoint.txid, outpoint.vout
                 ),
                 Self::TransactionNotFound(txid) => {
                     write!(
                         f,
    -                    "Transaction not found in the internal database with txid: {}",
    +                    "Transaction not found in the internal database with txid: {}",
                         txid
                     )
                 }
                 Self::TransactionConfirmed(txid) => {
    -                write!(f, "Transaction already confirmed with txid: {}", txid)
    +                write!(f, "Transaction already confirmed with txid: {}", txid)
                 }
                 Self::IrreplaceableTransaction(txid) => {
    -                write!(f, "Transaction can't be replaced with txid: {}", txid)
    +                write!(f, "Transaction can't be replaced with txid: {}", txid)
                 }
    -            Self::FeeRateUnavailable => write!(f, "Fee rate unavailable"),
    +            Self::FeeRateUnavailable => write!(f, "Fee rate unavailable"),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for BuildFeeBumpError {}
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/export.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/export.rs.html index 769d87c3e8..f6996aed7b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/export.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/export.rs.html @@ -1,5 +1,4 @@ -export.rs - source
    1
    +export.rs - source
    1
     2
     3
     4
    @@ -340,7 +339,7 @@
     339
     340
     341
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -364,11 +363,11 @@
     //! # use bitcoin::*;
     //! # use bdk_wallet::wallet::export::*;
     //! # use bdk_wallet::*;
    -//! let import = r#"{
    -//!     "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
    -//!     "blockheight":1782088,
    -//!     "label":"testnet"
    -//! }"#;
    +//! let import = r#"{
    +//!     "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
    +//!     "blockheight":1782088,
    +//!     "label":"testnet"
    +//! }"#;
     //!
     //! let import = FullyNodedExport::from_str(import)?;
     //! let wallet = Wallet::new_no_persist(
    @@ -385,13 +384,13 @@
     //! # use bdk_wallet::wallet::export::*;
     //! # use bdk_wallet::*;
     //! let wallet = Wallet::new_no_persist(
    -//!     "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
    -//!     Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),
    +//!     "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
    +//!     Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),
     //!     Network::Testnet,
     //! )?;
    -//! let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
    +//! let export = FullyNodedExport::export_wallet(&wallet, "exported wallet", true).unwrap();
     //!
    -//! println!("Exported: {}", export.to_string());
    +//! println!("Exported: {}", export.to_string());
     //! # Ok::<_, Box<dyn std::error::Error>>(())
     //! ```
     
    @@ -407,24 +406,24 @@
     use crate::wallet::Wallet;
     
     /// Alias for [`FullyNodedExport`]
    -#[deprecated(since = "0.18.0", note = "Please use [`FullyNodedExport`] instead")]
    +#[deprecated(since = "0.18.0", note = "Please use [`FullyNodedExport`] instead")]
     pub type WalletExport = FullyNodedExport;
     
     /// Structure that contains the export of a wallet
     ///
    -/// For a usage example see [this module](crate::wallet::export)'s documentation.
    +/// For a usage example see [this module](crate::wallet::export)'s documentation.
     #[derive(Debug, Serialize, Deserialize)]
     pub struct FullyNodedExport {
         descriptor: String,
    -    /// Earliest block to rescan when looking for the wallet's transactions
    +    /// Earliest block to rescan when looking for the wallet's transactions
         pub blockheight: u32,
         /// Arbitrary label for the wallet
         pub label: String,
     }
     
     impl fmt::Display for FullyNodedExport {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        write!(f, "{}", serde_json::to_string(self).unwrap())
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        write!(f, "{}", serde_json::to_string(self).unwrap())
         }
     }
     
    @@ -437,17 +436,17 @@
     }
     
     fn remove_checksum(s: String) -> String {
    -    s.split_once('#').map(|(a, _)| String::from(a)).unwrap()
    +    s.split_once('#').map(|(a, _)| String::from(a)).unwrap()
     }
     
     impl FullyNodedExport {
         /// Export a wallet
         ///
    -    /// This function returns an error if it determines that the `wallet`'s descriptor(s) are not
    -    /// supported by Bitcoin Core or don't follow the standard derivation paths defined by BIP44
    +    /// This function returns an error if it determines that the `wallet`'s descriptor(s) are not
    +    /// supported by Bitcoin Core or don't follow the standard derivation paths defined by BIP44
         /// and others.
         ///
    -    /// If `include_blockheight` is `true`, this function will look into the `wallet`'s database
    +    /// If `include_blockheight` is `true`, this function will look into the `wallet`'s database
         /// for the oldest transaction it knows and use that as the earliest block to rescan.
         ///
         /// If the database is empty or `include_blockheight` is false, the `blockheight` field
    @@ -456,7 +455,7 @@
             wallet: &Wallet,
             label: &str,
             include_blockheight: bool,
    -    ) -> Result<Self, &'static str> {
    +    ) -> Result<Self, &'static str> {
             let descriptor = wallet
                 .get_descriptor_for_keychain(KeychainKind::External)
                 .to_string_with_secret(
    @@ -498,25 +497,25 @@
                 }
             };
             if export.change_descriptor() != change_descriptor {
    -            return Err("Incompatible change descriptor");
    +            return Err("Incompatible change descriptor");
             }
     
             Ok(export)
         }
     
    -    fn is_compatible_with_core(descriptor: &str) -> Result<(), &'static str> {
    +    fn is_compatible_with_core(descriptor: &str) -> Result<(), &'static str> {
             fn check_ms<Ctx: ScriptContext>(
                 terminal: &Terminal<String, Ctx>,
    -        ) -> Result<(), &'static str> {
    +        ) -> Result<(), &'static str> {
                 if let Terminal::Multi(_, _) = terminal {
                     Ok(())
                 } else {
    -                Err("The descriptor contains operators not supported by Bitcoin Core")
    +                Err("The descriptor contains operators not supported by Bitcoin Core")
                 }
             }
     
             // pkh(), wpkh(), sh(wpkh()) are always fine, as well as multi() and sortedmulti()
    -        match Descriptor::<String>::from_str(descriptor).map_err(|_| "Invalid descriptor")? {
    +        match Descriptor::<String>::from_str(descriptor).map_err(|_| "Invalid descriptor")? {
                 Descriptor::Pkh(_) | Descriptor::Wpkh(_) => Ok(()),
                 Descriptor::Sh(sh) => match sh.as_inner() {
                     ShInner::Wpkh(_) => Ok(()),
    @@ -531,7 +530,7 @@
                     WshInner::SortedMulti(_) => Ok(()),
                     WshInner::Ms(ms) => check_ms(&ms.node),
                 },
    -            _ => Err("The descriptor is not compatible with Bitcoin Core"),
    +            _ => Err("The descriptor is not compatible with Bitcoin Core"),
             }
         }
     
    @@ -542,7 +541,7 @@
     
         /// Return the internal descriptor, if present
         pub fn change_descriptor(&self) -> Option<String> {
    -        let replaced = self.descriptor.replace("/0/*", "/1/*");
    +        let replaced = self.descriptor.replace("/0/*", "/1/*");
     
             if replaced != self.descriptor {
                 Some(replaced)
    @@ -596,90 +595,89 @@
     
         #[test]
         fn test_export_bip44() {
    -        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    -        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
    +        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    +        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
     
             let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Bitcoin);
    -        let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
    +        let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
     
             assert_eq!(export.descriptor(), descriptor);
             assert_eq!(export.change_descriptor(), Some(change_descriptor.into()));
             assert_eq!(export.blockheight, 5000);
    -        assert_eq!(export.label, "Test Label");
    +        assert_eq!(export.label, "Test Label");
         }
     
         #[test]
    -    #[should_panic(expected = "Incompatible change descriptor")]
    +    #[should_panic(expected = "Incompatible change descriptor")]
         fn test_export_no_change() {
    -        // This wallet explicitly doesn't have a change descriptor. It should be impossible to
    +        // This wallet explicitly doesn't have a change descriptor. It should be impossible to
             // export, because exporting this kind of external descriptor normally implies the
             // existence of an internal descriptor
     
    -        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    +        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
     
             let wallet = get_test_wallet(descriptor, None, Network::Bitcoin);
    -        FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
    +        FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
         }
     
         #[test]
    -    #[should_panic(expected = "Incompatible change descriptor")]
    +    #[should_panic(expected = "Incompatible change descriptor")]
         fn test_export_incompatible_change() {
    -        // This wallet has a change descriptor, but the derivation path is not in the "standard"
    +        // This wallet has a change descriptor, but the derivation path is not in the "standard"
             // bip44/49/etc format
     
    -        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    -        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/50'/0'/1/*)";
    +        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    +        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/50'/0'/1/*)";
     
             let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Bitcoin);
    -        FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
    +        FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
         }
     
         #[test]
         fn test_export_multi() {
    -        let descriptor = "wsh(multi(2,\
    -                                [73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/0/*,\
    -                                [f9f62194/48'/0'/0'/2']tpubDDp3ZSH1yCwusRppH7zgSxq2t1VEUyXSeEp8E5aFS8m43MknUjiF1bSLo3CGWAxbDyhF1XowA5ukPzyJZjznYk3kYi6oe7QxtX2euvKWsk4/0/*,\
    -                                [c98b1535/48'/0'/0'/2']tpubDCDi5W4sP6zSnzJeowy8rQDVhBdRARaPhK1axABi8V1661wEPeanpEXj4ZLAUEoikVtoWcyK26TKKJSecSfeKxwHCcRrge9k1ybuiL71z4a/0/*\
    -                          ))";
    -        let change_descriptor = "wsh(multi(2,\
    -                                       [73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/1/*,\
    -                                       [f9f62194/48'/0'/0'/2']tpubDDp3ZSH1yCwusRppH7zgSxq2t1VEUyXSeEp8E5aFS8m43MknUjiF1bSLo3CGWAxbDyhF1XowA5ukPzyJZjznYk3kYi6oe7QxtX2euvKWsk4/1/*,\
    -                                       [c98b1535/48'/0'/0'/2']tpubDCDi5W4sP6zSnzJeowy8rQDVhBdRARaPhK1axABi8V1661wEPeanpEXj4ZLAUEoikVtoWcyK26TKKJSecSfeKxwHCcRrge9k1ybuiL71z4a/1/*\
    -                                 ))";
    +        let descriptor = "wsh(multi(2,\
    +                                [73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/0/*,\
    +                                [f9f62194/48'/0'/0'/2']tpubDDp3ZSH1yCwusRppH7zgSxq2t1VEUyXSeEp8E5aFS8m43MknUjiF1bSLo3CGWAxbDyhF1XowA5ukPzyJZjznYk3kYi6oe7QxtX2euvKWsk4/0/*,\
    +                                [c98b1535/48'/0'/0'/2']tpubDCDi5W4sP6zSnzJeowy8rQDVhBdRARaPhK1axABi8V1661wEPeanpEXj4ZLAUEoikVtoWcyK26TKKJSecSfeKxwHCcRrge9k1ybuiL71z4a/0/*\
    +                          ))";
    +        let change_descriptor = "wsh(multi(2,\
    +                                       [73756c7f/48'/0'/0'/2']tpubDCKxNyM3bLgbEX13Mcd8mYxbVg9ajDkWXMh29hMWBurKfVmBfWAM96QVP3zaUcN51HvkZ3ar4VwP82kC8JZhhux8vFQoJintSpVBwpFvyU3/1/*,\
    +                                       [f9f62194/48'/0'/0'/2']tpubDDp3ZSH1yCwusRppH7zgSxq2t1VEUyXSeEp8E5aFS8m43MknUjiF1bSLo3CGWAxbDyhF1XowA5ukPzyJZjznYk3kYi6oe7QxtX2euvKWsk4/1/*,\
    +                                       [c98b1535/48'/0'/0'/2']tpubDCDi5W4sP6zSnzJeowy8rQDVhBdRARaPhK1axABi8V1661wEPeanpEXj4ZLAUEoikVtoWcyK26TKKJSecSfeKxwHCcRrge9k1ybuiL71z4a/1/*\
    +                                 ))";
     
             let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Testnet);
    -        let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
    +        let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
     
             assert_eq!(export.descriptor(), descriptor);
             assert_eq!(export.change_descriptor(), Some(change_descriptor.into()));
             assert_eq!(export.blockheight, 5000);
    -        assert_eq!(export.label, "Test Label");
    +        assert_eq!(export.label, "Test Label");
         }
     
         #[test]
         fn test_export_to_json() {
    -        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    -        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
    +        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    +        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
     
             let wallet = get_test_wallet(descriptor, Some(change_descriptor), Network::Bitcoin);
    -        let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
    +        let export = FullyNodedExport::export_wallet(&wallet, "Test Label", true).unwrap();
     
    -        assert_eq!(export.to_string(), "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}");
    +        assert_eq!(export.to_string(), "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}");
         }
     
         #[test]
         fn test_export_from_json() {
    -        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    -        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
    +        let descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/0/*)";
    +        let change_descriptor = "wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44'/0'/0'/1/*)";
     
    -        let import_str = "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}";
    +        let import_str = "{\"descriptor\":\"wpkh(xprv9s21ZrQH143K4CTb63EaMxja1YiTnSEWKMbn23uoEnAzxjdUJRQkazCAtzxGm4LSoTSVTptoV9RbchnKPW9HxKtZumdyxyikZFDLhogJ5Uj/44\'/0\'/0\'/0/*)\",\"blockheight\":5000,\"label\":\"Test Label\"}";
             let export = FullyNodedExport::from_str(import_str).unwrap();
     
             assert_eq!(export.descriptor(), descriptor);
             assert_eq!(export.change_descriptor(), Some(change_descriptor.into()));
             assert_eq!(export.blockheight, 5000);
    -        assert_eq!(export.label, "Test Label");
    +        assert_eq!(export.label, "Test Label");
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/mod.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/mod.rs.html index cc7eadab31..46dceb9b7a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/mod.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/mod.rs.html @@ -1,5 +1,4 @@ -mod.rs - source
    1
    +mod.rs - source
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -2731,7 +2666,7 @@
     pub use bdk_chain::keychain::Balance;
     use bdk_chain::{
         indexed_tx_graph,
    -    keychain::{self, KeychainTxOutIndex},
    +    keychain::KeychainTxOutIndex,
         local_chain::{
             self, ApplyHeaderError, CannotConnectError, CheckPoint, CheckPointIter, LocalChain,
         },
    @@ -2813,10 +2748,10 @@
         /// [`KeychainTxOutIndex`].
         pub last_active_indices: BTreeMap<KeychainKind, u32>,
     
    -    /// Update for the wallet's internal [`TxGraph`].
    +    /// Update for the wallet's internal [`TxGraph`].
         pub graph: TxGraph<ConfirmationTimeHeightAnchor>,
     
    -    /// Update for the wallet's internal [`LocalChain`].
    +    /// Update for the wallet's internal [`LocalChain`].
         ///
         /// [`LocalChain`]: local_chain::LocalChain
         pub chain: Option<CheckPoint>,
    @@ -2843,72 +2778,7 @@
     }
     
     /// The changes made to a wallet by applying an [`Update`].
    -#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize, Default)]
    -pub struct ChangeSet {
    -    /// Changes to the [`LocalChain`].
    -    ///
    -    /// [`LocalChain`]: local_chain::LocalChain
    -    pub chain: local_chain::ChangeSet,
    -
    -    /// Changes to [`IndexedTxGraph`].
    -    ///
    -    /// [`IndexedTxGraph`]: bdk_chain::indexed_tx_graph::IndexedTxGraph
    -    pub indexed_tx_graph: indexed_tx_graph::ChangeSet<
    -        ConfirmationTimeHeightAnchor,
    -        keychain::ChangeSet<KeychainKind>,
    -    >,
    -
    -    /// Stores the network type of the wallet.
    -    pub network: Option<Network>,
    -}
    -
    -impl Append for ChangeSet {
    -    fn append(&mut self, other: Self) {
    -        Append::append(&mut self.chain, other.chain);
    -        Append::append(&mut self.indexed_tx_graph, other.indexed_tx_graph);
    -        if other.network.is_some() {
    -            debug_assert!(
    -                self.network.is_none() || self.network == other.network,
    -                "network type must be consistent"
    -            );
    -            self.network = other.network;
    -        }
    -    }
    -
    -    fn is_empty(&self) -> bool {
    -        self.chain.is_empty() && self.indexed_tx_graph.is_empty()
    -    }
    -}
    -
    -impl From<local_chain::ChangeSet> for ChangeSet {
    -    fn from(chain: local_chain::ChangeSet) -> Self {
    -        Self {
    -            chain,
    -            ..Default::default()
    -        }
    -    }
    -}
    -
    -impl
    -    From<
    -        indexed_tx_graph::ChangeSet<
    -            ConfirmationTimeHeightAnchor,
    -            keychain::ChangeSet<KeychainKind>,
    -        >,
    -    > for ChangeSet
    -{
    -    fn from(
    -        indexed_tx_graph: indexed_tx_graph::ChangeSet<
    -            ConfirmationTimeHeightAnchor,
    -            keychain::ChangeSet<KeychainKind>,
    -        >,
    -    ) -> Self {
    -        Self {
    -            indexed_tx_graph,
    -            ..Default::default()
    -        }
    -    }
    -}
    +pub type ChangeSet = bdk_persist::CombinedChangeSet<KeychainKind, ConfirmationTimeHeightAnchor>;
     
     /// A derived address and the index it was found at.
     /// For convenience this automatically derefs to `Address`
    @@ -2931,8 +2801,8 @@
     }
     
     impl fmt::Display for AddressInfo {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    -        write!(f, "{}", self.address)
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +        write!(f, "{}", self.address)
         }
     }
     
    @@ -2944,9 +2814,9 @@
             network: Network,
         ) -> Result<Self, DescriptorError> {
             Self::new(descriptor, change_descriptor, (), network).map_err(|e| match e {
    -            NewError::NonEmptyDatabase => unreachable!("mock-database cannot have data"),
    +            NewError::NonEmptyDatabase => unreachable!("mock-database cannot have data"),
                 NewError::Descriptor(e) => e,
    -            NewError::Persist(_) => unreachable!("mock-write must always succeed"),
    +            NewError::Persist(_) => unreachable!("mock-write must always succeed"),
             })
         }
     
    @@ -2959,9 +2829,9 @@
         ) -> Result<Self, crate::descriptor::DescriptorError> {
             Self::new_with_genesis_hash(descriptor, change_descriptor, (), network, genesis_hash)
                 .map_err(|e| match e {
    -                NewError::NonEmptyDatabase => unreachable!("mock-database cannot have data"),
    +                NewError::NonEmptyDatabase => unreachable!("mock-database cannot have data"),
                     NewError::Descriptor(e) => e,
    -                NewError::Persist(_) => unreachable!("mock-write must always succeed"),
    +                NewError::Persist(_) => unreachable!("mock-write must always succeed"),
                 })
         }
     }
    @@ -2978,16 +2848,16 @@
         NonEmptyDatabase,
         /// There was problem with the passed-in descriptor(s).
         Descriptor(crate::descriptor::DescriptorError),
    -    /// We were unable to write the wallet's data to the persistence backend.
    +    /// We were unable to write the wallet's data to the persistence backend.
         Persist(anyhow::Error),
     }
     
     impl fmt::Display for NewError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 NewError::NonEmptyDatabase => write!(
                     f,
    -                "database already has data - use `load` or `new_or_load` methods instead"
    +                "database already has data - use `load` or `new_or_load` methods instead"
                 ),
                 NewError::Descriptor(e) => e.fmt(f),
                 NewError::Persist(e) => e.fmt(f),
    @@ -2995,7 +2865,7 @@
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for NewError {}
     
     /// The error type when loading a [`Wallet`] from persistence.
    @@ -3020,21 +2890,21 @@
     }
     
     impl fmt::Display for LoadError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 LoadError::Descriptor(e) => e.fmt(f),
                 LoadError::Persist(e) => e.fmt(f),
                 LoadError::NotInitialized => {
    -                write!(f, "wallet is not initialized, persistence backend is empty")
    +                write!(f, "wallet is not initialized, persistence backend is empty")
                 }
    -            LoadError::MissingNetwork => write!(f, "loaded data is missing network type"),
    -            LoadError::MissingGenesis => write!(f, "loaded data is missing genesis hash"),
    -            LoadError::MissingDescriptor => write!(f, "loaded data is missing descriptor"),
    +            LoadError::MissingNetwork => write!(f, "loaded data is missing network type"),
    +            LoadError::MissingGenesis => write!(f, "loaded data is missing genesis hash"),
    +            LoadError::MissingDescriptor => write!(f, "loaded data is missing descriptor"),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for LoadError {}
     
     /// Error type for when we try load a [`Wallet`] from persistence and creating it if non-existent.
    @@ -3075,27 +2945,27 @@
     }
     
     impl fmt::Display for NewOrLoadError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 NewOrLoadError::Descriptor(e) => e.fmt(f),
                 NewOrLoadError::Persist(e) => write!(
                     f,
    -                "failed to either write to or load from persistence, {}",
    +                "failed to either write to or load from persistence, {}",
                     e
                 ),
                 NewOrLoadError::NotInitialized => {
    -                write!(f, "wallet is not initialized, persistence backend is empty")
    +                write!(f, "wallet is not initialized, persistence backend is empty")
                 }
                 NewOrLoadError::LoadedGenesisDoesNotMatch { expected, got } => {
    -                write!(f, "loaded genesis hash is not {}, got {:?}", expected, got)
    +                write!(f, "loaded genesis hash is not {}, got {:?}", expected, got)
                 }
                 NewOrLoadError::LoadedNetworkDoesNotMatch { expected, got } => {
    -                write!(f, "loaded network type is not {}, got {:?}", expected, got)
    +                write!(f, "loaded network type is not {}, got {:?}", expected, got)
                 }
                 NewOrLoadError::LoadedDescriptorDoesNotMatch { got, keychain } => {
                     write!(
                         f,
    -                    "loaded descriptor is different from what was provided, got {:?} for keychain {:?}",
    +                    "loaded descriptor is different from what was provided, got {:?} for keychain {:?}",
                         got, keychain
                     )
                 }
    @@ -3103,7 +2973,7 @@
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for NewOrLoadError {}
     
     /// An error that may occur when inserting a transaction into [`Wallet`].
    @@ -3112,27 +2982,27 @@
         /// The error variant that occurs when the caller attempts to insert a transaction with a
         /// confirmation height that is greater than the internal chain tip.
         ConfirmationHeightCannotBeGreaterThanTip {
    -        /// The internal chain's tip height.
    +        /// The internal chain's tip height.
             tip_height: u32,
    -        /// The introduced transaction's confirmation height.
    +        /// The introduced transaction's confirmation height.
             tx_height: u32,
         },
     }
     
     impl fmt::Display for InsertTxError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 InsertTxError::ConfirmationHeightCannotBeGreaterThanTip {
                     tip_height,
                     tx_height,
                 } => {
    -                write!(f, "cannot insert tx with confirmation height ({}) higher than internal tip height ({})", tx_height, tip_height)
    +                write!(f, "cannot insert tx with confirmation height ({}) higher than internal tip height ({})", tx_height, tip_height)
                 }
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for InsertTxError {}
     
     /// An error that may occur when applying a block to [`Wallet`].
    @@ -3150,7 +3020,7 @@
     }
     
     impl fmt::Display for ApplyBlockError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 ApplyBlockError::CannotConnect(err) => err.fmt(f),
                 ApplyBlockError::UnexpectedConnectedToHash {
    @@ -3158,14 +3028,14 @@
                     connected_to_hash: checkpoint_hash,
                 } => write!(
                     f,
    -                "`connected_to` hash {} differs from the expected hash {} (which is derived from `block`)",
    +                "`connected_to` hash {} differs from the expected hash {} (which is derived from `block`)",
                     checkpoint_hash, block_hash
                 ),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for ApplyBlockError {}
     
     impl Wallet {
    @@ -3173,7 +3043,7 @@
         pub fn new<E: IntoWalletDescriptor>(
             descriptor: E,
             change_descriptor: Option<E>,
    -        db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
    +        db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
             network: Network,
         ) -> Result<Self, NewError> {
             let genesis_hash = genesis_block(network).block_hash();
    @@ -3187,7 +3057,7 @@
         pub fn new_with_genesis_hash<E: IntoWalletDescriptor>(
             descriptor: E,
             change_descriptor: Option<E>,
    -        mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
    +        mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
             network: Network,
             genesis_hash: BlockHash,
         ) -> Result<Self, NewError> {
    @@ -3228,7 +3098,7 @@
         /// Load [`Wallet`] from the given persistence backend.
         ///
         /// Note that the descriptor secret keys are not persisted to the db; this means that after
    -    /// calling this method the [`Wallet`] **won't** know the secret keys, and as such, won't be
    +    /// calling this method the [`Wallet`] **won't** know the secret keys, and as such, won't be
         /// able to sign transactions.
         ///
         /// If you wish to use the wallet to sign transactions, you need to add the secret keys
    @@ -3240,16 +3110,17 @@
         /// # use bdk_wallet::descriptor::Descriptor;
         /// # use bitcoin::key::Secp256k1;
         /// # use bdk_wallet::KeychainKind;
    -    /// # use bdk_file_store::Store;
    +    /// # use bdk_sqlite::{Store, rusqlite::Connection};
         /// #
         /// # fn main() -> Result<(), anyhow::Error> {
    -    /// # let temp_dir = tempfile::tempdir().expect("must create tempdir");
    -    /// # let file_path = temp_dir.path().join("store.db");
    -    /// # let db: Store<bdk_wallet::wallet::ChangeSet> = Store::create_new(&[], &file_path).expect("must create db");
    +    /// # let temp_dir = tempfile::tempdir().expect("must create tempdir");
    +    /// # let file_path = temp_dir.path().join("store.db");
    +    /// # let conn = Connection::open(file_path).expect("must open connection");
    +    /// # let db = Store::new(conn).expect("must create db");
         /// let secp = Secp256k1::new();
         ///
    -    /// let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
    -    /// let (internal_descriptor, internal_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)").unwrap();
    +    /// let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
    +    /// let (internal_descriptor, internal_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)").unwrap();
         ///
         /// let external_signer_container = SignersContainer::build(external_keymap, &external_descriptor, &secp);
         /// let internal_signer_container = SignersContainer::build(internal_keymap, &internal_descriptor, &secp);
    @@ -3267,7 +3138,7 @@
         /// Alternatively, you can call [`Wallet::new_or_load`], which will add the private keys of the
         /// passed-in descriptors to the [`Wallet`].
         pub fn load(
    -        mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
    +        mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
         ) -> Result<Self, LoadError> {
             let changeset = db
                 .load_from_persistence()
    @@ -3277,7 +3148,7 @@
         }
     
         fn load_from_changeset(
    -        db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
    +        db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
             changeset: ChangeSet,
         ) -> Result<Self, LoadError> {
             let secp = Secp256k1::new();
    @@ -3301,7 +3172,7 @@
     
             let (signers, change_signers) =
                 create_signers(&mut index, &secp, descriptor, change_descriptor, network)
    -                .expect("Can't fail: we passed in valid descriptors, recovered from the changeset");
    +                .expect("Can't fail: we passed in valid descriptors, recovered from the changeset");
     
             let mut indexed_graph = IndexedTxGraph::new(index);
             indexed_graph.apply_changeset(changeset.indexed_tx_graph);
    @@ -3325,7 +3196,7 @@
         pub fn new_or_load<E: IntoWalletDescriptor>(
             descriptor: E,
             change_descriptor: Option<E>,
    -        db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
    +        db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
             network: Network,
         ) -> Result<Self, NewOrLoadError> {
             let genesis_hash = genesis_block(network).block_hash();
    @@ -3347,7 +3218,7 @@
         pub fn new_or_load_with_genesis_hash<E: IntoWalletDescriptor>(
             descriptor: E,
             change_descriptor: Option<E>,
    -        mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
    +        mut db: impl PersistBackend<ChangeSet> + Send + Sync + 'static,
             network: Network,
             genesis_hash: BlockHash,
         ) -> Result<Self, NewOrLoadError> {
    @@ -3463,7 +3334,7 @@
                 )
                 .map_err(|e| match e {
                     NewError::NonEmptyDatabase => {
    -                    unreachable!("database is already checked to have no data")
    +                    unreachable!("database is already checked to have no data")
                     }
                     NewError::Descriptor(e) => NewOrLoadError::Descriptor(e),
                     NewError::Persist(e) => NewOrLoadError::Persist(e),
    @@ -3495,24 +3366,24 @@
                 .indexed_graph
                 .index
                 .unbounded_spk_iter(&keychain)
    -            .expect("Must exist (we called map_keychain)");
    +            .expect("Must exist (we called map_keychain)");
             if !spk_iter.descriptor().has_wildcard() {
                 index = 0;
             }
             let (index, spk) = spk_iter
                 .nth(index as usize)
    -            .expect("derivation index is out of bounds");
    +            .expect("derivation index is out of bounds");
     
             AddressInfo {
                 index,
    -            address: Address::from_script(&spk, self.network).expect("must have address form"),
    +            address: Address::from_script(&spk, self.network).expect("must have address form"),
                 keychain,
             }
         }
     
         /// Attempt to reveal the next address of the given `keychain`.
         ///
    -    /// This will increment the internal derivation index. If the keychain's descriptor doesn't
    +    /// This will increment the internal derivation index. If the keychain's descriptor doesn't
         /// contain a wildcard or every address is already revealed up to the maximum derivation
         /// index defined in [BIP32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki),
         /// then returns the last revealed address.
    @@ -3526,14 +3397,14 @@
                 .indexed_graph
                 .index
                 .reveal_next_spk(&keychain)
    -            .expect("Must exist (we called map_keychain)");
    +            .expect("Must exist (we called map_keychain)");
     
             self.persist
                 .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
     
             Ok(AddressInfo {
                 index,
    -            address: Address::from_script(spk, self.network).expect("must have address form"),
    +            address: Address::from_script(spk, self.network).expect("must have address form"),
                 keychain,
             })
         }
    @@ -3552,26 +3423,26 @@
             &mut self,
             keychain: KeychainKind,
             index: u32,
    -    ) -> anyhow::Result<impl Iterator<Item = AddressInfo> + '_> {
    +    ) -> anyhow::Result<impl Iterator<Item = AddressInfo> + '_> {
             let keychain = self.map_keychain(keychain);
             let (spk_iter, index_changeset) = self
                 .indexed_graph
                 .index
                 .reveal_to_target(&keychain, index)
    -            .expect("must exist (we called map_keychain)");
    +            .expect("must exist (we called map_keychain)");
     
             self.persist
                 .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
     
             Ok(spk_iter.map(move |(index, spk)| AddressInfo {
                 index,
    -            address: Address::from_script(&spk, self.network).expect("must have address form"),
    +            address: Address::from_script(&spk, self.network).expect("must have address form"),
                 keychain,
             }))
         }
     
         /// Get the next unused address for the given `keychain`, i.e. the address with the lowest
    -    /// derivation index that hasn't been used.
    +    /// derivation index that hasn't been used.
         ///
         /// This will attempt to derive and reveal a new address if no newly revealed addresses
         /// are available. See also [`reveal_next_address`](Self::reveal_next_address).
    @@ -3585,14 +3456,14 @@
                 .indexed_graph
                 .index
                 .next_unused_spk(&keychain)
    -            .expect("must exist (we called map_keychain)");
    +            .expect("must exist (we called map_keychain)");
     
             self.persist
                 .stage_and_commit(indexed_tx_graph::ChangeSet::from(index_changeset).into())?;
     
             Ok(AddressInfo {
                 index,
    -            address: Address::from_script(spk, self.network).expect("must have address form"),
    +            address: Address::from_script(spk, self.network).expect("must have address form"),
                 keychain,
             })
         }
    @@ -3624,14 +3495,14 @@
         pub fn list_unused_addresses(
             &self,
             keychain: KeychainKind,
    -    ) -> impl DoubleEndedIterator<Item = AddressInfo> + '_ {
    +    ) -> impl DoubleEndedIterator<Item = AddressInfo> + '_ {
             let keychain = self.map_keychain(keychain);
             self.indexed_graph
                 .index
                 .unused_keychain_spks(&keychain)
                 .map(move |(index, spk)| AddressInfo {
                     index,
    -                address: Address::from_script(spk, self.network).expect("must have address form"),
    +                address: Address::from_script(spk, self.network).expect("must have address form"),
                     keychain,
                 })
         }
    @@ -3649,7 +3520,7 @@
         }
     
         /// Return the list of unspent outputs of this wallet
    -    pub fn list_unspent(&self) -> impl Iterator<Item = LocalOutput> + '_ {
    +    pub fn list_unspent(&self) -> impl Iterator<Item = LocalOutput> + '_ {
             self.indexed_graph
                 .graph()
                 .filter_chain_unspents(
    @@ -3663,7 +3534,7 @@
         /// List all relevant outputs (includes both spent and unspent, confirmed and unconfirmed).
         ///
         /// To list only unspent outputs (UTXOs), use [`Wallet::list_unspent`] instead.
    -    pub fn list_output(&self) -> impl Iterator<Item = LocalOutput> + '_ {
    +    pub fn list_output(&self) -> impl Iterator<Item = LocalOutput> + '_ {
             self.indexed_graph
                 .graph()
                 .filter_chain_txouts(
    @@ -3711,11 +3582,11 @@
             self.indexed_graph
                 .index
                 .unbounded_spk_iter(&keychain)
    -            .expect("Must exist (we called map_keychain)")
    +            .expect("Must exist (we called map_keychain)")
         }
     
         /// Returns the utxo owned by this wallet corresponding to `outpoint` if it exists in the
    -    /// wallet's database.
    +    /// wallet's database.
         pub fn get_utxo(&self, op: OutPoint) -> Option<LocalOutput> {
             let (keychain, index, _) = self.indexed_graph.index.txout(op)?;
             self.indexed_graph
    @@ -3729,9 +3600,9 @@
                 .next()
         }
     
    -    /// Inserts a [`TxOut`] at [`OutPoint`] into the wallet's transaction graph.
    +    /// Inserts a [`TxOut`] at [`OutPoint`] into the wallet's transaction graph.
         ///
    -    /// This is used for providing a previous output's value so that we can use [`calculate_fee`]
    +    /// This is used for providing a previous output's value so that we can use [`calculate_fee`]
         /// or [`calculate_fee_rate`] on a given transaction. Outputs inserted with this method will
         /// not be returned in [`list_unspent`] or [`list_output`].
         ///
    @@ -3764,8 +3635,8 @@
         /// # use bdk_wallet::Wallet;
         /// # let mut wallet: Wallet = todo!();
         /// # let txid:Txid = todo!();
    -    /// let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    -    /// let fee = wallet.calculate_fee(&tx).expect("fee");
    +    /// let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    +    /// let fee = wallet.calculate_fee(&tx).expect("fee");
         /// ```
         ///
         /// ```rust, no_run
    @@ -3773,8 +3644,8 @@
         /// # use bdk_wallet::Wallet;
         /// # let mut wallet: Wallet = todo!();
         /// # let mut psbt: Psbt = todo!();
    -    /// let tx = &psbt.clone().extract_tx().expect("tx");
    -    /// let fee = wallet.calculate_fee(tx).expect("fee");
    +    /// let tx = &psbt.clone().extract_tx().expect("tx");
    +    /// let fee = wallet.calculate_fee(tx).expect("fee");
         /// ```
         /// [`insert_txout`]: Self::insert_txout
         pub fn calculate_fee(&self, tx: &Transaction) -> Result<u64, CalculateFeeError> {
    @@ -3795,8 +3666,8 @@
         /// # use bdk_wallet::Wallet;
         /// # let mut wallet: Wallet = todo!();
         /// # let txid:Txid = todo!();
    -    /// let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    -    /// let fee_rate = wallet.calculate_fee_rate(&tx).expect("fee rate");
    +    /// let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
    +    /// let fee_rate = wallet.calculate_fee_rate(&tx).expect("fee rate");
         /// ```
         ///
         /// ```rust, no_run
    @@ -3804,8 +3675,8 @@
         /// # use bdk_wallet::Wallet;
         /// # let mut wallet: Wallet = todo!();
         /// # let mut psbt: Psbt = todo!();
    -    /// let tx = &psbt.clone().extract_tx().expect("tx");
    -    /// let fee_rate = wallet.calculate_fee_rate(tx).expect("fee rate");
    +    /// let tx = &psbt.clone().extract_tx().expect("tx");
    +    /// let fee_rate = wallet.calculate_fee_rate(tx).expect("fee rate");
         /// ```
         /// [`insert_txout`]: Self::insert_txout
         pub fn calculate_fee_rate(&self, tx: &Transaction) -> Result<FeeRate, CalculateFeeError> {
    @@ -3813,11 +3684,11 @@
                 .map(|fee| Amount::from_sat(fee) / tx.weight())
         }
     
    -    /// Compute the `tx`'s sent and received [`Amount`]s.
    +    /// Compute the `tx`'s sent and received [`Amount`]s.
         ///
         /// This method returns a tuple `(sent, received)`. Sent is the sum of the txin amounts
         /// that spend from previous txouts tracked by this wallet. Received is the summation
    -    /// of this tx's outputs that send to script pubkeys tracked by this wallet.
    +    /// of this tx's outputs that send to script pubkeys tracked by this wallet.
         ///
         /// # Examples
         ///
    @@ -3826,7 +3697,7 @@
         /// # use bdk_wallet::Wallet;
         /// # let mut wallet: Wallet = todo!();
         /// # let txid:Txid = todo!();
    -    /// let tx = wallet.get_tx(txid).expect("tx exists").tx_node.tx;
    +    /// let tx = wallet.get_tx(txid).expect("tx exists").tx_node.tx;
         /// let (sent, received) = wallet.sent_and_received(&tx);
         /// ```
         ///
    @@ -3835,7 +3706,7 @@
         /// # use bdk_wallet::Wallet;
         /// # let mut wallet: Wallet = todo!();
         /// # let mut psbt: Psbt = todo!();
    -    /// let tx = &psbt.clone().extract_tx().expect("tx");
    +    /// let tx = &psbt.clone().extract_tx().expect("tx");
         /// let (sent, received) = wallet.sent_and_received(tx);
         /// ```
         pub fn sent_and_received(&self, tx: &Transaction) -> (Amount, Amount) {
    @@ -3858,15 +3729,15 @@
         /// # let wallet: Wallet = todo!();
         /// # let my_txid: bitcoin::Txid = todo!();
         ///
    -    /// let canonical_tx = wallet.get_tx(my_txid).expect("panic if tx does not exist");
    +    /// let canonical_tx = wallet.get_tx(my_txid).expect("panic if tx does not exist");
         ///
         /// // get reference to full transaction
    -    /// println!("my tx: {:#?}", canonical_tx.tx_node.tx);
    +    /// println!("my tx: {:#?}", canonical_tx.tx_node.tx);
         ///
         /// // list all transaction anchors
         /// for anchor in canonical_tx.tx_node.anchors {
         ///     println!(
    -    ///         "tx is anchored by block of hash {}",
    +    ///         "tx is anchored by block of hash {}",
         ///         anchor.anchor_block().hash
         ///     );
         /// }
    @@ -3874,11 +3745,11 @@
         /// // get confirmation status of transaction
         /// match canonical_tx.chain_position {
         ///     ChainPosition::Confirmed(anchor) => println!(
    -    ///         "tx is confirmed at height {}, we know this since {}:{} is in the best chain",
    +    ///         "tx is confirmed at height {}, we know this since {}:{} is in the best chain",
         ///         anchor.confirmation_height, anchor.anchor_block.height, anchor.anchor_block.hash,
         ///     ),
         ///     ChainPosition::Unconfirmed(last_seen) => println!(
    -    ///         "tx is last seen at {}, it is unconfirmed as it is not anchored in the best chain",
    +    ///         "tx is last seen at {}, it is unconfirmed as it is not anchored in the best chain",
         ///         last_seen,
         ///     ),
         /// }
    @@ -3888,7 +3759,7 @@
         pub fn get_tx(
             &self,
             txid: Txid,
    -    ) -> Option<CanonicalTx<'_, Arc<Transaction>, ConfirmationTimeHeightAnchor>> {
    +    ) -> Option<CanonicalTx<'_, Arc<Transaction>, ConfirmationTimeHeightAnchor>> {
             let graph = self.indexed_graph.graph();
     
             Some(CanonicalTx {
    @@ -3901,7 +3772,7 @@
             })
         }
     
    -    /// Add a new checkpoint to the wallet's internal view of the chain.
    +    /// Add a new checkpoint to the wallet's internal view of the chain.
         /// This stages but does not [`commit`] the change.
         ///
         /// Returns whether anything changed with the insertion (e.g. `false` if checkpoint was already
    @@ -3918,7 +3789,7 @@
             Ok(changed)
         }
     
    -    /// Add a transaction to the wallet's internal view of the chain. This stages but does not
    +    /// Add a transaction to the wallet's internal view of the chain. This stages but does not
         /// [`commit`] the change.
         ///
         /// Returns whether anything changed with the transaction insertion (e.g. `false` if the
    @@ -3929,8 +3800,8 @@
         /// inserting new transactions.
         ///
         /// **WARNING:** If `position` is confirmed, we anchor the `tx` to a the lowest checkpoint that
    -    /// is >= the `position`'s height. The caller is responsible for ensuring the `tx` exists in our
    -    /// local view of the best chain's history.
    +    /// is >= the `position`'s height. The caller is responsible for ensuring the `tx` exists in our
    +    /// local view of the best chain's history.
         ///
         /// [`commit`]: Self::commit
         /// [`latest_checkpoint`]: Self::latest_checkpoint
    @@ -3942,7 +3813,7 @@
         ) -> Result<bool, InsertTxError> {
             let (anchor, last_seen) = match position {
                 ConfirmationTime::Confirmed { height, time } => {
    -                // anchor tx to checkpoint with lowest height that is >= position's height
    +                // anchor tx to checkpoint with lowest height that is >= position's height
                     let anchor = self
                         .chain
                         .range(height..)
    @@ -3980,7 +3851,7 @@
         /// Iterate over the transactions in the wallet.
         pub fn transactions(
             &self,
    -    ) -> impl Iterator<Item = CanonicalTx<'_, Arc<Transaction>, ConfirmationTimeHeightAnchor>> + '_
    +    ) -> impl Iterator<Item = CanonicalTx<'_, Arc<Transaction>, ConfirmationTimeHeightAnchor>> + '_
         {
             self.indexed_graph
                 .graph()
    @@ -4022,10 +3893,10 @@
         /// ```
         /// # use bdk_wallet::{Wallet, KeychainKind};
         /// # use bdk_wallet::bitcoin::Network;
    -    /// let wallet = Wallet::new_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?;
    +    /// let wallet = Wallet::new_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?;
         /// for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
    -    ///     // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
    -    ///     println!("secret_key: {}", secret_key);
    +    ///     // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
    +    ///     println!("secret_key: {}", secret_key);
         /// }
         ///
         /// Ok::<(), Box<dyn std::error::Error>>(())
    @@ -4051,9 +3922,9 @@
         /// # use bdk_wallet::wallet::error::CreateTxError;
         /// # use bdk_persist::PersistBackend;
         /// # use anyhow::Error;
    -    /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
    +    /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
         /// # let mut wallet = doctest_wallet!();
    -    /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
    +    /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
         /// let psbt = {
         ///    let mut builder =  wallet.build_tx();
         ///    builder
    @@ -4066,7 +3937,7 @@
         /// ```
         ///
         /// [`TxBuilder`]: crate::TxBuilder
    -    pub fn build_tx(&mut self) -> TxBuilder<'_, DefaultCoinSelectionAlgorithm, CreateTx> {
    +    pub fn build_tx(&mut self) -> TxBuilder<'_, DefaultCoinSelectionAlgorithm, CreateTx> {
             TxBuilder {
                 wallet: alloc::rc::Rc::new(core::cell::RefCell::new(self)),
                 params: TxParams::default(),
    @@ -4081,7 +3952,7 @@
             params: TxParams,
         ) -> Result<Psbt, CreateTxError> {
             let keychains: BTreeMap<_, _> = self.indexed_graph.index.keychains().collect();
    -        let external_descriptor = keychains.get(&KeychainKind::External).expect("must exist");
    +        let external_descriptor = keychains.get(&KeychainKind::External).expect("must exist");
             let internal_descriptor = keychains.get(&KeychainKind::Internal);
     
             let external_policy = external_descriptor
    @@ -4097,7 +3968,7 @@
                 })
                 .transpose()?;
     
    -        // The policy allows spending external outputs, but it requires a policy path that hasn't been
    +        // The policy allows spending external outputs, but it requires a policy path that hasn't been
             // provided
             if params.change_policy != tx_builder::ChangeSpendPolicy::OnlyChange
                 && external_policy.requires_path()
    @@ -4151,12 +4022,12 @@
                 None => 1,
             };
     
    -        // We use a match here instead of a unwrap_or_else as it's way more readable :)
    +        // We use a match here instead of a unwrap_or_else as it's way more readable :)
             let current_height = match params.current_height {
    -            // If they didn't tell us the current height, we assume it's the latest sync height.
    +            // If they didn't tell us the current height, we assume it's the latest sync height.
                 None => {
                     let tip_height = self.chain.tip().height();
    -                absolute::LockTime::from_height(tip_height).expect("invalid height")
    +                absolute::LockTime::from_height(tip_height).expect("invalid height")
                 }
                 Some(h) => h,
             };
    @@ -4165,7 +4036,7 @@
                 // When no nLockTime is specified, we try to prevent fee sniping, if possible
                 None => {
                     // Fee sniping can be partially prevented by setting the timelock
    -                // to current_height. If we don't know the current_height,
    +                // to current_height. If we don't know the current_height,
                     // we default to 0.
                     let fee_sniping_height = current_height;
     
    @@ -4174,18 +4045,18 @@
                     match requirements.timelock {
                         // No requirement, just use the fee_sniping_height
                         None => fee_sniping_height,
    -                    // There's a block-based requirement, but the value is lower than the fee_sniping_height
    +                    // There's a block-based requirement, but the value is lower than the fee_sniping_height
                         Some(value @ absolute::LockTime::Blocks(_)) if value < fee_sniping_height => {
                             fee_sniping_height
                         }
    -                    // There's a time-based requirement or a block-based requirement greater
    +                    // There's a time-based requirement or a block-based requirement greater
                         // than the fee_sniping_height use that value
                         Some(value) => value,
                     }
                 }
                 // Specific nLockTime required and we have no constraints, so just set to that value
                 Some(x) if requirements.timelock.is_none() => x,
    -            // Specific nLockTime required and it's compatible with the constraints
    +            // Specific nLockTime required and it's compatible with the constraints
                 Some(x)
                     if requirements.timelock.unwrap().is_same_unit(x)
                         && x >= requirements.timelock.unwrap() =>
    @@ -4203,7 +4074,7 @@
     
             // The nSequence to be by default for inputs unless an explicit sequence is specified.
             let n_sequence = match (params.rbf, requirements.csv) {
    -            // No RBF or CSV but there's an nLockTime, so the nSequence cannot be final
    +            // No RBF or CSV but there's an nLockTime, so the nSequence cannot be final
                 (None, None) if lock_time != absolute::LockTime::ZERO => {
                     Sequence::ENABLE_LOCKTIME_NO_RBF
                 }
    @@ -4212,7 +4083,7 @@
     
                 // No RBF requested, use the value from CSV. Note that this value is by definition
                 // non-final, so even if a timelock is enabled this nSequence is fine, hence why we
    -            // don't bother checking for it here. The same is true for all the other branches below
    +            // don't bother checking for it here. The same is true for all the other branches below
                 (None, Some(csv)) => csv,
     
                 // RBF with a specific value but that value is too high
    @@ -4229,7 +4100,7 @@
                 // RBF enabled with the default value with CSV also enabled. CSV takes precedence
                 (Some(tx_builder::RbfValue::Default), Some(csv)) => csv,
                 // Valid RBF, either default or with a specific value. We ignore the `CSV` value
    -            // because we've already checked it before
    +            // because we've already checked it before
                 (Some(rbf), _) => rbf.get_value(),
             };
     
    @@ -4320,7 +4191,7 @@
                         .indexed_graph
                         .index
                         .next_unused_spk(&change_keychain)
    -                    .expect("Keychain exists (we called map_keychain)");
    +                    .expect("Keychain exists (we called map_keychain)");
                     let spk = spk.into();
                     self.indexed_graph.index.mark_used(change_keychain, index);
                     self.persist
    @@ -4362,7 +4233,7 @@
                 // - We have a drain_to address and the utxos we must spend (this happens,
                 // for example, when we RBF)
                 // - We have a drain_to address and drain_wallet set
    -            // Otherwise, we don't know who we should send the funds to, and how much
    +            // Otherwise, we don't know who we should send the funds to, and how much
                 // we should send!
                 if params.drain_to.is_some() && (params.drain_wallet || !params.utxos.is_empty()) {
                     if let NoChange {
    @@ -4398,7 +4269,7 @@
                     };
     
                     // TODO: We should pay attention when adding a new output: this might increase
    -                // the length of the "number of vouts" parameter by 2 bytes, potentially making
    +                // the length of the "number of vouts" parameter by 2 bytes, potentially making
                     // our feerate too low
                     tx.output.push(drain_output);
                 }
    @@ -4413,7 +4284,7 @@
     
         /// Bump the fee of a transaction previously created with this wallet.
         ///
    -    /// Returns an error if the transaction is already confirmed or doesn't explicitly signal
    +    /// Returns an error if the transaction is already confirmed or doesn't explicitly signal
         /// *replace by fee* (RBF). If the transaction can be fee bumped then it returns a [`TxBuilder`]
         /// pre-populated with the inputs and outputs of the original transaction.
         ///
    @@ -4428,9 +4299,9 @@
         /// # use bdk_wallet::wallet::error::CreateTxError;
         /// # use bdk_persist::PersistBackend;
         /// # use anyhow::Error;
    -    /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
    +    /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
         /// # let mut wallet = doctest_wallet!();
    -    /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
    +    /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
         /// let mut psbt = {
         ///     let mut builder = wallet.build_tx();
         ///     builder
    @@ -4439,12 +4310,12 @@
         ///     builder.finish()?
         /// };
         /// let _ = wallet.sign(&mut psbt, SignOptions::default())?;
    -    /// let tx = psbt.clone().extract_tx().expect("tx");
    -    /// // broadcast tx but it's taking too long to confirm so we want to bump the fee
    +    /// let tx = psbt.clone().extract_tx().expect("tx");
    +    /// // broadcast tx but it's taking too long to confirm so we want to bump the fee
         /// let mut psbt =  {
         ///     let mut builder = wallet.build_fee_bump(tx.txid())?;
         ///     builder
    -    ///         .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"));
    +    ///         .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"));
         ///     builder.finish()?
         /// };
         ///
    @@ -4457,7 +4328,7 @@
         pub fn build_fee_bump(
             &mut self,
             txid: Txid,
    -    ) -> Result<TxBuilder<'_, DefaultCoinSelectionAlgorithm, BumpFee>, BuildFeeBumpError> {
    +    ) -> Result<TxBuilder<'_, DefaultCoinSelectionAlgorithm, BumpFee>, BuildFeeBumpError> {
             let graph = self.indexed_graph.graph();
             let txout_index = &self.indexed_graph.index;
             let chain_tip = self.chain.tip().block_id();
    @@ -4585,12 +4456,12 @@
             })
         }
     
    -    /// Sign a transaction with all the wallet's signers, in the order specified by every signer's
    +    /// Sign a transaction with all the wallet's signers, in the order specified by every signer's
         /// [`SignerOrdering`]. This function returns the `Result` type with an encapsulated `bool` that has the value true if the PSBT was finalized, or false otherwise.
         ///
         /// The [`SignOptions`] can be used to tweak the behavior of the software signers, and the way
    -    /// the transaction is finalized at the end. Note that it can't be guaranteed that *every*
    -    /// signers will follow the options, but the "software signers" (WIF keys and `xprv`) defined
    +    /// the transaction is finalized at the end. Note that it can't be guaranteed that *every*
    +    /// signers will follow the options, but the "software signers" (WIF keys and `xprv`) defined
         /// in this library will.
         ///
         /// ## Example
    @@ -4602,16 +4473,16 @@
         /// # use bdk_wallet::wallet::ChangeSet;
         /// # use bdk_wallet::wallet::error::CreateTxError;
         /// # use bdk_persist::PersistBackend;
    -    /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
    +    /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
         /// # let mut wallet = doctest_wallet!();
    -    /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
    +    /// # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
         /// let mut psbt = {
         ///     let mut builder = wallet.build_tx();
         ///     builder.add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000));
         ///     builder.finish()?
         /// };
         /// let finalized = wallet.sign(&mut psbt, SignOptions::default())?;
    -    /// assert!(finalized, "we should have signed all the inputs");
    +    /// assert!(finalized, "we should have signed all the inputs");
         /// # Ok::<(),anyhow::Error>(())
         pub fn sign(&self, psbt: &mut Psbt, sign_options: SignOptions) -> Result<bool, SignerError> {
             // This adds all the PSBT metadata for the inputs, which will help us later figure out how
    @@ -4619,7 +4490,7 @@
             self.update_psbt_with_descriptor(psbt)
                 .map_err(SignerError::MiniscriptPsbt)?;
     
    -        // If we aren't allowed to use `witness_utxo`, ensure that every input (except p2tr and finalized ones)
    +        // If we aren't allowed to use `witness_utxo`, ensure that every input (except p2tr and finalized ones)
             // has the `non_witness_utxo`
             if !sign_options.trust_witness_utxo
                 && psbt
    @@ -4632,7 +4503,7 @@
                 return Err(SignerError::MissingNonWitnessUtxo);
             }
     
    -        // If the user hasn't explicitly opted-in, refuse to sign the transaction unless every input
    +        // If the user hasn't explicitly opted-in, refuse to sign the transaction unless every input
             // is using `SIGHASH_ALL` or `SIGHASH_DEFAULT` for taproot
             if !sign_options.allow_all_sighashes
                 && !psbt.inputs.iter().all(|i| {
    @@ -4662,7 +4533,7 @@
             }
         }
     
    -    /// Return the spending policies for the wallet's descriptor
    +    /// Return the spending policies for the wallet's descriptor
         pub fn policies(&self, keychain: KeychainKind) -> Result<Option<Policy>, DescriptorError> {
             let signers = match keychain {
                 KeychainKind::External => &self.signers,
    @@ -4675,7 +4546,7 @@
             }
         }
     
    -    /// Return the "public" version of the wallet's descriptor, meaning a new descriptor that has
    +    /// Return the "public" version of the wallet's descriptor, meaning a new descriptor that has
         /// the same structure but with every secret key removed
         ///
         /// This can be used to build a watch-only version of a wallet
    @@ -4725,7 +4596,7 @@
                     .assume_height
                     .unwrap_or_else(|| self.chain.tip().height());
     
    -            // - Try to derive the descriptor by looking at the txout. If it's in our database, we
    +            // - Try to derive the descriptor by looking at the txout. If it's in our database, we
                 //   know exactly which `keychain` to use, and which derivation index it is
                 // - If that fails, try to derive it by looking at the psbt input: the complete logic
                 //   is in `src/descriptor/mod.rs`, but it will basically look at `bip32_derivation`,
    @@ -4792,7 +4663,7 @@
         /// Returns the descriptor used to create addresses for a particular `keychain`.
         pub fn get_descriptor_for_keychain(&self, keychain: KeychainKind) -> &ExtendedDescriptor {
             self.public_descriptor(self.map_keychain(keychain))
    -            .expect("we mapped it to external if it doesn't exist")
    +            .expect("we mapped it to external if it doesn't exist")
         }
     
         /// The derivation index of this wallet. It will return `None` if it has not derived any addresses.
    @@ -4807,14 +4678,14 @@
             self.indexed_graph
                 .index
                 .next_index(&keychain)
    -            .expect("Keychain must exist (we called map_keychain)")
    +            .expect("Keychain must exist (we called map_keychain)")
                 .0
         }
     
         /// Informs the wallet that you no longer intend to broadcast a tx that was built from it.
         ///
         /// This frees up the change address used when creating the tx for use in future transactions.
    -    // TODO: Make this free up reserved utxos when that's implemented
    +    // TODO: Make this free up reserved utxos when that's implemented
         pub fn cancel_tx(&mut self, tx: &Transaction) {
             let txout_index = &mut self.indexed_graph.index;
             for txout in &tx.output {
    @@ -4876,7 +4747,7 @@
             } = params;
     
             let manually_selected = utxos.clone();
    -        // we mandate confirmed transactions if we're bumping the fee
    +        // we mandate confirmed transactions if we're bumping the fee
             let must_only_use_confirmed_tx = bumping_fee.is_some();
             let must_use_all_available = *drain_wallet;
     
    @@ -4923,7 +4794,7 @@
                     if tx.is_coinbase() {
                         debug_assert!(
                             confirmation_time.is_confirmed(),
    -                        "coinbase must always be confirmed"
    +                        "coinbase must always be confirmed"
                         );
                         if let Some(current_height) = current_height {
                             match confirmation_time {
    @@ -5066,7 +4937,7 @@
             let desc = self.get_descriptor_for_keychain(keychain);
             let derived_descriptor = desc
                 .at_derivation_index(child)
    -            .expect("child can't be hardened");
    +            .expect("child can't be hardened");
     
             psbt_input
                 .update_with_descriptor_unchecked(&derived_descriptor)
    @@ -5106,7 +4977,7 @@
                     let desc = self.get_descriptor_for_keychain(keychain);
                     let desc = desc
                         .at_derivation_index(child)
    -                    .expect("child can't be hardened");
    +                    .expect("child can't be hardened");
     
                     if is_input {
                         psbt.update_input_with_descriptor(index, &desc)
    @@ -5127,7 +4998,7 @@
         pub fn descriptor_checksum(&self, keychain: KeychainKind) -> String {
             self.get_descriptor_for_keychain(keychain)
                 .to_string()
    -            .split_once('#')
    +            .split_once('#')
                 .unwrap()
                 .1
                 .to_string()
    @@ -5193,7 +5064,7 @@
         }
     
         /// Introduces a `block` of `height` to the wallet, and tries to connect it to the
    -    /// `prev_blockhash` of the block's header.
    +    /// `prev_blockhash` of the block's header.
         ///
         /// This is a convenience method that is equivalent to calling [`apply_block_connected_to`]
         /// with `prev_blockhash` and `height-1` as the `connected_to` parameter.
    @@ -5213,7 +5084,7 @@
             self.apply_block_connected_to(block, height, connected_to)
                 .map_err(|err| match err {
                     ApplyHeaderError::InconsistentBlocks => {
    -                    unreachable!("connected_to is derived from the block so must be consistent")
    +                    unreachable!("connected_to is derived from the block so must be consistent")
                     }
                     ApplyHeaderError::CannotConnect(err) => err,
                 })
    @@ -5254,9 +5125,9 @@
         /// when the transaction was last seen in the mempool. This is used for conflict resolution
         /// when there is conflicting unconfirmed transactions. The transaction with the later
         /// `last_seen` is prioritized.
    -    pub fn apply_unconfirmed_txs<'t>(
    +    pub fn apply_unconfirmed_txs<'t>(
             &mut self,
    -        unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)>,
    +        unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)>,
         ) {
             let indexed_graph_changeset = self
                 .indexed_graph
    @@ -5281,7 +5152,7 @@
         /// Create a [`FullScanRequest] for this wallet.
         ///
         /// This is the first step when performing a spk-based wallet full scan, the returned
    -    /// [`FullScanRequest] collects iterators for the wallet's keychain script pub keys needed to
    +    /// [`FullScanRequest] collects iterators for the wallet's keychain script pub keys needed to
         /// start a blockchain full scan with a spk based blockchain client.
         ///
         /// This operation is generally only used when importing or restoring a previously used wallet
    @@ -5315,14 +5186,14 @@
             .into_wallet_descriptor(secp, network)?
             .0
             .to_string();
    -    let mut wallet_name = calc_checksum(&descriptor[..descriptor.find('#').unwrap()])?;
    +    let mut wallet_name = calc_checksum(&descriptor[..descriptor.find('#').unwrap()])?;
         if let Some(change_descriptor) = change_descriptor {
             let change_descriptor = change_descriptor
                 .into_wallet_descriptor(secp, network)?
                 .0
                 .to_string();
             wallet_name.push_str(
    -            calc_checksum(&change_descriptor[..change_descriptor.find('#').unwrap()])?.as_str(),
    +            calc_checksum(&change_descriptor[..change_descriptor.find('#').unwrap()])?.as_str(),
             );
         }
     
    @@ -5371,7 +5242,7 @@
     /// Transforms a [`FeeRate`] to `f64` with unit as sat/vb.
     #[macro_export]
     #[doc(hidden)]
    -macro_rules! floating_rate {
    +macro_rules! floating_rate {
         ($rate:expr) => {{
             use $crate::bitcoin::blockdata::constants::WITNESS_SCALE_FACTOR;
             // sat_kwu / 250.0 -> sat_vb
    @@ -5382,13 +5253,13 @@
     #[macro_export]
     #[doc(hidden)]
     /// Macro for getting a wallet for use in a doctest
    -macro_rules! doctest_wallet {
    +macro_rules! doctest_wallet {
         () => {{
             use $crate::bitcoin::{BlockHash, Transaction, absolute, TxOut, Network, hashes::Hash};
             use $crate::chain::{ConfirmationTime, BlockId};
             use $crate::{KeychainKind, wallet::Wallet};
    -        let descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/0/*)";
    -        let change_descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/1/*)";
    +        let descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/0/*)";
    +        let change_descriptor = "tr([73c5da0a/86'/0'/0']tprv8fMn4hSKPRC1oaCPqxDb1JWtgkpeiQvZhsr8W2xuy3GEMkzoArcAWTfJxYb6Wj8XNNDWEjfYKK4wGQXh3ZUXhDF2NcnsALpWTeSwarJt7Vc/1/*)";
     
             let mut wallet = Wallet::new_no_persist(
                 descriptor,
    @@ -5415,5 +5286,4 @@
             wallet
         }}
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/signer.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/signer.rs.html index b3dae865e4..d69b3aba09 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/signer.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/signer.rs.html @@ -1,5 +1,4 @@ -signer.rs - source
    1
    +signer.rs - source
    1
     2
     3
     4
    @@ -1192,7 +1191,7 @@
     1191
     1192
     1193
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -1261,7 +1260,7 @@
     //!
     //! let custom_signer = CustomSigner::connect();
     //!
    -//! let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
    +//! let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
     //! let mut wallet = Wallet::new_no_persist(descriptor, None, Network::Testnet)?;
     //! wallet.add_signer(
     //!     KeychainKind::External,
    @@ -1344,7 +1343,7 @@
         MissingWitnessScript,
         /// The fingerprint and derivation path are missing from the psbt input
         MissingHdKeypath,
    -    /// The psbt contains a non-`SIGHASH_ALL` sighash in one of its input and the user hasn't
    +    /// The psbt contains a non-`SIGHASH_ALL` sighash in one of its input and the user hasn't
         /// explicitly allowed them
         ///
         /// To enable signing transactions with non-standard sighashes set
    @@ -1369,27 +1368,27 @@
     }
     
     impl fmt::Display for SignerError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
    -            Self::MissingKey => write!(f, "Missing private key"),
    -            Self::InvalidKey => write!(f, "The private key in use has the right fingerprint but derives differently than expected"),
    -            Self::UserCanceled => write!(f, "The user canceled the operation"),
    -            Self::InputIndexOutOfRange => write!(f, "Input index out of range"),
    -            Self::MissingNonWitnessUtxo => write!(f, "Missing non-witness UTXO"),
    -            Self::InvalidNonWitnessUtxo => write!(f, "Invalid non-witness UTXO"),
    -            Self::MissingWitnessUtxo => write!(f, "Missing witness UTXO"),
    -            Self::MissingWitnessScript => write!(f, "Missing witness script"),
    -            Self::MissingHdKeypath => write!(f, "Missing fingerprint and derivation path"),
    -            Self::NonStandardSighash => write!(f, "The psbt contains a non standard sighash"),
    -            Self::InvalidSighash => write!(f, "Invalid SIGHASH for the signing context in use"),
    -            Self::SighashError(err) => write!(f, "Error while computing the hash to sign: {}", err),
    -            Self::MiniscriptPsbt(err) => write!(f, "Miniscript PSBT error: {}", err),
    -            Self::External(err) => write!(f, "{}", err),
    +            Self::MissingKey => write!(f, "Missing private key"),
    +            Self::InvalidKey => write!(f, "The private key in use has the right fingerprint but derives differently than expected"),
    +            Self::UserCanceled => write!(f, "The user canceled the operation"),
    +            Self::InputIndexOutOfRange => write!(f, "Input index out of range"),
    +            Self::MissingNonWitnessUtxo => write!(f, "Missing non-witness UTXO"),
    +            Self::InvalidNonWitnessUtxo => write!(f, "Invalid non-witness UTXO"),
    +            Self::MissingWitnessUtxo => write!(f, "Missing witness UTXO"),
    +            Self::MissingWitnessScript => write!(f, "Missing witness script"),
    +            Self::MissingHdKeypath => write!(f, "Missing fingerprint and derivation path"),
    +            Self::NonStandardSighash => write!(f, "The psbt contains a non standard sighash"),
    +            Self::InvalidSighash => write!(f, "Invalid SIGHASH for the signing context in use"),
    +            Self::SighashError(err) => write!(f, "Error while computing the hash to sign: {}", err),
    +            Self::MiniscriptPsbt(err) => write!(f, "Miniscript PSBT error: {}", err),
    +            Self::External(err) => write!(f, "{}", err),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for SignerError {}
     
     /// Signing context
    @@ -1434,7 +1433,7 @@
     pub trait SignerCommon: fmt::Debug + Send + Sync {
         /// Return the [`SignerId`] for this signer
         ///
    -    /// The [`SignerId`] can be used to lookup a signer in the [`Wallet`](crate::Wallet)'s signers map or to
    +    /// The [`SignerId`] can be used to lookup a signer in the [`Wallet`](crate::Wallet)'s signers map or to
         /// compare two signers.
         fn id(&self, secp: &SecpCtx) -> SignerId;
     
    @@ -1466,7 +1465,7 @@
     
     /// PSBT signer
     ///
    -/// This trait can be implemented when the signer can't sign inputs individually, but signs the whole transaction
    +/// This trait can be implemented when the signer can't sign inputs individually, but signs the whole transaction
     /// at once.
     pub trait TransactionSigner: SignerCommon {
         /// Sign all the inputs of the psbt
    @@ -1675,7 +1674,7 @@
                     let leaf_hashes = leaf_hashes
                         .iter()
                         .filter(|lh| {
    -                        // Removing the leaves we shouldn't sign for
    +                        // Removing the leaves we shouldn't sign for
                             let should_sign = match &sign_options.tap_leaves_options {
                                 TapLeavesOptions::All => true,
                                 TapLeavesOptions::Include(v) => v.contains(lh),
    @@ -1754,7 +1753,7 @@
             secp.sign_ecdsa(msg, secret_key)
         };
         secp.verify_ecdsa(msg, &sig, &pubkey.inner)
    -        .expect("invalid or corrupted ecdsa signature");
    +        .expect("invalid or corrupted ecdsa signature");
     
         let final_signature = ecdsa::Signature { sig, hash_ty };
         psbt_input.partial_sigs.insert(pubkey, final_signature);
    @@ -1781,7 +1780,7 @@
         let msg = &Message::from(hash);
         let sig = secp.sign_schnorr(msg, &keypair);
         secp.verify_schnorr(&sig, msg, &XOnlyPublicKey::from_keypair(&keypair).0)
    -        .expect("invalid or corrupted schnorr signature");
    +        .expect("invalid or corrupted schnorr signature");
     
         let final_signature = taproot::Signature { sig, hash_ty };
     
    @@ -1942,10 +1941,10 @@
     /// Adjust the behavior of our software signers and the way a transaction is finalized
     #[derive(Debug, Clone)]
     pub struct SignOptions {
    -    /// Whether the signer should trust the `witness_utxo`, if the `non_witness_utxo` hasn't been
    +    /// Whether the signer should trust the `witness_utxo`, if the `non_witness_utxo` hasn't been
         /// provided
         ///
    -    /// Defaults to `false` to mitigate the "SegWit bug" which should trick the wallet into
    +    /// Defaults to `false` to mitigate the "SegWit bug" which should trick the wallet into
         /// paying a fee larger than expected.
         ///
         /// Some wallets, especially if relatively old, might not provide the `non_witness_utxo` for
    @@ -1959,8 +1958,8 @@
         /// Whether the wallet should assume a specific height has been reached when trying to finalize
         /// a transaction
         ///
    -    /// The wallet will only "use" a timelock to satisfy the spending policy of an input if the
    -    /// timelock height has already been reached. This option allows overriding the "current height" to let the
    +    /// The wallet will only "use" a timelock to satisfy the spending policy of an input if the
    +    /// timelock height has already been reached. This option allows overriding the "current height" to let the
         /// wallet use timelocks in the future to spend a coin.
         pub assume_height: Option<u32>,
     
    @@ -1991,13 +1990,13 @@
         pub try_finalize: bool,
     
         /// Specifies which Taproot script-spend leaves we should sign for. This option is
    -    /// ignored if we're signing a non-taproot PSBT.
    +    /// ignored if we're signing a non-taproot PSBT.
         ///
         /// Defaults to All, i.e., the wallet will sign all the leaves it has a key for.
         pub tap_leaves_options: TapLeavesOptions,
     
         /// Whether we should try to sign a taproot transaction with the taproot internal key
    -    /// or not. This option is ignored if we're signing a non-taproot PSBT.
    +    /// or not. This option is ignored if we're signing a non-taproot PSBT.
         ///
         /// Defaults to `true`, i.e., we always try to sign with the taproot internal key.
         pub sign_with_tap_internal_key: bool,
    @@ -2014,12 +2013,12 @@
         /// The signer will sign all the leaves it has a key for.
         #[default]
         All,
    -    /// The signer won't sign leaves other than the ones specified. Note that it could still ignore
    -    /// some of the specified leaves, if it doesn't have the right key to sign them.
    +    /// The signer won't sign leaves other than the ones specified. Note that it could still ignore
    +    /// some of the specified leaves, if it doesn't have the right key to sign them.
         Include(Vec<taproot::TapLeafHash>),
    -    /// The signer won't sign the specified leaves.
    +    /// The signer won't sign the specified leaves.
         Exclude(Vec<taproot::TapLeafHash>),
    -    /// The signer won't sign any leaf.
    +    /// The signer won't sign any leaf.
         None,
     }
     
    @@ -2130,13 +2129,13 @@
                     return Err(SignerError::InvalidNonWitnessUtxo);
                 }
     
    -            // The output should be present, if it's missing the `non_witness_utxo` is invalid
    +            // The output should be present, if it's missing the `non_witness_utxo` is invalid
                 prev_tx
                     .output
                     .get(tx_input.previous_output.vout as usize)
                     .ok_or(SignerError::InvalidNonWitnessUtxo)?
             } else if let Some(witness_utxo) = &psbt_input.witness_utxo {
    -            // Fallback to the witness_utxo. If we aren't allowed to use it, signing should fail
    +            // Fallback to the witness_utxo. If we aren't allowed to use it, signing should fail
                 // before we get to this point
                 witness_utxo
             } else {
    @@ -2340,7 +2339,7 @@
             signers.add_external(id3.clone(), SignerOrdering(2), signer4.clone());
             assert_matches!(signers.find(id3), Some(signer) if is_equal(signer, &signer4));
     
    -        // Can't find anything with ID that doesn't exist
    +        // Can't find anything with ID that doesn't exist
             assert_matches!(signers.find(id_nonexistent), None);
         }
     
    @@ -2366,10 +2365,10 @@
             }
         }
     
    -    const TPRV0_STR:&str = "tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf";
    -    const TPRV1_STR:&str = "tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N";
    +    const TPRV0_STR:&str = "tprv8ZgxMBicQKsPdZXrcHNLf5JAJWFAoJ2TrstMRdSKtEggz6PddbuSkvHKM9oKJyFgZV1B7rw8oChspxyYbtmEXYyg1AjfWbL3ho3XHDpHRZf";
    +    const TPRV1_STR:&str = "tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N";
     
    -    const PATH: &str = "m/44'/1'/0'/0";
    +    const PATH: &str = "m/44'/1'/0'/0";
     
         fn setup_keys<Ctx: ScriptContext>(
             tprv: &str,
    @@ -2385,5 +2384,4 @@
             (prvkey, pubkey, fingerprint)
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/tx_builder.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/tx_builder.rs.html index 58477ab5ed..ad2484c67b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/tx_builder.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/tx_builder.rs.html @@ -1,5 +1,4 @@ -tx_builder.rs - source
    1
    +tx_builder.rs - source
    1
     2
     3
     4
    @@ -1082,7 +1081,7 @@
     1081
     1082
     1083
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -1106,7 +1105,7 @@
     //! # use bdk_wallet::wallet::tx_builder::CreateTx;
     //! # use bdk_persist::PersistBackend;
     //! # use anyhow::Error;
    -//! # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
    +//! # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
     //! # let mut wallet = doctest_wallet!();
     //! // create a TxBuilder from a wallet
     //! let mut tx_builder = wallet.build_tx();
    @@ -1115,7 +1114,7 @@
     //!     // Create a transaction with one output to `to_address` of 50_000 satoshi
     //!     .add_recipient(to_address.script_pubkey(), Amount::from_sat(50_000))
     //!     // With a custom fee rate of 5.0 satoshi/vbyte
    -//!     .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    +//!     .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
     //!     // Only spend non-change outputs
     //!     .do_not_spend_change()
     //!     // Turn on RBF signaling
    @@ -1171,7 +1170,7 @@
     /// # use bdk_persist::PersistBackend;
     /// # use anyhow::Error;
     /// # let mut wallet = doctest_wallet!();
    -/// # let addr1 = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
    +/// # let addr1 = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
     /// # let addr2 = addr1.clone();
     /// // chaining
     /// let psbt1 = {
    @@ -1200,15 +1199,15 @@
     /// At the moment [`coin_selection`] is an exception to the rule as it consumes `self`.
     /// This means it is usually best to call [`coin_selection`] on the return value of `build_tx` before assigning it.
     ///
    -/// For further examples see [this module](super::tx_builder)'s documentation;
    +/// For further examples see [this module](super::tx_builder)'s documentation;
     ///
     /// [`build_tx`]: Wallet::build_tx
     /// [`build_fee_bump`]: Wallet::build_fee_bump
     /// [`finish`]: Self::finish
     /// [`coin_selection`]: Self::coin_selection
     #[derive(Debug)]
    -pub struct TxBuilder<'a, Cs, Ctx> {
    -    pub(crate) wallet: Rc<RefCell<&'a mut Wallet>>,
    +pub struct TxBuilder<'a, Cs, Ctx> {
    +    pub(crate) wallet: Rc<RefCell<&'a mut Wallet>>,
         pub(crate) params: TxParams,
         pub(crate) coin_selection: Cs,
         pub(crate) phantom: PhantomData<Ctx>,
    @@ -1259,7 +1258,7 @@
         }
     }
     
    -impl<'a, Cs: Clone, Ctx> Clone for TxBuilder<'a, Cs, Ctx> {
    +impl<'a, Cs: Clone, Ctx> Clone for TxBuilder<'a, Cs, Ctx> {
         fn clone(&self) -> Self {
             TxBuilder {
                 wallet: self.wallet.clone(),
    @@ -1271,15 +1270,15 @@
     }
     
     // methods supported by both contexts, for any CoinSelectionAlgorithm
    -impl<'a, Cs, Ctx> TxBuilder<'a, Cs, Ctx> {
    +impl<'a, Cs, Ctx> TxBuilder<'a, Cs, Ctx> {
         /// Set a custom fee rate.
         ///
         /// This method sets the mining fee paid by the transaction as a rate on its size.
         /// This means that the total fee paid is equal to `fee_rate` times the size
    -    /// of the transaction. Default is 1 sat/vB in accordance with Bitcoin Core's default
    +    /// of the transaction. Default is 1 sat/vB in accordance with Bitcoin Core's default
         /// relay policy.
         ///
    -    /// Note that this is really a minimum feerate -- it's possible to
    +    /// Note that this is really a minimum feerate -- it's possible to
         /// overshoot it slightly since adding a change output to drain the remaining
         /// excess might not be viable.
         pub fn fee_rate(&mut self, fee_rate: FeeRate) -> &mut Self {
    @@ -1293,7 +1292,7 @@
         /// the FeePolicy enum will be set by whichever method was called last,
         /// as the FeeRate and FeeAmount are mutually exclusive.
         ///
    -    /// Note that this is really a minimum absolute fee -- it's possible to
    +    /// Note that this is really a minimum absolute fee -- it's possible to
         /// overshoot it slightly since adding a change output to drain the remaining
         /// excess might not be viable.
         pub fn fee_absolute(&mut self, fee_amount: u64) -> &mut Self {
    @@ -1320,7 +1319,7 @@
         /// 2. `and(pk(B),older(6))`
         /// 3. `and(pk(C),after(630000))`
         ///
    -    /// When those conditions are combined in pairs, it's clear that the transaction needs to be created
    +    /// When those conditions are combined in pairs, it's clear that the transaction needs to be created
         /// differently depending on how the user intends to satisfy the policy afterwards:
         ///
         /// * If fragments `1` and `2` are used, the transaction will need to use a specific
    @@ -1332,12 +1331,12 @@
         /// When the spending policy is represented as a tree (see
         /// [`Wallet::policies`](super::Wallet::policies)), every node
         /// is assigned a unique identifier that can be used in the policy path to specify which of
    -    /// the node's children the user intends to satisfy: for instance, assuming the `thresh()`
    +    /// the node's children the user intends to satisfy: for instance, assuming the `thresh()`
         /// root node of this example has an id of `aabbccdd`, the policy path map would look like:
         ///
    -    /// `{ "aabbccdd" => [0, 1] }`
    +    /// `{ "aabbccdd" => [0, 1] }`
         ///
    -    /// where the key is the node's id, and the value is a list of the children that should be
    +    /// where the key is the node's id, and the value is a list of the children that should be
         /// used, in no particular order.
         ///
         /// If a particularly complex descriptor has multiple ambiguous thresholds in its structure,
    @@ -1349,12 +1348,12 @@
         /// # use bitcoin::*;
         /// # use bdk_wallet::*;
         /// # let to_address =
    -    /// Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +    /// Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
         ///     .unwrap()
         ///     .assume_checked();
         /// # let mut wallet = doctest_wallet!();
         /// let mut path = BTreeMap::new();
    -    /// path.insert("aabbccdd".to_string(), vec![0, 1]);
    +    /// path.insert("aabbccdd".to_string(), vec![0, 1]);
         ///
         /// let builder = wallet
         ///     .build_tx()
    @@ -1381,8 +1380,8 @@
         ///
         /// If an error occurs while adding any of the UTXOs then none of them are added and the error is returned.
         ///
    -    /// These have priority over the "unspendable" utxos, meaning that if a utxo is present both in
    -    /// the "utxos" and the "unspendable" list, it will be spent.
    +    /// These have priority over the "unspendable" utxos, meaning that if a utxo is present both in
    +    /// the "utxos" and the "unspendable" list, it will be spent.
         pub fn add_utxos(&mut self, outpoints: &[OutPoint]) -> Result<&mut Self, AddUtxoError> {
             {
                 let wallet = self.wallet.borrow();
    @@ -1410,8 +1409,8 @@
     
         /// Add a utxo to the internal list of utxos that **must** be spent
         ///
    -    /// These have priority over the "unspendable" utxos, meaning that if a utxo is present both in
    -    /// the "utxos" and the "unspendable" list, it will be spent.
    +    /// These have priority over the "unspendable" utxos, meaning that if a utxo is present both in
    +    /// the "utxos" and the "unspendable" list, it will be spent.
         pub fn add_utxo(&mut self, outpoint: OutPoint) -> Result<&mut Self, AddUtxoError> {
             self.add_utxos(&[outpoint])
         }
    @@ -1428,7 +1427,7 @@
         /// developers should consider. First, how do you know the value of the input is correct? If a
         /// `non_witness_utxo` is provided in the `psbt_input` then this method implicitly verifies the
         /// value by checking it against the transaction. If only a `witness_utxo` is provided then this
    -    /// method doesn't verify the value but just takes it as a given -- it is up to you to check
    +    /// method doesn't verify the value but just takes it as a given -- it is up to you to check
         /// that whoever sent you the `input_psbt` was not lying!
         ///
         /// Secondly, you must somehow provide `satisfaction_weight` of the input. Depending on your
    @@ -1528,7 +1527,7 @@
     
         /// Replace the internal list of unspendable utxos with a new list
         ///
    -    /// It's important to note that the "must-be-spent" utxos added with [`TxBuilder::add_utxo`]
    +    /// It's important to note that the "must-be-spent" utxos added with [`TxBuilder::add_utxo`]
         /// have priority over these. See the docs of the two linked methods for more details.
         pub fn unspendable(&mut self, unspendable: Vec<OutPoint>) -> &mut Self {
             self.params.unspendable = unspendable.into_iter().collect();
    @@ -1537,7 +1536,7 @@
     
         /// Add a utxo to the internal list of unspendable utxos
         ///
    -    /// It's important to note that the "must-be-spent" utxos added with [`TxBuilder::add_utxo`]
    +    /// It's important to note that the "must-be-spent" utxos added with [`TxBuilder::add_utxo`]
         /// have priority over this. See the docs of the two linked methods for more details.
         pub fn add_unspendable(&mut self, unspendable: OutPoint) -> &mut Self {
             self.params.unspendable.insert(unspendable);
    @@ -1560,7 +1559,7 @@
     
         /// Use a specific nLockTime while creating the transaction
         ///
    -    /// This can cause conflicts if the wallet's descriptors contain an "after" (OP_CLTV) operator.
    +    /// This can cause conflicts if the wallet's descriptors contain an "after" (OP_CLTV) operator.
         pub fn nlocktime(&mut self, locktime: absolute::LockTime) -> &mut Self {
             self.params.locktime = Some(locktime);
             self
    @@ -1568,8 +1567,8 @@
     
         /// Build a transaction with a specific version
         ///
    -    /// The `version` should always be greater than `0` and greater than `1` if the wallet's
    -    /// descriptors contain an "older" (OP_CSV) operator.
    +    /// The `version` should always be greater than `0` and greater than `1` if the wallet's
    +    /// descriptors contain an "older" (OP_CSV) operator.
         pub fn version(&mut self, version: i32) -> &mut Self {
             self.params.version = Some(Version(version));
             self
    @@ -1577,7 +1576,7 @@
     
         /// Do not spend change outputs
         ///
    -    /// This effectively adds all the change outputs to the "unspendable" list. See
    +    /// This effectively adds all the change outputs to the "unspendable" list. See
         /// [`TxBuilder::unspendable`].
         pub fn do_not_spend_change(&mut self) -> &mut Self {
             self.params.change_policy = ChangeSpendPolicy::ChangeForbidden;
    @@ -1586,7 +1585,7 @@
     
         /// Only spend change outputs
         ///
    -    /// This effectively adds all the non-change outputs to the "unspendable" list. See
    +    /// This effectively adds all the non-change outputs to the "unspendable" list. See
         /// [`TxBuilder::unspendable`].
         pub fn only_spend_change(&mut self) -> &mut Self {
             self.params.change_policy = ChangeSpendPolicy::OnlyChange;
    @@ -1643,7 +1642,7 @@
         pub fn coin_selection<P: CoinSelectionAlgorithm>(
             self,
             coin_selection: P,
    -    ) -> TxBuilder<'a, P, Ctx> {
    +    ) -> TxBuilder<'a, P, Ctx> {
             TxBuilder {
                 wallet: self.wallet,
                 params: self.params,
    @@ -1662,7 +1661,7 @@
     
         /// Enable signaling RBF with a specific nSequence value
         ///
    -    /// This can cause conflicts if the wallet's descriptors contain an "older" (OP_CSV) operator
    +    /// This can cause conflicts if the wallet's descriptors contain an "older" (OP_CSV) operator
         /// and the given `nsequence` is lower than the CSV value.
         ///
         /// If the `nsequence` is higher than `0xFFFFFFFD` an error will be thrown, since it would not
    @@ -1682,10 +1681,10 @@
         ///    If you want to create a transaction that spends immature coinbase inputs, manually
         ///    add them using [`TxBuilder::add_utxos`].
         ///
    -    /// In both cases, if you don't provide a current height, we use the last sync height.
    +    /// In both cases, if you don't provide a current height, we use the last sync height.
         pub fn current_height(&mut self, height: u32) -> &mut Self {
             self.params.current_height =
    -            Some(absolute::LockTime::from_height(height).expect("Invalid height"));
    +            Some(absolute::LockTime::from_height(height).expect("Invalid height"));
             self
         }
     
    @@ -1698,7 +1697,7 @@
         }
     }
     
    -impl<'a, Cs: CoinSelectionAlgorithm, Ctx> TxBuilder<'a, Cs, Ctx> {
    +impl<'a, Cs: CoinSelectionAlgorithm, Ctx> TxBuilder<'a, Cs, Ctx> {
         /// Finish building the transaction.
         ///
         /// Returns a new [`Psbt`] per [`BIP174`].
    @@ -1719,18 +1718,18 @@
     }
     
     impl fmt::Display for AddUtxoError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 Self::UnknownUtxo(outpoint) => write!(
                     f,
    -                "UTXO not found in the internal database for txid: {} with vout: {}",
    +                "UTXO not found in the internal database for txid: {} with vout: {}",
                     outpoint.txid, outpoint.vout
                 ),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for AddUtxoError {}
     
     #[derive(Debug)]
    @@ -1743,34 +1742,34 @@
             /// Foreign UTXO outpoint
             foreign_utxo: OutPoint,
         },
    -    /// Requested outpoint doesn't exist in the tx (vout greater than available outputs)
    +    /// Requested outpoint doesn't exist in the tx (vout greater than available outputs)
         InvalidOutpoint(OutPoint),
         /// Foreign utxo missing witness_utxo or non_witness_utxo
         MissingUtxo,
     }
     
     impl fmt::Display for AddForeignUtxoError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 Self::InvalidTxid {
                     input_txid,
                     foreign_utxo,
                 } => write!(
                     f,
    -                "Foreign UTXO outpoint txid: {} does not match PSBT input txid: {}",
    +                "Foreign UTXO outpoint txid: {} does not match PSBT input txid: {}",
                     foreign_utxo.txid, input_txid,
                 ),
                 Self::InvalidOutpoint(outpoint) => write!(
                     f,
    -                "Requested outpoint doesn't exist for txid: {} with vout: {}",
    +                "Requested outpoint doesn't exist for txid: {} with vout: {}",
                     outpoint.txid, outpoint.vout,
                 ),
    -            Self::MissingUtxo => write!(f, "Foreign utxo missing witness_utxo or non_witness_utxo"),
    +            Self::MissingUtxo => write!(f, "Foreign utxo missing witness_utxo or non_witness_utxo"),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for AddForeignUtxoError {}
     
     #[derive(Debug)]
    @@ -1781,21 +1780,21 @@
     }
     
     impl fmt::Display for AllowShrinkingError {
    -    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
    +    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
             match self {
                 Self::MissingScriptPubKey(script_buf) => write!(
                     f,
    -                "Script/PubKey was not in the original transaction: {}",
    +                "Script/PubKey was not in the original transaction: {}",
                     script_buf,
                 ),
             }
         }
     }
     
    -#[cfg(feature = "std")]
    +#[cfg(feature = "std")]
     impl std::error::Error for AllowShrinkingError {}
     
    -impl<'a, Cs: CoinSelectionAlgorithm> TxBuilder<'a, Cs, CreateTx> {
    +impl<'a, Cs: CoinSelectionAlgorithm> TxBuilder<'a, Cs, CreateTx> {
         /// Replace the recipients already added with a new list
         pub fn set_recipients(&mut self, recipients: Vec<(ScriptBuf, Amount)>) -> &mut Self {
             self.params.recipients = recipients
    @@ -1850,7 +1849,7 @@
         /// # use bdk_persist::PersistBackend;
         /// # use anyhow::Error;
         /// # let to_address =
    -    /// Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
    +    /// Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
         ///     .unwrap()
         ///     .assume_checked();
         /// # let mut wallet = doctest_wallet!();
    @@ -1861,7 +1860,7 @@
         ///     .drain_wallet()
         ///     // Send the excess (which is all the coins minus the fee) to this address.
         ///     .drain_to(to_address.script_pubkey())
    -    ///     .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
    +    ///     .fee_rate(FeeRate::from_sat_per_vb(5).expect("valid feerate"))
         ///     .enable_rbf();
         /// let psbt = tx_builder.finish()?;
         /// # Ok::<(), anyhow::Error>(())
    @@ -1878,7 +1877,7 @@
     }
     
     // methods supported only by bump_fee
    -impl<'a> TxBuilder<'a, DefaultCoinSelectionAlgorithm, BumpFee> {
    +impl<'a> TxBuilder<'a, DefaultCoinSelectionAlgorithm, BumpFee> {
         /// Explicitly tells the wallet that it is allowed to reduce the amount of the output matching this
         /// `script_pubkey` in order to bump the transaction fee. Without specifying this the wallet
         /// will attempt to find a change output to shrink instead.
    @@ -1887,7 +1886,7 @@
         /// preserved then it is currently not guaranteed to be in the same position as it was
         /// originally.
         ///
    -    /// Returns an `Err` if `script_pubkey` can't be found among the recipients of the
    +    /// Returns an `Err` if `script_pubkey` can't be found among the recipients of the
         /// transaction we are bumping.
         pub fn allow_shrinking(
             &mut self,
    @@ -1909,7 +1908,7 @@
         }
     }
     
    -/// Ordering of the transaction's inputs and outputs
    +/// Ordering of the transaction's inputs and outputs
     #[derive(Default, Debug, Ord, PartialOrd, Eq, PartialEq, Hash, Clone, Copy)]
     pub enum TxOrdering {
         /// Randomized (default)
    @@ -1997,13 +1996,13 @@
     
     #[cfg(test)]
     mod test {
    -    const ORDERING_TEST_TX: &str = "0200000003c26f3eb7932f7acddc5ddd26602b77e7516079b03090a16e2c2f54\
    +    const ORDERING_TEST_TX: &str = "0200000003c26f3eb7932f7acddc5ddd26602b77e7516079b03090a16e2c2f54\
                                         85d1fd600f0100000000ffffffffc26f3eb7932f7acddc5ddd26602b77e75160\
                                         79b03090a16e2c2f5485d1fd600f0000000000ffffffff571fb3e02278217852\
                                         dd5d299947e2b7354a639adc32ec1fa7b82cfb5dec530e0500000000ffffffff\
                                         03e80300000000000002aaeee80300000000000001aa200300000000000001ff\
    -                                    00000000";
    -    macro_rules! ordering_test_tx {
    +                                    00000000";
    +    macro_rules! ordering_test_tx {
             () => {
                 deserialize::<bitcoin::Transaction>(&Vec::<u8>::from_hex(ORDERING_TEST_TX).unwrap())
                     .unwrap()
    @@ -2042,7 +2041,7 @@
                     TxOrdering::Shuffle.sort_tx(&mut tx);
                     original_tx.input != tx.input
                 })
    -            .expect("it should have moved the inputs at least once");
    +            .expect("it should have moved the inputs at least once");
     
             let mut tx = original_tx.clone();
             (0..40)
    @@ -2050,7 +2049,7 @@
                     TxOrdering::Shuffle.sort_tx(&mut tx);
                     original_tx.output != tx.output
                 })
    -            .expect("it should have moved the outputs at least once");
    +            .expect("it should have moved the outputs at least once");
         }
     
         #[test]
    @@ -2065,21 +2064,21 @@
             assert_eq!(
                 tx.input[0].previous_output,
                 bitcoin::OutPoint::from_str(
    -                "0e53ec5dfb2cb8a71fec32dc9a634a35b7e24799295ddd5278217822e0b31f57:5"
    +                "0e53ec5dfb2cb8a71fec32dc9a634a35b7e24799295ddd5278217822e0b31f57:5"
                 )
                 .unwrap()
             );
             assert_eq!(
                 tx.input[1].previous_output,
                 bitcoin::OutPoint::from_str(
    -                "0f60fdd185542f2c6ea19030b0796051e7772b6026dd5ddccd7a2f93b73e6fc2:0"
    +                "0f60fdd185542f2c6ea19030b0796051e7772b6026dd5ddccd7a2f93b73e6fc2:0"
                 )
                 .unwrap()
             );
             assert_eq!(
                 tx.input[2].previous_output,
                 bitcoin::OutPoint::from_str(
    -                "0f60fdd185542f2c6ea19030b0796051e7772b6026dd5ddccd7a2f93b73e6fc2:1"
    +                "0f60fdd185542f2c6ea19030b0796051e7772b6026dd5ddccd7a2f93b73e6fc2:1"
                 )
                 .unwrap()
             );
    @@ -2165,5 +2164,4 @@
             assert_eq!(version.0, 1);
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/utils.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/utils.rs.html index ec633a826a..d397e3d9d8 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/utils.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/bdk_wallet/wallet/utils.rs.html @@ -1,5 +1,4 @@ -utils.rs - source
    1
    +utils.rs - source
    1
     2
     3
     4
    @@ -184,7 +183,7 @@
     183
     184
     185
    -
    // Bitcoin Dev Kit
    +
    // Bitcoin Dev Kit
     // Written in 2020 by Alekos Filini <alekos.filini@gmail.com>
     //
     // Copyright (c) 2020-2021 Bitcoin Dev Kit Developers
    @@ -203,7 +202,7 @@
     /// Trait to check if a value is below the dust limit.
     /// We are performing dust value calculation for a given script public key using rust-bitcoin to
     /// keep it compatible with network dust rate
    -// we implement this trait to make sure we don't mess up the comparison with off-by-one like a <
    +// we implement this trait to make sure we don't mess up the comparison with off-by-one like a <
     // instead of a <= etc.
     pub trait IsDust {
         /// Check whether or not a value is below dust limit
    @@ -289,7 +288,7 @@
                         .create_height
                         .unwrap_or(0)
                         .checked_add(n.to_consensus_u32())
    -                    .expect("Overflowing addition")
    +                    .expect("Overflowing addition")
             } else {
                 self.assume_height_reached
             }
    @@ -301,7 +300,7 @@
     #[cfg(test)]
     mod test {
         // When nSequence is lower than this flag the timelock is interpreted as block-height-based,
    -    // otherwise it's time-based
    +    // otherwise it's time-based
         pub(crate) const SEQUENCE_LOCKTIME_TYPE_FLAG: u32 = 1 << 22;
     
         use super::{check_nsequence_rbf, IsDust};
    @@ -310,7 +309,7 @@
     
         #[test]
         fn test_is_dust() {
    -        let script_p2pkh = Address::from_str("1GNgwA8JfG7Kc8akJ8opdNWJUihqUztfPe")
    +        let script_p2pkh = Address::from_str("1GNgwA8JfG7Kc8akJ8opdNWJUihqUztfPe")
                 .unwrap()
                 .require_network(Network::Bitcoin)
                 .unwrap()
    @@ -319,7 +318,7 @@
             assert!(545.is_dust(&script_p2pkh));
             assert!(!546.is_dust(&script_p2pkh));
     
    -        let script_p2wpkh = Address::from_str("bc1qxlh2mnc0yqwas76gqq665qkggee5m98t8yskd8")
    +        let script_p2wpkh = Address::from_str("bc1qxlh2mnc0yqwas76gqq665qkggee5m98t8yskd8")
                 .unwrap()
                 .require_network(Network::Bitcoin)
                 .unwrap()
    @@ -369,5 +368,4 @@
             assert!(result);
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html index a8be3b9f94..bd917525dc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_bitcoind_rpc_polling/main.rs.html @@ -1,4 +1,4 @@ -main.rs - source
    1
    +main.rs - source
    1
     2
     3
     4
    @@ -381,7 +381,7 @@
     381
     382
     383
    -
    use std::{
    +
    use std::{
         path::PathBuf,
         sync::{
             atomic::{AtomicBool, Ordering},
    @@ -406,8 +406,8 @@
         Keychain,
     };
     
    -const DB_MAGIC: &[u8] = b"bdk_example_rpc";
    -const DB_PATH: &str = ".bdk_example_rpc.db";
    +const DB_MAGIC: &[u8] = b"bdk_example_rpc";
    +const DB_PATH: &str = ".bdk_example_rpc.db";
     
     /// The mpsc channel bound for emissions from [`Emitter`].
     const CHANNEL_BOUND: usize = 10;
    @@ -433,19 +433,19 @@
     #[derive(Args, Debug, Clone)]
     struct RpcArgs {
         /// RPC URL
    -    #[clap(env = "RPC_URL", long, default_value = "127.0.0.1:8332")]
    +    #[clap(env = "RPC_URL", long, default_value = "127.0.0.1:8332")]
         url: String,
         /// RPC auth cookie file
    -    #[clap(env = "RPC_COOKIE", long)]
    +    #[clap(env = "RPC_COOKIE", long)]
         rpc_cookie: Option<PathBuf>,
         /// RPC auth username
    -    #[clap(env = "RPC_USER", long)]
    +    #[clap(env = "RPC_USER", long)]
         rpc_user: Option<String>,
         /// RPC auth password
    -    #[clap(env = "RPC_PASS", long)]
    +    #[clap(env = "RPC_PASS", long)]
         rpc_password: Option<String>,
         /// Starting block height to fallback to if no point of agreement if found
    -    #[clap(env = "FALLBACK_HEIGHT", long, default_value = "0")]
    +    #[clap(env = "FALLBACK_HEIGHT", long, default_value = "0")]
         fallback_height: u32,
     }
     
    @@ -455,8 +455,8 @@
                 (None, None, None) => Self::None,
                 (Some(path), _, _) => Self::CookieFile(path),
                 (_, Some(user), Some(pass)) => Self::UserPass(user, pass),
    -            (_, Some(_), None) => panic!("rpc auth: missing rpc_pass"),
    -            (_, None, Some(_)) => panic!("rpc auth: missing rpc_user"),
    +            (_, Some(_), None) => panic!("rpc auth: missing rpc_pass"),
    +            (_, None, Some(_)) => panic!("rpc auth: missing rpc_user"),
             }
         }
     }
    @@ -469,8 +469,8 @@
                     (None, None, None) => Auth::None,
                     (Some(path), _, _) => Auth::CookieFile(path.clone()),
                     (_, Some(user), Some(pass)) => Auth::UserPass(user.clone(), pass.clone()),
    -                (_, Some(_), None) => panic!("rpc auth: missing rpc_pass"),
    -                (_, None, Some(_)) => panic!("rpc auth: missing rpc_user"),
    +                (_, Some(_), None) => panic!("rpc auth: missing rpc_pass"),
    +                (_, None, Some(_)) => panic!("rpc auth: missing rpc_user"),
                 },
             )?)
         }
    @@ -501,7 +501,7 @@
             init_changeset,
         } = example_cli::init::<RpcCommands, RpcArgs, ChangeSet>(DB_MAGIC, DB_PATH)?;
         println!(
    -        "[{:>10}s] loaded initial changeset from db",
    +        "[{:>10}s] loaded initial changeset from db",
             start.elapsed().as_secs_f32()
         );
         let (init_chain_changeset, init_graph_changeset) = init_changeset;
    @@ -512,7 +512,7 @@
             graph
         });
         println!(
    -        "[{:>10}s] loaded indexed tx graph from changeset",
    +        "[{:>10}s] loaded indexed tx graph from changeset",
             start.elapsed().as_secs_f32()
         );
     
    @@ -527,7 +527,7 @@
             LocalChain::from_changeset(init_chain_changeset)?
         });
         println!(
    -        "[{:>10}s] loaded local chain from changeset",
    +        "[{:>10}s] loaded local chain from changeset",
             start.elapsed().as_secs_f32()
         );
     
    @@ -572,7 +572,7 @@
     
                     let chain_changeset = chain
                         .apply_update(emission.checkpoint)
    -                    .expect("must always apply as we receive blocks in order from emitter");
    +                    .expect("must always apply as we receive blocks in order from emitter");
                     let graph_changeset = graph.apply_block_relevant(&emission.block, height);
                     db.stage((chain_changeset, graph_changeset));
     
    @@ -581,7 +581,7 @@
                         last_db_commit = Instant::now();
                         db.commit()?;
                         println!(
    -                        "[{:>10}s] committed to db (took {}s)",
    +                        "[{:>10}s] committed to db (took {}s)",
                             start.elapsed().as_secs_f32(),
                             last_db_commit.elapsed().as_secs_f32()
                         );
    @@ -600,7 +600,7 @@
                             )
                         };
                         println!(
    -                        "[{:>10}s] synced to {} @ {} | total: {} sats",
    +                        "[{:>10}s] synced to {} @ {} | total: {} sats",
                             start.elapsed().as_secs_f32(),
                             synced_to.hash(),
                             synced_to.height(),
    @@ -628,7 +628,7 @@
                 let last_cp = chain.lock().unwrap().tip();
     
                 println!(
    -                "[{:>10}s] starting emitter thread...",
    +                "[{:>10}s] starting emitter thread...",
                     start.elapsed().as_secs_f32()
                 );
                 let (tx, rx) = std::sync::mpsc::sync_channel::<Emission>(CHANNEL_BOUND);
    @@ -656,16 +656,16 @@
                                 if await_flag(&sigterm_flag, MEMPOOL_EMIT_DELAY) {
                                     break;
                                 }
    -                            println!("preparing mempool emission...");
    +                            println!("preparing mempool emission...");
                                 let now = Instant::now();
                                 tx.send(Emission::Mempool(emitter.mempool()?))?;
    -                            println!("mempool emission prepared in {}s", now.elapsed().as_secs());
    +                            println!("mempool emission prepared in {}s", now.elapsed().as_secs());
                                 continue;
                             }
                         };
                     }
     
    -                println!("emitter thread shutting down...");
    +                println!("emitter thread shutting down...");
                     Ok(())
                 });
     
    @@ -683,7 +683,7 @@
                             let height = block_emission.block_height();
                             let chain_changeset = chain
                                 .apply_update(block_emission.checkpoint)
    -                            .expect("must always apply as we receive blocks in order from emitter");
    +                            .expect("must always apply as we receive blocks in order from emitter");
                             let graph_changeset =
                                 graph.apply_block_relevant(&block_emission.block, height);
                             (chain_changeset, graph_changeset)
    @@ -706,7 +706,7 @@
                         last_db_commit = Instant::now();
                         db.commit()?;
                         println!(
    -                        "[{:>10}s] committed to db (took {}s)",
    +                        "[{:>10}s] committed to db (took {}s)",
                             start.elapsed().as_secs_f32(),
                             last_db_commit.elapsed().as_secs_f32()
                         );
    @@ -724,7 +724,7 @@
                             )
                         };
                         println!(
    -                        "[{:>10}s] synced to {} @ {} / {} | total: {} sats",
    +                        "[{:>10}s] synced to {} @ {} / {} | total: {} sats",
                             start.elapsed().as_secs_f32(),
                             synced_to.hash(),
                             synced_to.height(),
    @@ -734,7 +734,7 @@
                     }
                 }
     
    -            emission_jh.join().expect("must join emitter thread")?;
    +            emission_jh.join().expect("must join emitter thread")?;
             }
         }
     
    @@ -764,5 +764,4 @@
             std::thread::sleep(Duration::from_secs(1));
         }
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html index 2270c98f7b..1fe754240e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_cli/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
    1
    +lib.rs - source
    1
     2
     3
     4
    @@ -737,7 +737,7 @@
     737
     738
     739
    -
    pub use anyhow;
    +
    pub use anyhow;
     use anyhow::Context;
     use bdk_coin_select::{coin_select_bnb, CoinSelector, CoinSelectorOpt, WeightedValue};
     use bdk_file_store::Store;
    @@ -776,18 +776,18 @@
     #[clap(author, version, about, long_about = None)]
     #[clap(propagate_version = true)]
     pub struct Args<CS: clap::Subcommand, S: clap::Args> {
    -    #[clap(env = "DESCRIPTOR")]
    +    #[clap(env = "DESCRIPTOR")]
         pub descriptor: String,
    -    #[clap(env = "CHANGE_DESCRIPTOR")]
    +    #[clap(env = "CHANGE_DESCRIPTOR")]
         pub change_descriptor: Option<String>,
     
    -    #[clap(env = "BITCOIN_NETWORK", long, default_value = "signet")]
    +    #[clap(env = "BITCOIN_NETWORK", long, default_value = "signet")]
         pub network: Network,
     
    -    #[clap(env = "BDK_DB_PATH", long, default_value = ".bdk_example_db")]
    +    #[clap(env = "BDK_DB_PATH", long, default_value = ".bdk_example_db")]
         pub db_path: PathBuf,
     
    -    #[clap(env = "BDK_CP_LIMIT", long, default_value = "20")]
    +    #[clap(env = "BDK_CP_LIMIT", long, default_value = "20")]
         pub cp_limit: usize,
     
         #[clap(subcommand)]
    @@ -806,7 +806,7 @@
         /// Get the wallet balance.
         Balance,
         /// TxOut related commands.
    -    #[clap(name = "txout")]
    +    #[clap(name = "txout")]
         TxOut {
             #[clap(subcommand)]
             txout_cmd: TxOutCmd,
    @@ -817,7 +817,7 @@
             value: u64,
             /// Destination address
             address: Address<address::NetworkUnchecked>,
    -        #[clap(short, default_value = "bnb")]
    +        #[clap(short, default_value = "bnb")]
             coin_select: CoinSelectionAlgo,
             #[clap(flatten)]
             chain_specific: S,
    @@ -845,14 +845,14 @@
         fn from_str(s: &str) -> Result<Self, Self::Err> {
             use CoinSelectionAlgo::*;
             Ok(match s {
    -            "largest-first" => LargestFirst,
    -            "smallest-first" => SmallestFirst,
    -            "oldest-first" => OldestFirst,
    -            "newest-first" => NewestFirst,
    -            "bnb" => BranchAndBound,
    +            "largest-first" => LargestFirst,
    +            "smallest-first" => SmallestFirst,
    +            "oldest-first" => OldestFirst,
    +            "newest-first" => NewestFirst,
    +            "bnb" => BranchAndBound,
                 unknown => {
                     return Err(anyhow::anyhow!(
    -                    "unknown coin selection algorithm '{}'",
    +                    "unknown coin selection algorithm '{}'",
                         unknown
                     ))
                 }
    @@ -861,17 +861,17 @@
     }
     
     impl core::fmt::Display for CoinSelectionAlgo {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             use CoinSelectionAlgo::*;
             write!(
                 f,
    -            "{}",
    +            "{}",
                 match self {
    -                LargestFirst => "largest-first",
    -                SmallestFirst => "smallest-first",
    -                OldestFirst => "oldest-first",
    -                NewestFirst => "newest-first",
    -                BranchAndBound => "bnb",
    +                LargestFirst => "largest-first",
    +                SmallestFirst => "smallest-first",
    +                OldestFirst => "oldest-first",
    +                NewestFirst => "newest-first",
    +                BranchAndBound => "bnb",
                 }
             )
         }
    @@ -921,10 +921,10 @@
     }
     
     impl core::fmt::Display for Keychain {
    -    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
    +    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
             match self {
    -            Keychain::External => write!(f, "external"),
    -            Keychain::Internal => write!(f, "internal"),
    +            Keychain::External => write!(f, "external"),
    +            Keychain::Internal => write!(f, "internal"),
             }
         }
     }
    @@ -944,7 +944,7 @@
         value: u64,
     ) -> anyhow::Result<(Transaction, Option<CreateTxChange>)>
     where
    -    O::Error: std::error::Error + Send + Sync + 'static,
    +    O::Error: std::error::Error + Send + Sync + 'static,
     {
         let mut changeset = keychain::ChangeSet::default();
     
    @@ -1001,7 +1001,7 @@
         let ((change_index, change_script), change_changeset) = graph
             .index
             .next_unused_spk(&internal_keychain)
    -        .expect("Must exist");
    +        .expect("Must exist");
         changeset.append(change_changeset);
     
         // Clone to drop the immutable reference.
    @@ -1012,13 +1012,13 @@
                 .index
                 .keychains()
                 .find(|(k, _)| *k == &internal_keychain)
    -            .expect("must exist")
    +            .expect("must exist")
                 .1
                 .at_derivation_index(change_index)
    -            .expect("change_index can't be hardened"),
    +            .expect("change_index can't be hardened"),
             &assets,
         )
    -    .expect("failed to obtain change plan");
    +    .expect("failed to obtain change plan");
     
         let mut change_output = TxOut {
             value: Amount::ZERO,
    @@ -1031,7 +1031,7 @@
                 .index
                 .keychains()
                 .find(|(k, _)| *k == &internal_keychain)
    -            .expect("must exist")
    +            .expect("must exist")
                 .1
                 .dust_value(),
             ..CoinSelectorOpt::fund_outputs(
    @@ -1070,7 +1070,7 @@
             // because the temporary planning module does not support timelocks, we can use the chain
             // tip as the `lock_time` for anti-fee-sniping purposes
             lock_time: absolute::LockTime::from_height(chain.get_chain_tip()?.height)
    -            .expect("invalid height"),
    +            .expect("invalid height"),
             input: selected_txos
                 .iter()
                 .map(|(_, utxo)| TxIn {
    @@ -1088,7 +1088,7 @@
             .collect::<Vec<_>>();
         let sighash_prevouts = Prevouts::All(&prevouts);
     
    -    // first, set tx values for the plan so that we don't change them while signing
    +    // first, set tx values for the plan so that we don't change them while signing
         for (i, (plan, _)) in selected_txos.iter().enumerate() {
             if let Some(sequence) = plan.required_sequence() {
                 transaction.input[i].sequence = sequence
    @@ -1104,7 +1104,7 @@
             let mut auth_data = bdk_tmp_plan::SatisfactionMaterial::default();
             assert!(
                 !requirements.requires_hash_preimages(),
    -            "can't have hash pre-images since we didn't provide any."
    +            "can't have hash pre-images since we didn't provide any."
             );
             assert!(
                 requirements.signatures.sign_with_keymap(
    @@ -1117,7 +1117,7 @@
                     &mut auth_data,
                     &Secp256k1::default(),
                 )?,
    -            "we should have signed with this input."
    +            "we should have signed with this input."
             );
     
             match plan.try_complete(&auth_data) {
    @@ -1135,7 +1135,7 @@
                 }
                 bdk_tmp_plan::PlanState::Incomplete(_) => {
                     return Err(anyhow::anyhow!(
    -                    "we weren't able to complete the plan with our keys."
    +                    "we weren't able to complete the plan with our keys."
                     ));
                 }
             }
    @@ -1176,10 +1176,10 @@
                     .index
                     .keychains()
                     .find(|(keychain, _)| *keychain == &k)
    -                .expect("keychain must exist")
    +                .expect("keychain must exist")
                     .1
                     .at_derivation_index(i)
    -                .expect("i can't be hardened");
    +                .expect("i can't be hardened");
                 let plan = bdk_tmp_plan::plan_satisfaction(&desc, assets)?;
                 Some(Ok((plan, full_txo)))
             })
    @@ -1196,11 +1196,11 @@
         cmd: Commands<CS, S>,
     ) -> anyhow::Result<()>
     where
    -    O::Error: std::error::Error + Send + Sync + 'static,
    +    O::Error: std::error::Error + Send + Sync + 'static,
         C: Default + Append + DeserializeOwned + Serialize + From<KeychainChangeSet<A>>,
     {
         match cmd {
    -        Commands::ChainSpecific(_) => unreachable!("example code should handle this!"),
    +        Commands::ChainSpecific(_) => unreachable!("example code should handle this!"),
             Commands::Address { addr_cmd } => {
                 let graph = &mut *graph.lock().unwrap();
                 let index = &mut graph.index;
    @@ -1210,24 +1210,24 @@
                         let spk_chooser = match addr_cmd {
                             AddressCmd::Next => KeychainTxOutIndex::next_unused_spk,
                             AddressCmd::New => KeychainTxOutIndex::reveal_next_spk,
    -                        _ => unreachable!("only these two variants exist in match arm"),
    +                        _ => unreachable!("only these two variants exist in match arm"),
                         };
     
                         let ((spk_i, spk), index_changeset) =
    -                        spk_chooser(index, &Keychain::External).expect("Must exist");
    +                        spk_chooser(index, &Keychain::External).expect("Must exist");
                         let db = &mut *db.lock().unwrap();
                         db.stage_and_commit(C::from((
                             local_chain::ChangeSet::default(),
                             indexed_tx_graph::ChangeSet::from(index_changeset),
                         )))?;
                         let addr =
    -                        Address::from_script(spk, network).context("failed to derive address")?;
    -                    println!("[address @ {}] {}", spk_i, addr);
    +                        Address::from_script(spk, network).context("failed to derive address")?;
    +                    println!("[address @ {}] {}", spk_i, addr);
                         Ok(())
                     }
                     AddressCmd::Index => {
                         for (keychain, derivation_index) in index.last_revealed_indices() {
    -                        println!("{:?}: {}", keychain, derivation_index);
    +                        println!("{:?}: {}", keychain, derivation_index);
                         }
                         Ok(())
                     }
    @@ -1238,9 +1238,9 @@
                         };
                         for (spk_i, spk) in index.revealed_keychain_spks(&target_keychain) {
                             let address = Address::from_script(spk, network)
    -                            .expect("should always be able to derive address");
    +                            .expect("should always be able to derive address");
                             println!(
    -                            "{:?} {} used:{}",
    +                            "{:?} {} used:{}",
                                 spk_i,
                                 address,
                                 index.is_used(target_keychain, spk_i)
    @@ -1253,13 +1253,13 @@
             Commands::Balance => {
                 let graph = &*graph.lock().unwrap();
                 let chain = &*chain.lock().unwrap();
    -            fn print_balances<'a>(
    -                title_str: &'a str,
    -                items: impl IntoIterator<Item = (&'a str, Amount)>,
    +            fn print_balances<'a>(
    +                title_str: &'a str,
    +                items: impl IntoIterator<Item = (&'a str, Amount)>,
                 ) {
    -                println!("{}:", title_str);
    +                println!("{}:", title_str);
                     for (name, amount) in items.into_iter() {
    -                    println!("    {:<10} {:>12} sats", name, amount.to_sat())
    +                    println!("    {:<10} {:>12} sats", name, amount.to_sat())
                     }
                 }
     
    @@ -1274,19 +1274,19 @@
                 let unconfirmed_total = balance.untrusted_pending + balance.trusted_pending;
     
                 print_balances(
    -                "confirmed",
    +                "confirmed",
                     [
    -                    ("total", confirmed_total),
    -                    ("spendable", balance.confirmed),
    -                    ("immature", balance.immature),
    +                    ("total", confirmed_total),
    +                    ("spendable", balance.confirmed),
    +                    ("immature", balance.immature),
                     ],
                 );
                 print_balances(
    -                "unconfirmed",
    +                "unconfirmed",
                     [
    -                    ("total", unconfirmed_total),
    -                    ("trusted", balance.trusted_pending),
    -                    ("untrusted", balance.untrusted_pending),
    +                    ("total", unconfirmed_total),
    +                    ("trusted", balance.trusted_pending),
    +                    ("untrusted", balance.untrusted_pending),
                     ],
                 );
     
    @@ -1331,7 +1331,7 @@
                         for (spk_i, full_txo) in txouts {
                             let addr = Address::from_script(&full_txo.txout.script_pubkey, network)?;
                             println!(
    -                            "{:?} {} {} {} spent:{:?}",
    +                            "{:?} {} {} {} spent:{:?}",
                                 spk_i, full_txo.txout.value, full_txo.outpoint, addr, full_txo.spent_by
                             )
                         }
    @@ -1359,9 +1359,9 @@
                         index,
                     }) = change_info
                     {
    -                    // We must first persist to disk the fact that we've got a new address from the
    -                    // change keychain so future scans will find the tx we're about to broadcast.
    -                    // If we're unable to persist this, then we don't want to broadcast.
    +                    // We must first persist to disk the fact that we've got a new address from the
    +                    // change keychain so future scans will find the tx we're about to broadcast.
    +                    // If we're unable to persist this, then we don't want to broadcast.
                         {
                             let db = &mut *db.lock().unwrap();
                             db.stage_and_commit(C::from((
    @@ -1370,8 +1370,8 @@
                             )))?;
                         }
     
    -                    // We don't want other callers/threads to use this address while we're using it
    -                    // but we also don't want to scan the tx we just created because it's not
    +                    // We don't want other callers/threads to use this address while we're using it
    +                    // but we also don't want to scan the tx we just created because it's not
                         // technically in the blockchain yet.
                         graph.index.mark_used(change_keychain, index);
                         (tx, Some((change_keychain, index)))
    @@ -1382,12 +1382,12 @@
     
                 match (broadcast)(chain_specific, &transaction) {
                     Ok(_) => {
    -                    println!("Broadcasted Tx : {}", transaction.txid());
    +                    println!("Broadcasted Tx : {}", transaction.txid());
     
                         let keychain_changeset = graph.lock().unwrap().insert_tx(transaction);
     
                         // We know the tx is at least unconfirmed now. Note if persisting here fails,
    -                    // it's not a big deal since we can always find it again form
    +                    // it's not a big deal since we can always find it again form
                         // blockchain.
                         db.lock().unwrap().stage_and_commit(C::from((
                             local_chain::ChangeSet::default(),
    @@ -1434,17 +1434,17 @@
             + DeserializeOwned
             + core::marker::Send
             + core::marker::Sync
    -        + 'static,
    +        + 'static,
     {
    -    if std::env::var("BDK_DB_PATH").is_err() {
    -        std::env::set_var("BDK_DB_PATH", db_default_path);
    +    if std::env::var("BDK_DB_PATH").is_err() {
    +        std::env::set_var("BDK_DB_PATH", db_default_path);
         }
         let args = Args::<CS, S>::parse();
         let secp = Secp256k1::default();
     
         let mut index = KeychainTxOutIndex::<Keychain>::default();
     
    -    // TODO: descriptors are already stored in the db, so we shouldn't re-insert
    +    // TODO: descriptors are already stored in the db, so we shouldn't re-insert
         // them in the index here. However, the keymap is not stored in the database.
         let (descriptor, mut keymap) =
             Descriptor::<DescriptorPublicKey>::parse_descriptor(&secp, &args.descriptor)?;
    @@ -1462,8 +1462,8 @@
     
         let mut db_backend = match Store::<C>::open_or_create_new(db_magic, &args.db_path) {
             Ok(db_backend) => db_backend,
    -        // we cannot return `err` directly as it has lifetime `'m`
    -        Err(err) => return Err(anyhow::anyhow!("failed to init db backend: {:?}", err)),
    +        // we cannot return `err` directly as it has lifetime `'m`
    +        Err(err) => return Err(anyhow::anyhow!("failed to init db backend: {:?}", err)),
         };
     
         let init_changeset = db_backend.load_from_persistence()?.unwrap_or_default();
    @@ -1476,5 +1476,4 @@
             init_changeset,
         })
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html index c68c84fcb8..ba93c208c3 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_electrum/main.rs.html @@ -1,4 +1,4 @@ -main.rs - source
    1
    +main.rs - source
    1
     2
     3
     4
    @@ -350,7 +350,7 @@
     350
     351
     352
    -
    use std::{
    +
    use std::{
         io::{self, Write},
         sync::Mutex,
     };
    @@ -374,15 +374,15 @@
         Keychain,
     };
     
    -const DB_MAGIC: &[u8] = b"bdk_example_electrum";
    -const DB_PATH: &str = ".bdk_example_electrum.db";
    +const DB_MAGIC: &[u8] = b"bdk_example_electrum";
    +const DB_PATH: &str = ".bdk_example_electrum.db";
     
     #[derive(Subcommand, Debug, Clone)]
     enum ElectrumCommands {
         /// Scans the addresses in the wallet using the electrum API.
         Scan {
             /// When a gap this large has been found for a keychain, it will stop.
    -        #[clap(long, default_value = "5")]
    +        #[clap(long, default_value = "5")]
             stop_gap: usize,
             #[clap(flatten)]
             scan_options: ScanOptions,
    @@ -429,11 +429,11 @@
     impl ElectrumArgs {
         pub fn client(&self, network: Network) -> anyhow::Result<Client> {
             let electrum_url = self.electrum_url.as_deref().unwrap_or(match network {
    -            Network::Bitcoin => "ssl://electrum.blockstream.info:50002",
    -            Network::Testnet => "ssl://electrum.blockstream.info:60002",
    -            Network::Regtest => "tcp://localhost:60401",
    -            Network::Signet => "tcp://signet-electrumx.wakiyamap.dev:50001",
    -            _ => panic!("Unknown network"),
    +            Network::Bitcoin => "ssl://electrum.blockstream.info:50002",
    +            Network::Testnet => "ssl://electrum.blockstream.info:60002",
    +            Network::Regtest => "tcp://localhost:60401",
    +            Network::Signet => "tcp://signet-electrumx.wakiyamap.dev:50001",
    +            _ => panic!("Unknown network"),
             });
             let config = electrum_client::Config::builder()
                 .validate_domain(matches!(network, Network::Bitcoin))
    @@ -446,7 +446,7 @@
     #[derive(Parser, Debug, Clone, PartialEq)]
     pub struct ScanOptions {
         /// Set batch size for each script_history call to electrum client.
    -    #[clap(long, default_value = "25")]
    +    #[clap(long, default_value = "25")]
         pub batch_size: usize,
     }
     
    @@ -532,18 +532,18 @@
                             let mut once = BTreeSet::new();
                             move |k, spk_i, _| {
                                 if once.insert(k) {
    -                                eprint!("\nScanning {}: {} ", k, spk_i);
    +                                eprint!("\nScanning {}: {} ", k, spk_i);
                                 } else {
    -                                eprint!("{} ", spk_i);
    +                                eprint!("{} ", spk_i);
                                 }
    -                            io::stdout().flush().expect("must flush");
    +                            io::stdout().flush().expect("must flush");
                             }
                         })
                 };
     
                 let res = client
                     .full_scan::<_>(request, stop_gap, scan_options.batch_size, false)
    -                .context("scanning the blockchain")?
    +                .context("scanning the blockchain")?
                     .with_confirmation_height_anchor();
                 (
                     res.chain_update,
    @@ -559,7 +559,7 @@
                 scan_options,
                 ..
             } => {
    -            // Get a short lock on the tracker to get the spks we're interested in
    +            // Get a short lock on the tracker to get the spks we're interested in
                 let graph = graph.lock().unwrap();
                 let chain = chain.lock().unwrap();
     
    @@ -582,7 +582,7 @@
                         .map(|(k, i, spk)| (k.to_owned(), i, spk.to_owned()))
                         .collect::<Vec<_>>();
                     request = request.chain_spks(all_spks.into_iter().map(|(k, spk_i, spk)| {
    -                    eprint!("Scanning {}: {}", k, spk_i);
    +                    eprint!("Scanning {}: {}", k, spk_i);
                         spk
                     }));
                 }
    @@ -595,7 +595,7 @@
                     request =
                         request.chain_spks(unused_spks.into_iter().map(move |(k, spk_i, spk)| {
                             eprint!(
    -                            "Checking if address {} {}:{} has been used",
    +                            "Checking if address {} {}:{} has been used",
                                 Address::from_script(&spk, args.network).unwrap(),
                                 k,
                                 spk_i,
    @@ -614,7 +614,7 @@
                         .collect::<Vec<_>>();
                     request = request.chain_outpoints(utxos.into_iter().map(|utxo| {
                         eprint!(
    -                        "Checking if outpoint {} (value: {}) has been spent",
    +                        "Checking if outpoint {} (value: {}) has been spent",
                             utxo.outpoint, utxo.txout.value
                         );
                         utxo.outpoint
    @@ -632,7 +632,7 @@
                     request = request.chain_txids(
                         unconfirmed_txids
                             .into_iter()
    -                        .inspect(|txid| eprint!("Checking if {} is confirmed yet", txid)),
    +                        .inspect(|txid| eprint!("Checking if {} is confirmed yet", txid)),
                     );
                 }
     
    @@ -644,27 +644,27 @@
                         let mut visited = 0;
                         move |_| {
                             visited += 1;
    -                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_spks as f32)
    +                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_spks as f32)
                         }
                     })
                     .inspect_txids({
                         let mut visited = 0;
                         move |_| {
                             visited += 1;
    -                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_txids as f32)
    +                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_txids as f32)
                         }
                     })
                     .inspect_outpoints({
                         let mut visited = 0;
                         move |_| {
                             visited += 1;
    -                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_ops as f32)
    +                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_ops as f32)
                         }
                     });
     
                 let res = client
                     .sync(request, scan_options.batch_size, false)
    -                .context("scanning the blockchain")?
    +                .context("scanning the blockchain")?
                     .with_confirmation_height_anchor();
     
                 // drop lock on graph and chain
    @@ -676,7 +676,7 @@
     
         let now = std::time::UNIX_EPOCH
             .elapsed()
    -        .expect("must get time")
    +        .expect("must get time")
             .as_secs();
         let _ = graph_update.update_last_seen_unconfirmed(now);
     
    @@ -702,5 +702,4 @@
         db.commit()?;
         Ok(())
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html index 36e849f8b7..8c7cc986f1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/example_esplora/main.rs.html @@ -1,4 +1,4 @@ -main.rs - source
    1
    +main.rs - source
    1
     2
     3
     4
    @@ -361,7 +361,7 @@
     361
     362
     363
    -
    use std::{
    +
    use std::{
         collections::BTreeSet,
         io::{self, Write},
         sync::Mutex,
    @@ -384,8 +384,8 @@
         Keychain,
     };
     
    -const DB_MAGIC: &[u8] = b"bdk_example_esplora";
    -const DB_PATH: &str = ".bdk_esplora_example.db";
    +const DB_MAGIC: &[u8] = b"bdk_example_esplora";
    +const DB_PATH: &str = ".bdk_esplora_example.db";
     
     type ChangeSet = (
         local_chain::ChangeSet,
    @@ -397,7 +397,7 @@
         /// Scans the addresses in the wallet using the esplora API.
         Scan {
             /// When a gap this large has been found for a keychain, it will stop.
    -        #[clap(long, default_value = "5")]
    +        #[clap(long, default_value = "5")]
             stop_gap: usize,
             #[clap(flatten)]
             scan_options: ScanOptions,
    @@ -437,18 +437,18 @@
     #[derive(clap::Args, Debug, Clone)]
     pub struct EsploraArgs {
         /// The esplora url endpoint to connect to e.g. `<https://blockstream.info/api>`
    -    /// If not provided it'll be set to a default for the network provided
    +    /// If not provided it'll be set to a default for the network provided
         esplora_url: Option<String>,
     }
     
     impl EsploraArgs {
         pub fn client(&self, network: Network) -> anyhow::Result<esplora_client::BlockingClient> {
             let esplora_url = self.esplora_url.as_deref().unwrap_or(match network {
    -            Network::Bitcoin => "https://blockstream.info/api",
    -            Network::Testnet => "https://blockstream.info/testnet/api",
    -            Network::Regtest => "http://localhost:3002",
    -            Network::Signet => "https://mempool.space/signet/api",
    -            _ => panic!("unsupported network"),
    +            Network::Bitcoin => "https://blockstream.info/api",
    +            Network::Testnet => "https://blockstream.info/testnet/api",
    +            Network::Regtest => "http://localhost:3002",
    +            Network::Signet => "https://mempool.space/signet/api",
    +            _ => panic!("unsupported network"),
             });
     
             let client = esplora_client::Builder::new(esplora_url).build_blocking();
    @@ -459,7 +459,7 @@
     #[derive(Parser, Debug, Clone, PartialEq)]
     pub struct ScanOptions {
         /// Max number of concurrent esplora server requests.
    -    #[clap(long, default_value = "1")]
    +    #[clap(long, default_value = "1")]
         pub parallel_requests: usize,
     }
     
    @@ -478,7 +478,7 @@
     
         // Construct `IndexedTxGraph` and `LocalChain` with our initial changeset. They are wrapped in
         // `Mutex` to display how they can be used in a multithreaded context. Technically the mutexes
    -    // aren't strictly needed here.
    +    // aren't strictly needed here.
         let graph = Mutex::new({
             let mut graph = IndexedTxGraph::new(index);
             graph.apply_changeset(init_indexed_tx_graph_changeset);
    @@ -520,7 +520,7 @@
         // Scanning: We are iterating through spks of all keychains and scanning for transactions for
         //   each spk. We start with the lowest derivation index spk and stop scanning after `stop_gap`
         //   number of consecutive spks have no transaction history. A Scan is done in situations of
    -    //   wallet restoration. It is a special case. Applications should use "sync" style updates
    +    //   wallet restoration. It is a special case. Applications should use "sync" style updates
         //   after an initial scan.
         //
         // Syncing: We only check for specified spks, utxos and txids to update their confirmation
    @@ -532,16 +532,16 @@
                 ..
             } => {
                 let request = {
    -                let chain_tip = chain.lock().expect("mutex must not be poisoned").tip();
    -                let indexed_graph = &*graph.lock().expect("mutex must not be poisoned");
    +                let chain_tip = chain.lock().expect("mutex must not be poisoned").tip();
    +                let indexed_graph = &*graph.lock().expect("mutex must not be poisoned");
                     FullScanRequest::from_keychain_txout_index(chain_tip, &indexed_graph.index)
                         .inspect_spks_for_all_keychains({
                             let mut once = BTreeSet::<Keychain>::new();
                             move |keychain, spk_i, _| {
                                 if once.insert(keychain) {
    -                                eprint!("\nscanning {}: ", keychain);
    +                                eprint!("\nscanning {}: ", keychain);
                                 }
    -                            eprint!("{} ", spk_i);
    +                            eprint!("{} ", spk_i);
                                 // Flush early to ensure we print at every iteration.
                                 let _ = io::stderr().flush();
                             }
    @@ -554,14 +554,14 @@
                 // (`keychain_indices_update`).
                 let mut update = client
                     .full_scan(request, *stop_gap, scan_options.parallel_requests)
    -                .context("scanning for transactions")?;
    +                .context("scanning for transactions")?;
     
                 // We want to keep track of the latest time a transaction was seen unconfirmed.
                 let now = std::time::UNIX_EPOCH.elapsed().unwrap().as_secs();
                 let _ = update.graph_update.update_last_seen_unconfirmed(now);
     
    -            let mut graph = graph.lock().expect("mutex must not be poisoned");
    -            let mut chain = chain.lock().expect("mutex must not be poisoned");
    +            let mut graph = graph.lock().expect("mutex must not be poisoned");
    +            let mut chain = chain.lock().expect("mutex must not be poisoned");
                 // Because we did a stop gap based scan we are likely to have some updates to our
                 // deriviation indices. Usually before a scan you are on a fresh wallet with no
                 // addresses derived so we need to derive up to last active addresses the scan found
    @@ -589,12 +589,12 @@
                     unconfirmed = true;
                     utxos = true;
                 } else if *all_spks {
    -                // If all spks is selected, we don't need to also select unused spks (as unused spks
    +                // If all spks is selected, we don't need to also select unused spks (as unused spks
                     // is a subset of all spks).
                     unused_spks = false;
                 }
     
    -            let local_tip = chain.lock().expect("mutex must not be poisoned").tip();
    +            let local_tip = chain.lock().expect("mutex must not be poisoned").tip();
                 // Spks, outpoints and txids we want updates on will be accumulated here.
                 let mut request = SyncRequest::from_chain_tip(local_tip.clone());
     
    @@ -611,7 +611,7 @@
                             .map(|(k, i, spk)| (k.to_owned(), i, spk.to_owned()))
                             .collect::<Vec<_>>();
                         request = request.chain_spks(all_spks.into_iter().map(|(k, i, spk)| {
    -                        eprint!("scanning {}:{}", k, i);
    +                        eprint!("scanning {}:{}", k, i);
                             // Flush early to ensure we print at every iteration.
                             let _ = io::stderr().flush();
                             spk
    @@ -626,7 +626,7 @@
                         request =
                             request.chain_spks(unused_spks.into_iter().map(move |(k, i, spk)| {
                                 eprint!(
    -                                "Checking if address {} {}:{} has been used",
    +                                "Checking if address {} {}:{} has been used",
                                     Address::from_script(&spk, args.network).unwrap(),
                                     k,
                                     i,
    @@ -651,7 +651,7 @@
                                 .into_iter()
                                 .inspect(|utxo| {
                                     eprint!(
    -                                    "Checking if outpoint {} (value: {}) has been spent",
    +                                    "Checking if outpoint {} (value: {}) has been spent",
                                         utxo.outpoint, utxo.txout.value
                                     );
                                     // Flush early to ensure we print at every iteration.
    @@ -671,7 +671,7 @@
                             .map(|canonical_tx| canonical_tx.tx_node.txid)
                             .collect::<Vec<Txid>>();
                         request = request.chain_txids(unconfirmed_txids.into_iter().inspect(|txid| {
    -                        eprint!("Checking if {} is confirmed yet", txid);
    +                        eprint!("Checking if {} is confirmed yet", txid);
                             // Flush early to ensure we print at every iteration.
                             let _ = io::stderr().flush();
                         }));
    @@ -686,21 +686,21 @@
                         let mut visited = 0;
                         move |_| {
                             visited += 1;
    -                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_spks as f32)
    +                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_spks as f32)
                         }
                     })
                     .inspect_txids({
                         let mut visited = 0;
                         move |_| {
                             visited += 1;
    -                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_txids as f32)
    +                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_txids as f32)
                         }
                     })
                     .inspect_outpoints({
                         let mut visited = 0;
                         move |_| {
                             visited += 1;
    -                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_ops as f32)
    +                        eprintln!(" [ {:>6.2}% ]", (visited * 100) as f32 / total_ops as f32)
                         }
                     });
                 let mut update = client.sync(request, scan_options.parallel_requests)?;
    @@ -724,5 +724,4 @@
         db.commit()?;
         Ok(())
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_electrum_example/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_electrum_example/main.rs.html index 5b820b8755..992f60e966 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_electrum_example/main.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_electrum_example/main.rs.html @@ -1,4 +1,4 @@ -main.rs - source
    1
    +main.rs - source
    1
     2
     3
     4
    @@ -94,7 +94,7 @@
     94
     95
     96
    -
    const DB_MAGIC: &str = "bdk_wallet_electrum_example";
    +
    const DB_MAGIC: &str = "bdk_wallet_electrum_example";
     const SEND_AMOUNT: Amount = Amount::from_sat(5000);
     const STOP_GAP: usize = 50;
     const BATCH_SIZE: usize = 5;
    @@ -113,11 +113,11 @@
     use bdk_wallet::{KeychainKind, SignOptions};
     
     fn main() -> Result<(), anyhow::Error> {
    -    let db_path = std::env::temp_dir().join("bdk-electrum-example");
    +    let db_path = std::env::temp_dir().join("bdk-electrum-example");
         let db =
             Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
    -    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    -    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    +    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    +    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
     
         let mut wallet = Wallet::new_or_load(
             external_descriptor,
    @@ -127,13 +127,13 @@
         )?;
     
         let address = wallet.next_unused_address(KeychainKind::External)?;
    -    println!("Generated Address: {}", address);
    +    println!("Generated Address: {}", address);
     
         let balance = wallet.get_balance();
    -    println!("Wallet balance before syncing: {} sats", balance.total());
    +    println!("Wallet balance before syncing: {} sats", balance.total());
     
    -    print!("Syncing...");
    -    let client = electrum_client::Client::new("ssl://electrum.blockstream.info:60002")?;
    +    print!("Syncing...");
    +    let client = electrum_client::Client::new("ssl://electrum.blockstream.info:60002")?;
     
         let request = wallet
             .start_full_scan()
    @@ -141,13 +141,13 @@
                 let mut once = HashSet::<KeychainKind>::new();
                 move |k, spk_i, _| {
                     if once.insert(k) {
    -                    print!("\nScanning keychain [{:?}]", k)
    +                    print!("\nScanning keychain [{:?}]", k)
                     } else {
    -                    print!(" {:<3}", spk_i)
    +                    print!(" {:<3}", spk_i)
                     }
                 }
             })
    -        .inspect_spks_for_all_keychains(|_, _, _| std::io::stdout().flush().expect("must flush"));
    +        .inspect_spks_for_all_keychains(|_, _, _| std::io::stdout().flush().expect("must flush"));
     
         let mut update = client
             .full_scan(request, STOP_GAP, BATCH_SIZE, false)?
    @@ -162,17 +162,17 @@
         wallet.commit()?;
     
         let balance = wallet.get_balance();
    -    println!("Wallet balance after syncing: {} sats", balance.total());
    +    println!("Wallet balance after syncing: {} sats", balance.total());
     
         if balance.total() < SEND_AMOUNT {
             println!(
    -            "Please send at least {} sats to the receiving address",
    +            "Please send at least {} sats to the receiving address",
                 SEND_AMOUNT
             );
             std::process::exit(0);
         }
     
    -    let faucet_address = Address::from_str("mkHS9ne12qx9pS9VojpwU5xtRd4T7X7ZUt")?
    +    let faucet_address = Address::from_str("mkHS9ne12qx9pS9VojpwU5xtRd4T7X7ZUt")?
             .require_network(Network::Testnet)?;
     
         let mut tx_builder = wallet.build_tx();
    @@ -186,9 +186,8 @@
     
         let tx = psbt.extract_tx()?;
         client.transaction_broadcast(&tx)?;
    -    println!("Tx broadcasted! Txid: {}", tx.txid());
    +    println!("Tx broadcasted! Txid: {}", tx.txid());
     
         Ok(())
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_async/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_async/main.rs.html index 32bde96a8d..7cc0111e07 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_async/main.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_async/main.rs.html @@ -1,4 +1,4 @@ -main.rs - source
    1
    +main.rs - source
    1
     2
     3
     4
    @@ -107,55 +107,53 @@
     107
     108
     109
    -110
    -
    use std::{collections::BTreeSet, io::Write, str::FromStr};
    +
    use std::{collections::BTreeSet, io::Write, str::FromStr};
     
     use bdk_esplora::{esplora_client, EsploraAsyncExt};
    -use bdk_file_store::Store;
     use bdk_wallet::{
         bitcoin::{Address, Amount, Network, Script},
         KeychainKind, SignOptions, Wallet,
     };
     
    -const DB_MAGIC: &str = "bdk_wallet_esplora_async_example";
    +use bdk_sqlite::{rusqlite::Connection, Store};
    +
     const SEND_AMOUNT: Amount = Amount::from_sat(5000);
     const STOP_GAP: usize = 50;
     const PARALLEL_REQUESTS: usize = 5;
     
     #[tokio::main]
     async fn main() -> Result<(), anyhow::Error> {
    -    let db_path = std::env::temp_dir().join("bdk-esplora-async-example");
    -    let db =
    -        Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
    -    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    -    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    +    let db_path = "bdk-esplora-async-example.sqlite";
    +    let conn = Connection::open(db_path)?;
    +    let db = Store::new(conn)?;
    +    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    +    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
     
         let mut wallet = Wallet::new_or_load(
             external_descriptor,
             Some(internal_descriptor),
             db,
    -        Network::Testnet,
    +        Network::Signet,
         )?;
     
         let address = wallet.next_unused_address(KeychainKind::External)?;
    -    println!("Generated Address: {}", address);
    +    println!("Generated Address: {}", address);
     
         let balance = wallet.get_balance();
    -    println!("Wallet balance before syncing: {} sats", balance.total());
    +    println!("Wallet balance before syncing: {} sats", balance.total());
     
    -    print!("Syncing...");
    -    let client =
    -        esplora_client::Builder::new("https://blockstream.info/testnet/api").build_async()?;
    +    print!("Syncing...");
    +    let client = esplora_client::Builder::new("http://signet.bitcoindevkit.net").build_async()?;
     
    -    fn generate_inspect(kind: KeychainKind) -> impl FnMut(u32, &Script) + Send + Sync + 'static {
    +    fn generate_inspect(kind: KeychainKind) -> impl FnMut(u32, &Script) + Send + Sync + 'static {
             let mut once = Some(());
             let mut stdout = std::io::stdout();
             move |spk_i, _| {
                 match once.take() {
    -                Some(_) => print!("\nScanning keychain [{:?}]", kind),
    -                None => print!(" {:<3}", spk_i),
    +                Some(_) => print!("\nScanning keychain [{:?}]", kind),
    +                None => print!(" {:<3}", spk_i),
                 };
    -            stdout.flush().expect("must flush");
    +            stdout.flush().expect("must flush");
             }
         }
         let request = wallet
    @@ -164,10 +162,10 @@
                 let mut once = BTreeSet::<KeychainKind>::new();
                 move |keychain, spk_i, _| {
                     match once.insert(keychain) {
    -                    true => print!("\nScanning keychain [{:?}]", keychain),
    -                    false => print!(" {:<3}", spk_i),
    +                    true => print!("\nScanning keychain [{:?}]", keychain),
    +                    false => print!(" {:<3}", spk_i),
                     }
    -                std::io::stdout().flush().expect("must flush")
    +                std::io::stdout().flush().expect("must flush")
                 }
             })
             .inspect_spks_for_keychain(
    @@ -190,18 +188,18 @@
         println!();
     
         let balance = wallet.get_balance();
    -    println!("Wallet balance after syncing: {} sats", balance.total());
    +    println!("Wallet balance after syncing: {} sats", balance.total());
     
         if balance.total() < SEND_AMOUNT {
             println!(
    -            "Please send at least {} sats to the receiving address",
    +            "Please send at least {} sats to the receiving address",
                 SEND_AMOUNT
             );
             std::process::exit(0);
         }
     
    -    let faucet_address = Address::from_str("mkHS9ne12qx9pS9VojpwU5xtRd4T7X7ZUt")?
    -        .require_network(Network::Testnet)?;
    +    let faucet_address = Address::from_str("mkHS9ne12qx9pS9VojpwU5xtRd4T7X7ZUt")?
    +        .require_network(Network::Signet)?;
     
         let mut tx_builder = wallet.build_tx();
         tx_builder
    @@ -214,9 +212,8 @@
     
         let tx = psbt.extract_tx()?;
         client.broadcast(&tx).await?;
    -    println!("Tx broadcasted! Txid: {}", tx.txid());
    +    println!("Tx broadcasted! Txid: {}", tx.txid());
     
         Ok(())
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_blocking/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_blocking/main.rs.html index ff20b00209..f018ef53da 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_blocking/main.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_esplora_blocking/main.rs.html @@ -1,4 +1,4 @@ -main.rs - source
    1
    +main.rs - source
    1
     2
     3
     4
    @@ -84,7 +84,7 @@
     84
     85
     86
    -
    const DB_MAGIC: &str = "bdk_wallet_esplora_example";
    +
    const DB_MAGIC: &str = "bdk_wallet_esplora_example";
     const SEND_AMOUNT: Amount = Amount::from_sat(1000);
     const STOP_GAP: usize = 5;
     const PARALLEL_REQUESTS: usize = 1;
    @@ -99,11 +99,11 @@
     };
     
     fn main() -> Result<(), anyhow::Error> {
    -    let db_path = std::env::temp_dir().join("bdk-esplora-example");
    +    let db_path = std::env::temp_dir().join("bdk-esplora-example");
         let db =
             Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
    -    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    -    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
    +    let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
    +    let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";
     
         let mut wallet = Wallet::new_or_load(
             external_descriptor,
    @@ -113,23 +113,23 @@
         )?;
     
         let address = wallet.next_unused_address(KeychainKind::External)?;
    -    println!("Generated Address: {}", address);
    +    println!("Generated Address: {}", address);
     
         let balance = wallet.get_balance();
    -    println!("Wallet balance before syncing: {} sats", balance.total());
    +    println!("Wallet balance before syncing: {} sats", balance.total());
     
    -    print!("Syncing...");
    +    print!("Syncing...");
         let client =
    -        esplora_client::Builder::new("https://blockstream.info/testnet/api").build_blocking();
    +        esplora_client::Builder::new("https://blockstream.info/testnet/api").build_blocking();
     
         let request = wallet.start_full_scan().inspect_spks_for_all_keychains({
             let mut once = BTreeSet::<KeychainKind>::new();
             move |keychain, spk_i, _| {
                 match once.insert(keychain) {
    -                true => print!("\nScanning keychain [{:?}]", keychain),
    -                false => print!(" {:<3}", spk_i),
    +                true => print!("\nScanning keychain [{:?}]", keychain),
    +                false => print!(" {:<3}", spk_i),
                 };
    -            std::io::stdout().flush().expect("must flush")
    +            std::io::stdout().flush().expect("must flush")
             }
         });
     
    @@ -142,17 +142,17 @@
         println!();
     
         let balance = wallet.get_balance();
    -    println!("Wallet balance after syncing: {} sats", balance.total());
    +    println!("Wallet balance after syncing: {} sats", balance.total());
     
         if balance.total() < SEND_AMOUNT {
             println!(
    -            "Please send at least {} sats to the receiving address",
    +            "Please send at least {} sats to the receiving address",
                 SEND_AMOUNT
             );
             std::process::exit(0);
         }
     
    -    let faucet_address = Address::from_str("mkHS9ne12qx9pS9VojpwU5xtRd4T7X7ZUt")?
    +    let faucet_address = Address::from_str("mkHS9ne12qx9pS9VojpwU5xtRd4T7X7ZUt")?
             .require_network(Network::Testnet)?;
     
         let mut tx_builder = wallet.build_tx();
    @@ -166,9 +166,8 @@
     
         let tx = psbt.extract_tx()?;
         client.broadcast(&tx)?;
    -    println!("Tx broadcasted! Txid: {}", tx.txid());
    +    println!("Tx broadcasted! Txid: {}", tx.txid());
     
         Ok(())
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_rpc/main.rs.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_rpc/main.rs.html index 1bc47bdf01..b8edcc6070 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_rpc/main.rs.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/src/wallet_rpc/main.rs.html @@ -1,4 +1,4 @@ -main.rs - source
    1
    +main.rs - source
    1
     2
     3
     4
    @@ -183,7 +183,7 @@
     183
     184
     185
    -
    use bdk_bitcoind_rpc::{
    +
    use bdk_bitcoind_rpc::{
         bitcoincore_rpc::{Auth, Client, RpcApi},
         Emitter,
     };
    @@ -195,7 +195,7 @@
     use clap::{self, Parser};
     use std::{path::PathBuf, sync::mpsc::sync_channel, thread::spawn, time::Instant};
     
    -const DB_MAGIC: &str = "bdk-rpc-wallet-example";
    +const DB_MAGIC: &str = "bdk-rpc-wallet-example";
     
     /// Bitcoind RPC example using `bdk_wallet::Wallet`.
     ///
    @@ -206,36 +206,36 @@
     #[clap(propagate_version = true)]
     pub struct Args {
         /// Wallet descriptor
    -    #[clap(env = "DESCRIPTOR")]
    +    #[clap(env = "DESCRIPTOR")]
         pub descriptor: String,
         /// Wallet change descriptor
    -    #[clap(env = "CHANGE_DESCRIPTOR")]
    +    #[clap(env = "CHANGE_DESCRIPTOR")]
         pub change_descriptor: Option<String>,
         /// Earliest block height to start sync from
    -    #[clap(env = "START_HEIGHT", long, default_value = "481824")]
    +    #[clap(env = "START_HEIGHT", long, default_value = "481824")]
         pub start_height: u32,
         /// Bitcoin network to connect to
    -    #[clap(env = "BITCOIN_NETWORK", long, default_value = "testnet")]
    +    #[clap(env = "BITCOIN_NETWORK", long, default_value = "testnet")]
         pub network: Network,
         /// Where to store wallet data
         #[clap(
    -        env = "BDK_DB_PATH",
    +        env = "BDK_DB_PATH",
             long,
    -        default_value = ".bdk_wallet_rpc_example.db"
    +        default_value = ".bdk_wallet_rpc_example.db"
         )]
         pub db_path: PathBuf,
     
         /// RPC URL
    -    #[clap(env = "RPC_URL", long, default_value = "127.0.0.1:8332")]
    +    #[clap(env = "RPC_URL", long, default_value = "127.0.0.1:8332")]
         pub url: String,
         /// RPC auth cookie file
    -    #[clap(env = "RPC_COOKIE", long)]
    +    #[clap(env = "RPC_COOKIE", long)]
         pub rpc_cookie: Option<PathBuf>,
         /// RPC auth username
    -    #[clap(env = "RPC_USER", long)]
    +    #[clap(env = "RPC_USER", long)]
         pub rpc_user: Option<String>,
         /// RPC auth password
    -    #[clap(env = "RPC_PASS", long)]
    +    #[clap(env = "RPC_PASS", long)]
         pub rpc_pass: Option<String>,
     }
     
    @@ -247,8 +247,8 @@
                     (None, None, None) => Auth::None,
                     (Some(path), _, _) => Auth::CookieFile(path.clone()),
                     (_, Some(user), Some(pass)) => Auth::UserPass(user.clone(), pass.clone()),
    -                (_, Some(_), None) => panic!("rpc auth: missing rpc_pass"),
    -                (_, None, Some(_)) => panic!("rpc auth: missing rpc_user"),
    +                (_, Some(_), None) => panic!("rpc auth: missing rpc_pass"),
    +                (_, None, Some(_)) => panic!("rpc auth: missing rpc_user"),
                 },
             )?)
         }
    @@ -266,7 +266,7 @@
     
         let rpc_client = args.client()?;
         println!(
    -        "Connected to Bitcoin Core RPC at {:?}",
    +        "Connected to Bitcoin Core RPC at {:?}",
             rpc_client.get_blockchain_info().unwrap()
         );
     
    @@ -281,16 +281,16 @@
             args.network,
         )?;
         println!(
    -        "Loaded wallet in {}s",
    +        "Loaded wallet in {}s",
             start_load_wallet.elapsed().as_secs_f32()
         );
     
         let balance = wallet.get_balance();
    -    println!("Wallet balance before syncing: {} sats", balance.total());
    +    println!("Wallet balance before syncing: {} sats", balance.total());
     
         let wallet_tip = wallet.latest_checkpoint();
         println!(
    -        "Wallet tip: {} at height {}",
    +        "Wallet tip: {} at height {}",
             wallet_tip.hash(),
             wallet_tip.height()
         );
    @@ -301,7 +301,7 @@
         ctrlc::set_handler(move || {
             signal_sender
                 .send(Emission::SigTerm)
    -            .expect("failed to send sigterm")
    +            .expect("failed to send sigterm")
         });
     
         let emitter_tip = wallet_tip.clone();
    @@ -318,7 +318,7 @@
         for emission in receiver {
             match emission {
                 Emission::SigTerm => {
    -                println!("Sigterm received, exiting...");
    +                println!("Sigterm received, exiting...");
                     break;
                 }
                 Emission::Block(block_emission) => {
    @@ -331,7 +331,7 @@
                     wallet.commit()?;
                     let elapsed = start_apply_block.elapsed().as_secs_f32();
                     println!(
    -                    "Applied block {} at height {} in {}s",
    +                    "Applied block {} at height {} in {}s",
                         hash, height, elapsed
                     );
                 }
    @@ -340,7 +340,7 @@
                     wallet.apply_unconfirmed_txs(mempool_emission.iter().map(|(tx, time)| (tx, *time)));
                     wallet.commit()?;
                     println!(
    -                    "Applied unconfirmed transactions in {}s",
    +                    "Applied unconfirmed transactions in {}s",
                         start_apply_mempool.elapsed().as_secs_f32()
                     );
                     break;
    @@ -350,23 +350,22 @@
         let wallet_tip_end = wallet.latest_checkpoint();
         let balance = wallet.get_balance();
         println!(
    -        "Synced {} blocks in {}s",
    +        "Synced {} blocks in {}s",
             blocks_received,
             start_load_wallet.elapsed().as_secs_f32(),
         );
         println!(
    -        "Wallet tip is '{}:{}'",
    +        "Wallet tip is '{}:{}'",
             wallet_tip_end.height(),
             wallet_tip_end.hash()
         );
    -    println!("Wallet balance is {} sats", balance.total());
    +    println!("Wallet balance is {} sats", balance.total());
         println!(
    -        "Wallet has {} transactions and {} utxos",
    +        "Wallet has {} transactions and {} utxos",
             wallet.transactions().count(),
             wallet.list_unspent().count()
         );
     
         Ok(())
     }
    -
    -
    \ No newline at end of file + \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/COPYRIGHT-002d5dd09d9a4f50.txt b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/COPYRIGHT-002d5dd09d9a4f50.txt deleted file mode 100644 index 34e48134cc..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/COPYRIGHT-002d5dd09d9a4f50.txt +++ /dev/null @@ -1,46 +0,0 @@ -These documentation pages include resources by third parties. This copyright -file applies only to those resources. The following third party resources are -included, and carry their own copyright notices and license terms: - -* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2): - - Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ - with Reserved Font Name Fira Sans. - - Copyright (c) 2014, Telefonica S.A. - - Licensed under the SIL Open Font License, Version 1.1. - See FiraSans-LICENSE.txt. - -* rustdoc.css, main.js, and playpen.js: - - Copyright 2015 The Rust Developers. - Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or - the MIT license (LICENSE-MIT.txt) at your option. - -* normalize.css: - - Copyright (c) Nicolas Gallagher and Jonathan Neal. - Licensed under the MIT license (see LICENSE-MIT.txt). - -* Source Code Pro (SourceCodePro-Regular.ttf.woff2, - SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2): - - Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), - with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark - of Adobe Systems Incorporated in the United States and/or other countries. - - Licensed under the SIL Open Font License, Version 1.1. - See SourceCodePro-LICENSE.txt. - -* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2, - SourceSerif4-It.ttf.woff2): - - Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name - 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United - States and/or other countries. - - Licensed under the SIL Open Font License, Version 1.1. - See SourceSerif4-LICENSE.md. - -This copyright file is intended to be distributed with rustdoc output. diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/COPYRIGHT-23e9bde6c69aea69.txt b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/COPYRIGHT-23e9bde6c69aea69.txt new file mode 100644 index 0000000000..1447df792f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/COPYRIGHT-23e9bde6c69aea69.txt @@ -0,0 +1,50 @@ +# REUSE-IgnoreStart + +These documentation pages include resources by third parties. This copyright +file applies only to those resources. The following third party resources are +included, and carry their own copyright notices and license terms: + +* Fira Sans (FiraSans-Regular.woff2, FiraSans-Medium.woff2): + + Copyright (c) 2014, Mozilla Foundation https://mozilla.org/ + with Reserved Font Name Fira Sans. + + Copyright (c) 2014, Telefonica S.A. + + Licensed under the SIL Open Font License, Version 1.1. + See FiraSans-LICENSE.txt. + +* rustdoc.css, main.js, and playpen.js: + + Copyright 2015 The Rust Developers. + Licensed under the Apache License, Version 2.0 (see LICENSE-APACHE.txt) or + the MIT license (LICENSE-MIT.txt) at your option. + +* normalize.css: + + Copyright (c) Nicolas Gallagher and Jonathan Neal. + Licensed under the MIT license (see LICENSE-MIT.txt). + +* Source Code Pro (SourceCodePro-Regular.ttf.woff2, + SourceCodePro-Semibold.ttf.woff2, SourceCodePro-It.ttf.woff2): + + Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), + with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark + of Adobe Systems Incorporated in the United States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceCodePro-LICENSE.txt. + +* Source Serif 4 (SourceSerif4-Regular.ttf.woff2, SourceSerif4-Bold.ttf.woff2, + SourceSerif4-It.ttf.woff2): + + Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name + 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United + States and/or other countries. + + Licensed under the SIL Open Font License, Version 1.1. + See SourceSerif4-LICENSE.md. + +This copyright file is intended to be distributed with rustdoc output. + +# REUSE-IgnoreEnd diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt deleted file mode 100644 index ff9afab064..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/FiraSans-LICENSE-1761dca11ffc8f19.txt +++ /dev/null @@ -1,94 +0,0 @@ -Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. -with Reserved Font Name < Fira >, - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/FiraSans-LICENSE-db4b642586e02d97.txt b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/FiraSans-LICENSE-db4b642586e02d97.txt new file mode 100644 index 0000000000..d7e9c149b7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/FiraSans-LICENSE-db4b642586e02d97.txt @@ -0,0 +1,98 @@ +// REUSE-IgnoreStart + +Digitized data copyright (c) 2012-2015, The Mozilla Foundation and Telefonica S.A. +with Reserved Font Name < Fira >, + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt new file mode 100644 index 0000000000..4b3edc29eb --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/NanumBarunGothic-LICENSE-18c5adf4b52b4041.txt @@ -0,0 +1,103 @@ +// REUSE-IgnoreStart + +Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/), + +with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, +NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, +Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, +NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic, +Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt deleted file mode 100644 index 0bf46682b5..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/NanumBarunGothic-LICENSE-2fe9ce67ec95245d.txt +++ /dev/null @@ -1,99 +0,0 @@ -Copyright (c) 2010, NAVER Corporation (https://www.navercorp.com/), - -with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, -NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, -Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, -NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight, NanumBarunGothic, -Naver NanumBarunGothic, NanumSquareRound, NanumBarunPen, MaruBuri - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt new file mode 100644 index 0000000000..0d2941e148 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceCodePro-LICENSE-d180d465a756484a.txt @@ -0,0 +1,97 @@ +// REUSE-IgnoreStart + +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +// REUSE-IgnoreEnd diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt deleted file mode 100644 index 07542572e3..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceCodePro-LICENSE-f554967dca0cf1dd.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2 b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2 deleted file mode 100644 index db57d21455..0000000000 Binary files a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2 and /dev/null differ diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 new file mode 100644 index 0000000000..181a07f63b Binary files /dev/null and b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2 differ diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 new file mode 100644 index 0000000000..2ae08a7bed Binary files /dev/null and b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2 differ diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2 b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2 deleted file mode 100644 index 1cbc021a3a..0000000000 Binary files a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2 and /dev/null differ diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md new file mode 100644 index 0000000000..175fa4f47a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-LICENSE-3bb119e13b1258b7.md @@ -0,0 +1,98 @@ + + +Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. +Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + + diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-LICENSE-964d32dc04f20ca3.md b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-LICENSE-964d32dc04f20ca3.md deleted file mode 100644 index 68ea189240..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-LICENSE-964d32dc04f20ca3.md +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2 b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2 deleted file mode 100644 index 2db73fe2b4..0000000000 Binary files a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2 and /dev/null differ diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 new file mode 100644 index 0000000000..0263fc3042 Binary files /dev/null and b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2 differ diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/ayu-94f39d4346842c1e.css b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/ayu-94f39d4346842c1e.css deleted file mode 100644 index 4674f8370a..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/ayu-94f39d4346842c1e.css +++ /dev/null @@ -1 +0,0 @@ - :root{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--example-line-numbers-border-color:none;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--tooltip-background-color:#314559;--tooltip-color:#c5c5c5;--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--source-sidebar-background-selected:#14191f;--source-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;}h1,h2,h3,h4{color:white;}h1 a{color:#fff;}h4{border:none;}.docblock code{color:#ffb454;}.code-header{color:#e6e1cf;}.docblock pre>code,pre>code{color:#e6e1cf;}.item-info code{color:#e6e1cf;}.docblock a>code{color:#39AFD7 !important;}pre,.rustdoc.source .example-wrap{color:#e6e1cf;}.sidebar .current,.sidebar a:hover{color:#ffb44c;}.sidebar-elems .location{color:#ff7733;}.src-line-numbers .line-highlighted{color:#708090;padding-right:4px;border-right:1px solid #ffb44c;}.search-results a:hover{color:#fff !important;background-color:#3c3c3c;}.search-results a:focus{color:#fff !important;background-color:#3c3c3c;}.search-results a{color:#0096cf;}.search-results a div.desc{color:#c5c5c5;}.content .item-info::before{color:#ccc;}.sidebar h2 a,.sidebar h3 a{color:white;}body.source .example-wrap pre.rust a{background:#333;}.result-name .primitive>i,.result-name .keyword>i{color:#788797;}#titles>button.selected{background-color:#141920 !important;border-bottom:1px solid #ffb44c !important;border-top:none;}#titles>button:not(.selected){background-color:transparent !important;border:none;}#titles>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}#titles>button>div.count{color:#888;}pre.rust .lifetime{}pre.rust .kw{}#titles>button:hover,#titles>button.selected{}pre.rust .self,pre.rust .bool-val,pre.rust .prelude-val,pre.rust .attribute{}pre.rust .kw-2,pre.rust .prelude-ty{}#settings-menu>a img{filter:invert(100);}#source-sidebar>.title{color:#fff;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus,#source-sidebar div.files>a.selected{color:#ffb44c;}.scraped-example-list .scrape-help{border-color:#aaa;color:#eee;}.scraped-example-list .scrape-help:hover{border-color:white;color:white;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(15,20,25,1),rgba(15,20,25,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(15,20,25,1),rgba(15,20,25,0));}.toggle-line-inner{background:#999;}.toggle-line:hover .toggle-line-inner{background:#c5c5c5;} \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/clipboard-7571035ce49a181d.svg b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/clipboard-7571035ce49a181d.svg deleted file mode 100644 index 8adbd99630..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/clipboard-7571035ce49a181d.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/dark-f23faae4a2daf9a6.css b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/dark-f23faae4a2daf9a6.css deleted file mode 100644 index 64d4dec2ba..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/dark-f23faae4a2daf9a6.css +++ /dev/null @@ -1 +0,0 @@ -:root{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--example-line-numbers-border-color:#4a4949;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--tooltip-background-color:#000;--tooltip-color:#fff;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--source-sidebar-background-selected:#333;--source-sidebar-background-hover:#444;--table-alt-row-background-color:#2A2A2A;}.content .item-info::before{color:#ccc;}body.source .example-wrap pre.rust a{background:#333;}#titles>button:not(.selected){background-color:#252525;border-top-color:#252525;}#titles>button:hover,#titles>button.selected{border-top-color:#0089ff;background-color:#353535;}#titles>button>div.count{color:#888;}.scraped-example-list .scrape-help{border-color:#aaa;color:#eee;}.scraped-example-list .scrape-help:hover{border-color:white;color:white;}.scraped-example .example-wrap .rust span.highlight{background:rgb(91,59,1);}.scraped-example .example-wrap .rust span.highlight.focus{background:rgb(124,75,15);}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(53,53,53,1),rgba(53,53,53,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(53,53,53,1),rgba(53,53,53,0));}.toggle-line-inner{background:#999;}.toggle-line:hover .toggle-line-inner{background:#c5c5c5;} \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/down-arrow-927217e04c7463ac.svg b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/down-arrow-927217e04c7463ac.svg deleted file mode 100644 index 5d76a64e92..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/down-arrow-927217e04c7463ac.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/favicon-16x16-8b506e7a72182f1c.png b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/favicon-16x16-8b506e7a72182f1c.png deleted file mode 100644 index ea4b45cae1..0000000000 Binary files a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/favicon-16x16-8b506e7a72182f1c.png and /dev/null differ diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/light-ebce58d0a40c3431.css b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/light-ebce58d0a40c3431.css deleted file mode 100644 index ec0cb610e7..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/light-ebce58d0a40c3431.css +++ /dev/null @@ -1 +0,0 @@ -:root{--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#F5F5F5;--sidebar-background-color-hover:#E0E0E0;--code-block-background-color:#F5F5F5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-results-alias-color:#000;--search-results-grey-color:#999;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--example-line-numbers-border-color:#c7c7c7;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#fdffd3;--target-border-color:#ad7c37;--tooltip-background-color:#000;--tooltip-color:#fff;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--source-sidebar-background-selected:#fff;--source-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#F5F5F5;}.content .item-info::before{color:#ccc;}body.source .example-wrap pre.rust a{background:#eee;}#titles>button:not(.selected){background-color:#e6e6e6;border-top-color:#e6e6e6;}#titles>button:hover,#titles>button.selected{background-color:#ffffff;border-top-color:#0089ff;}#titles>button>div.count{color:#888;}.scraped-example-list .scrape-help{border-color:#555;color:#333;}.scraped-example-list .scrape-help:hover{border-color:black;color:black;}.scraped-example .example-wrap .rust span.highlight{background:#fcffd6;}.scraped-example .example-wrap .rust span.highlight.focus{background:#f6fdb0;}.scraped-example:not(.expanded) .code-wrapper:before{background:linear-gradient(to bottom,rgba(255,255,255,1),rgba(255,255,255,0));}.scraped-example:not(.expanded) .code-wrapper:after{background:linear-gradient(to top,rgba(255,255,255,1),rgba(255,255,255,0));}.toggle-line-inner{background:#ccc;}.toggle-line:hover .toggle-line-inner{background:#999;} \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/main-20a3ad099b048cf2.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/main-20a3ad099b048cf2.js new file mode 100644 index 0000000000..133116e4d8 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/main-20a3ad099b048cf2.js @@ -0,0 +1,11 @@ +"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function blurHandler(event,parentElem,hideCallback){if(!parentElem.contains(document.activeElement)&&!parentElem.contains(event.relatedTarget)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar){const mobileTitle=document.createElement("h2");mobileTitle.className="location";if(hasClass(document.querySelector(".rustdoc"),"crate")){mobileTitle.innerHTML=`Crate ${window.currentCrate}`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url,errorCallback){const script=document.createElement("script");script.src=url;if(errorCallback!==undefined){script.onerror=errorCallback}document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=").map(x=>x.replace(/\+/g," "));params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function sendSearchForm(){document.getElementsByClassName("search-form")[0].submit()}function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"),sendSearchForm);loadScript(resourcePath("search-index",".js"),sendSearchForm)}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},descShards:new Map(),loadDesc:async function({descShard,descIndex}){if(descShard.promise===null){descShard.promise=new Promise((resolve,reject)=>{descShard.resolve=resolve;const ds=descShard;const fname=`${ds.crate}-desc-${ds.shard}-`;const url=resourcePath(`search.desc/${descShard.crate}/${fname}`,".js",);loadScript(url,reject)})}const list=await descShard.promise;return list[descIndex]},loadedDescShard:function(crate,shard,data){this.descShards.get(crate)[shard].resolve(data.split("\n"))},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElem=document.getElementById(implId);if(implElem&&implElem.parentElement.tagName==="SUMMARY"&&implElem.parentElement.parentElement.tagName==="DETAILS"){onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/([^-]+)-([0-9]+)/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0)}},)}}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":case"/":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("opaque","opaque-types","Opaque Types");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","),);for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aIbI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px",)}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ +the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S / /","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for functions that accept or return \ + slices and \ + arrays by writing \ + square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");if(document.querySelector(".rustdoc.src")){window.rustdocToggleSrcSidebar()}e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-3;if(pos=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px",)},100)}}window.addEventListener("resize",()=>{if(window.innerWidth=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}window.hideAllModals(false);e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.classList.add("clicked");if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){reset_button_timeout=null;but.classList.remove("clicked")}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/main-a211dbb005fb8161.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/main-a211dbb005fb8161.js deleted file mode 100644 index 9cbd183d0b..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/main-a211dbb005fb8161.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict";function getVar(name){const el=document.getElementById("rustdoc-vars");if(el){return el.attributes["data-"+name].value}else{return null}}function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function elemIsInParent(elem,parent){while(elem&&elem!==document.body){if(elem===parent){return true}elem=elem.parentElement}return false}function blurHandler(event,parentElem,hideCallback){if(!elemIsInParent(document.activeElement,parentElem)&&!elemIsInParent(event.relatedTarget,parentElem)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileLocationTitle=document.querySelector(".mobile-topbar h2");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileLocationTitle&&locationTitle){mobileLocationTitle.innerHTML=locationTitle.innerHTML}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function loadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="stylesheet";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url){const script=document.createElement("script");script.src=url;document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadCss(getVar("static-root-path")+getVar("settings-css"));loadScript(getVar("static-root-path")+getVar("settings-js"))};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},hideResults:()=>{switchDisplayedElement(null);document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=");params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"));loadScript(resourcePath("search-index",".js"))}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},};function getPageId(){if(window.location.hash){const tmp=window.location.hash.replace(/^#/,"");if(tmp.length>0){return tmp}}return null}const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}if(savedHash!==window.location.hash){savedHash=window.location.hash;if(savedHash.length===0){return}expandSection(savedHash.slice(1))}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();switchDisplayedElement(null);if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const item of filtered){const name=item[0];const desc=item[1];let path;if(shortty==="mod"){path=name+"/index.html"}else{path=shortty+"."+name+".html"}const current_page=document.location.href.split("/").pop();const link=document.createElement("a");link.href=path;link.title=desc;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("union","unions","Unions");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Definitions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector("h1.fqn > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=script?script.getAttribute("data-ignore-extern-crates"):"";for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.indexOf(lib)!==-1){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&href.indexOf("http")!==0){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";if(window.rootPath!=="./"&&crate===window.currentCrate){link.className="current"}link.textContent=crate;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("rustdoc-toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}});const pageId=getPageId();if(pageId!==null){expandSection(pageId)}}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}let oldSidebarScrollPosition=null;window.rustdocMobileScrollLock=function(){const mobile_topbar=document.querySelector(".mobile-topbar");if(window.innerWidth<=window.RUSTDOC_MOBILE_BREAKPOINT){oldSidebarScrollPosition=window.scrollY;document.body.style.width=`${document.body.offsetWidth}px`;document.body.style.position="fixed";document.body.style.top=`-${oldSidebarScrollPosition}px`;if(mobile_topbar){mobile_topbar.style.top=`${oldSidebarScrollPosition}px`;mobile_topbar.style.position="relative"}}else{oldSidebarScrollPosition=null}};window.rustdocMobileScrollUnlock=function(){const mobile_topbar=document.querySelector(".mobile-topbar");if(oldSidebarScrollPosition!==null){document.body.style.width="";document.body.style.position="";document.body.style.top="";if(mobile_topbar){mobile_topbar.style.top="";mobile_topbar.style.position=""}window.scrollTo(0,oldSidebarScrollPosition);oldSidebarScrollPosition=null}};function showSidebar(){window.hideAllModals(false);window.rustdocMobileScrollLock();const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){window.rustdocMobileScrollUnlock();const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.innerWidth>window.RUSTDOC_MOBILE_BREAKPOINT&&oldSidebarScrollPosition!==null){hideSidebar()}if(window.CURRENT_NOTABLE_ELEMENT){const base=window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE;const force_visible=base.NOTABLE_FORCE_VISIBLE;hideNotable(false);if(force_visible){showNotable(base);base.NOTABLE_FORCE_VISIBLE=true}}});function handleClick(id,f){const elem=document.getElementById(id);if(elem){elem.addEventListener("click",f)}}handleClick(MAIN_ID,()=>{hideSidebar()});onEachLazy(document.getElementsByTagName("a"),el=>{if(el.hash){el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})}});onEachLazy(document.querySelectorAll(".rustdoc-toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showNotable(e){if(!window.NOTABLE_TRAITS){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showNotable() called on page without any notable traits!")}}if(window.CURRENT_NOTABLE_ELEMENT&&window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE===e){return}window.hideAllModals(false);const ty=e.getAttribute("data-ty");const wrapper=document.createElement("div");wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[ty]+"
    ";wrapper.className="notable popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideNotable;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px")}wrapper.style.visibility="";window.CURRENT_NOTABLE_ELEMENT=wrapper;window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE=e;wrapper.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!e.NOTABLE_FORCE_VISIBLE&&!elemIsInParent(event.relatedTarget,e)){hideNotable(true)}}}function notableBlurHandler(event){if(window.CURRENT_NOTABLE_ELEMENT&&!elemIsInParent(document.activeElement,window.CURRENT_NOTABLE_ELEMENT)&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT)&&!elemIsInParent(document.activeElement,window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE)&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE)){setTimeout(()=>hideNotable(false),0)}}function hideNotable(focus){if(window.CURRENT_NOTABLE_ELEMENT){if(window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE){if(focus){window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.focus()}window.CURRENT_NOTABLE_ELEMENT.NOTABLE_BASE.NOTABLE_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_NOTABLE_ELEMENT);window.CURRENT_NOTABLE_ELEMENT=null}}onEachLazy(document.getElementsByClassName("notable-traits"),e=>{e.onclick=function(){this.NOTABLE_FORCE_VISIBLE=this.NOTABLE_FORCE_VISIBLE?false:true;if(window.CURRENT_NOTABLE_ELEMENT&&!this.NOTABLE_FORCE_VISIBLE){hideNotable(true)}else{showNotable(this);window.CURRENT_NOTABLE_ELEMENT.setAttribute("tabindex","0");window.CURRENT_NOTABLE_ELEMENT.focus();window.CURRENT_NOTABLE_ELEMENT.onblur=notableBlurHandler}return false};e.onpointerenter=function(ev){if(ev.pointerType!=="mouse"){return}showNotable(this)};e.onpointerleave=function(ev){if(ev.pointerType!=="mouse"){return}if(!this.NOTABLE_FORCE_VISIBLE&&!elemIsInParent(event.relatedTarget,window.CURRENT_NOTABLE_ELEMENT)){hideNotable(true)}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");book_info.className="top";book_info.innerHTML="You can find more information in \ - the rustdoc book.";const shortcuts=[["?","Show this help dialog"],["S","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=["Prefix searches with a type followed by a colon (e.g., fn:) to \ - restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ - enum, trait, type, macro, \ - and const.","Search functions by type signature (e.g., vec -> usize or \ - -> vec)","Search multiple things at once by splitting your query with comma (e.g., \ - str,u8 or String,struct:Vec,test)","You can look for items with an exact name by putting double quotes around \ - your request: \"string\"","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;container.onclick=event=>{event.preventDefault()};help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=function(switchFocus){hideSidebar();window.hidePopoverMenus();hideNotable(switchFocus)};window.hidePopoverMenus=function(){onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){let reset_button_timeout=null;window.copy_path=but=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.children[0].style.display="none";let tmp;if(but.childNodes.length<2){tmp=document.createTextNode("✓");but.appendChild(tmp)}else{onEachLazy(but.childNodes,e=>{if(e.nodeType===Node.TEXT_NODE){tmp=e;return true}});tmp.textContent="✓"}if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){tmp.textContent="";reset_button_timeout=null;but.children[0].style.display=""}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/noscript-13285aec31fa243e.css b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/noscript-13285aec31fa243e.css deleted file mode 100644 index c32e0cb135..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/noscript-13285aec31fa243e.css +++ /dev/null @@ -1 +0,0 @@ - #main-content .attributes{margin-left:0 !important;}#copy-path{display:none;}nav.sub{display:none;}.source .sidebar{display:none;}.notable-traits{display:none;} \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/noscript-df360f571f6edeae.css b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/noscript-df360f571f6edeae.css new file mode 100644 index 0000000000..4c310ae529 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/noscript-df360f571f6edeae.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none !important;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root,:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--settings-menu-filter:none;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root,:root:not([data-theme]){--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}} \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/rustdoc-64f7dca12162a801.css b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/rustdoc-64f7dca12162a801.css deleted file mode 100644 index e35436b639..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/rustdoc-64f7dca12162a801.css +++ /dev/null @@ -1 +0,0 @@ - @font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-d034fe4ef9d0fa00.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}html{content:"";}@media (prefers-color-scheme:light){html{content:"light";}}@media (prefers-color-scheme:dark){html{content:"dark";}}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;-webkit-font-feature-settings:"kern","liga";-moz-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}h1.fqn{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-left>a,.out-of-band,span.since,a.srclink,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.small-section-header a,#source-sidebar a,pre.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name .primitive>i,.result-name .keyword>i{color:var(--main-color);}.content span.enum,.content a.enum,.content span.struct,.content a.struct,.content span.union,.content a.union,.content span.primitive,.content a.primitive,.content span.type,.content a.type,.content span.foreigntype,.content a.foreigntype{color:var(--type-link-color);}.content span.trait,.content a.trait,.content span.traitalias,.content a.traitalias{color:var(--trait-link-color);}.content span.associatedtype,.content a.associatedtype,.content span.constant,.content a.constant,.content span.static,.content a.static{color:var(--assoc-item-link-color);}.content span.fn,.content a.fn,.content span.method,.content a.method,.content span.tymethod,.content a.tymethod{color:var(--function-link-color);}.content span.attr,.content a.attr,.content span.derive,.content a.derive,.content span.macro,.content a.macro{color:var(--macro-link-color);}.content span.mod,.content a.mod{color:var(--mod-link-color);}.content span.keyword,.content a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p{margin:0 0 .75em 0;}p:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.source main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}.source .width-limiter{max-width:unset;}details:not(.rustdoc-toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;}.item-decl pre{overflow-x:auto;}.source .content pre{padding:20px;}img{max-width:100%;}.source .content{overflow:visible;}.sub-logo-container,.logo-container{line-height:0;}.sub-logo-container>img{height:60px;width:60px;object-fit:contain;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar,.mobile-topbar,.sidebar-menu-toggle{background-color:var(--sidebar-background-color);}.sidebar{font-size:0.875rem;flex:0 0 200px;overflow-y:scroll;position:sticky;height:100vh;top:0;left:0;}.rustdoc.source .sidebar{flex-basis:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.source .sidebar,#sidebar-toggle,#source-sidebar{background-color:var(--sidebar-background-color);}#sidebar-toggle>button:hover,#sidebar-toggle>button:focus{background-color:var(--sidebar-background-color-hover);}.source .sidebar>*:not(#sidebar-toggle){visibility:hidden;}.source-sidebar-expanded .source .sidebar{overflow-y:auto;flex-basis:300px;}.source-sidebar-expanded .source .sidebar>*:not(#sidebar-toggle){visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.sidebar .logo-container{margin-top:10px;margin-bottom:10px;text-align:center;}.version{overflow-wrap:break-word;}.logo-container>img{height:100px;width:100px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>h2{padding-left:24px;}.sidebar a,.sidebar .current{color:var(--sidebar-link-color);}.sidebar .current,.sidebar a:hover{background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.mobile-topbar{display:none;}.source .content pre.rust{padding-left:0;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap>pre{margin:0;flex-grow:1;overflow-x:auto;}.rustdoc .example-wrap>pre.example-line-numbers,.rustdoc .example-wrap>pre.src-line-numbers{flex-grow:0;overflow:initial;text-align:right;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.example-line-numbers{border:1px solid;padding:13px 8px;border-top-left-radius:5px;border-bottom-left-radius:5px;border-color:var(--example-line-numbers-border-color);}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);}.src-line-numbers :target{background-color:transparent;border-right:none;padding-right:0;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;overflow:hidden;text-overflow:ellipsis;}.docblock>:not(pre)>code,.docblock-short>code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.source .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}.method .where,.fn .where,.where.fmt-newline{display:block;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.source nav.sub{margin:0 0 15px 0;}.source .search-form{margin-left:32px;}a{text-decoration:none;}.small-section-header{display:block;position:relative;}.small-section-header:hover>.anchor{display:initial;}.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:inline-block;position:absolute;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.small-section-header>.anchor{left:-15px;padding-right:8px;}h2.small-section-header>.anchor{padding-right:6px;}.main-heading a:hover,.example-wrap>pre.rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):hover,.docblock-short a:not(.test-arrow):not(.scrape-help):hover,.item-info a{text-decoration:underline;}.crate.block a.current{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;}.item-row{display:table-row;}.item-left,.item-right{display:table-cell;}.item-left{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}@-moz-document url-prefix(){#crate-search{padding-left:0px;padding-right:19px;}}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url("down-arrow-927217e04c7463ac.svg");filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div{flex:1;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name span.alias{color:var(--search-results-alias-color);}.search-results .result-name span.grey{color:var(--search-results-grey-color);}.popover{position:absolute;top:100%;right:0;z-index:2;display:block;margin-top:7px;border-radius:3px;border:1px solid var(--border-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;padding:4px;transform:rotate(-45deg);top:-5px;}.popover,.popover::before{background-color:var(--main-background-color);color:var(--main-color);}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{min-height:36px;display:flex;padding:3px;margin-bottom:5px;}.item-left .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;align-items:center;white-space:pre-wrap;border-radius:3px;display:inline-flex;vertical-align:text-bottom;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji{font-size:1.25rem;margin-right:0.3rem;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.module-item.unstable,.import-item.unstable{opacity:0.65;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;}.example-wrap .tooltip::after{display:none;text-align:center;padding:5px 3px 3px 3px;border-radius:6px;margin-left:5px;font-size:1rem;border:1px solid var(--border-color);position:absolute;width:max-content;top:-2px;z-index:1;background-color:var(--tooltip-background-color);color:var(--tooltip-color);}.example-wrap .tooltip::before{content:" ";position:absolute;top:50%;left:16px;margin-top:-5px;display:none;z-index:1;border:5px solid transparent;border-right-color:var(--tooltip-background-color);}.example-wrap.ignore .tooltip::after{content:"This example is not tested";}.example-wrap.compile_fail .tooltip::after{content:"This example deliberately fails to compile";}.example-wrap.should_panic .tooltip::after{content:"This example panics";}.example-wrap.edition .tooltip::after{content:"This code runs with edition " attr(data-edition);}.example-wrap .tooltip:hover::before,.example-wrap .tooltip:hover::after{display:inline;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.notable-traits{color:inherit;margin-right:15px;position:relative;}.notable-traits:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.notable .docblock{margin:0.25em 0.5em;}.notable .docblock pre,.notable .docblock code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#titles{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#titles>button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#titles>button>div.count{display:inline-block;font-size:1rem;}#sidebar-toggle{position:sticky;top:0;left:0;font-size:1.25rem;border-bottom:1px solid;display:flex;height:40px;justify-content:stretch;align-items:stretch;z-index:10;}#source-sidebar{width:100%;overflow:auto;}#source-sidebar>.title{font-size:1.5rem;text-align:center;border-bottom:1px solid var(--border-color);margin-bottom:6px;}#source-sidebar div.files>a:hover,details.dir-entry summary:hover,#source-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--source-sidebar-background-hover);}#source-sidebar div.files>a.selected{background-color:var(--source-sidebar-background-selected);}#sidebar-toggle>button{font-size:inherit;font-weight:bold;background:none;color:inherit;text-align:center;border:none;outline:none;flex:1 1;-webkit-appearance:none;opacity:1;}#settings-menu,#help-button{margin-left:4px;display:flex;}#settings-menu>a,#help-button>a,#copy-path{width:33px;}#settings-menu>a,#help-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus{border-color:var(--settings-button-border-focus);}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;margin-left:10px;padding:0;padding-left:2px;border:0;}#copy-path>img{filter:var(--copy-path-img-filter);}#copy-path:hover>img{filter:var(--copy-path-img-hover-filter);}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;cursor:default;color:var(--kbd--color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary::after{content:" ►";position:absolute;left:-15px;top:0px;font-size:80%;padding:2px 0px;width:25px;}details[open].dir-entry>summary::after{content:" ▼";}details.dir-entry>summary::-webkit-details-marker,details.dir-entry>summary::marker{display:none;}details.dir-entry>summary{margin:0 0 0 13px;list-style:none;cursor:pointer;position:relative;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.rustdoc-toggle{contain:layout;position:relative;}details.rustdoc-toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.rustdoc-toggle>summary{list-style:none;outline:none;}details.rustdoc-toggle>summary::-webkit-details-marker,details.rustdoc-toggle>summary::marker{display:none;}details.rustdoc-toggle>summary.hideme>span{margin-left:9px;}details.rustdoc-toggle>summary::before{background:url("toggle-plus-1092eb4930d581b0.svg") no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.rustdoc-toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.rustdoc-toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.rustdoc-toggle>summary.hideme::after{content:"";}details.rustdoc-toggle>summary:focus::before,details.rustdoc-toggle>summary:hover::before{opacity:1;}details.rustdoc-toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.rustdoc-toggle>summary.hideme::before{position:relative;}details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.rustdoc-toggle[open] >summary.hideme{position:absolute;}details.rustdoc-toggle[open] >summary.hideme>span{display:none;}details.rustdoc-toggle[open] >summary::before{background:url("toggle-minus-31bbd6e4c77f5c96.svg") no-repeat top left;}details.rustdoc-toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .sidebar-logo,.sidebar .location{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.source main,.rustdoc.source .sidebar{top:0;padding:0;height:100vh;border:0;}.sidebar.shown,.source-sidebar-expanded .source .sidebar,.sidebar:focus-within{left:0;}.rustdoc.source>.sidebar{width:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;}.mobile-topbar h2 a{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.sidebar-menu-toggle{width:45px;font-size:32px;border:none;color:var(--main-color);}.sidebar-elems{margin-top:1em;}.content{margin-left:0px;}.anchor{display:none !important;}#titles>button>div.count{display:block;}#main-content>details.rustdoc-toggle>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}#sidebar-toggle{position:fixed;left:1px;top:100px;width:30px;font-size:1.5rem;padding:0;z-index:10;border-top-right-radius:3px;border-bottom-right-radius:3px;border:1px solid;border-left:0;}.source-sidebar-expanded #sidebar-toggle{left:unset;top:unset;width:unset;border-top-right-radius:unset;border-bottom-right-radius:unset;position:sticky;border:0;border-bottom:1px solid;}#copy-path,#help-button{display:none;}.item-table,.item-row,.item-left,.item-right,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-right{padding-left:2em;}.source-sidebar-expanded .source .sidebar{max-width:100vw;width:100vw;}details.rustdoc-toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.rustdoc-toggle>summary:not(.hideme)::before,#main-content>details.rustdoc-toggle:not(.top-doc)>summary::before,#main-content>div>details.rustdoc-toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.source nav.sub{margin:0;padding:8px;}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.srclink,#copy-path,details.rustdoc-toggle[open] >summary::before,details.rustdoc-toggle>summary::before,details.rustdoc-toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}.sub-logo-container>img{height:35px;width:35px;}#sidebar-toggle{top:10px;}.source-sidebar-expanded #sidebar-toggle{top:unset;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.rustdoc-toggle>summary,.methods>section,.methods>.rustdoc-toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.impl-items>.rustdoc-toggle[open]:not(:last-child),.methods>.rustdoc-toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.rustdoc-toggle:not(:last-child),#synthetic-implementations-list .impl-items>.rustdoc-toggle:not(:last-child),#blanket-implementations-list .impl-items>.rustdoc-toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border-width:1px;border-style:solid;border-radius:50px;}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper:before,.scraped-example:not(.expanded) .code-wrapper:after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper:before{top:0;}.scraped-example:not(.expanded) .code-wrapper:after{bottom:0;}.scraped-example .code-wrapper .src-line-numbers{margin:0;padding:14px 0;}.scraped-example .code-wrapper .src-line-numbers a,.scraped-example .code-wrapper .src-line-numbers span{padding:0 14px;}.scraped-example .code-wrapper .example-wrap{display:grid;grid-template-columns:max-content auto;width:100%;overflow-x:auto;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .code-wrapper .example-wrap pre.rust{overflow-x:inherit;width:inherit;overflow-y:hidden;}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;margin-bottom:5px;cursor:pointer;}.more-scraped-examples{margin-left:5px;display:flex;flex-direction:row;}.more-scraped-examples-inner{width:calc(100% - 20px);}.toggle-line{align-self:stretch;margin-right:10px;margin-top:5px;padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;}.more-scraped-examples .scraped-example{margin-bottom:20px;}.more-scraped-examples .scraped-example:last-child{margin-bottom:0;}.example-links a{margin-top:20px;}.example-links ul{margin-bottom:0;} \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/rustdoc-dd39b87e5fcfba68.css b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/rustdoc-dd39b87e5fcfba68.css new file mode 100644 index 0000000000..77f8983224 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/rustdoc-dd39b87e5fcfba68.css @@ -0,0 +1,46 @@ + :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.logo-container{line-height:0;display:block;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;width:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}.src .sidebar>*{visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*{visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;margin-right:0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 -16px 0 -16px;text-align:center;}.sidebar-crate h2 a{display:block;margin:0 calc(-24px + 0.25rem) 0 -0.2rem;padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.2rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}a.doc-anchor{color:var(--main-color);display:none;position:absolute;left:-17px;padding-right:5px;padding-left:3px;}*:hover>.doc-anchor{display:block;}.top-doc>.docblock>*:first-child>.doc-anchor{display:none !important;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover:not(.doc-anchor),.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ + \ + ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}.top-doc>.docblock>.warning:first-child::before{top:20px;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}.src-sidebar-title{position:sticky;top:0;display:flex;padding:8px 8px 0 48px;margin-bottom:7px;background:var(--sidebar-background-color);border-bottom:1px solid var(--border-color);}#settings-menu,#help-button{margin-left:4px;display:flex;}#sidebar-button{display:none;line-height:0;}.hide-sidebar #sidebar-button,.src #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}.src #sidebar-button{left:8px;z-index:calc(var(--desktop-sidebar-z-index) + 1);}.hide-sidebar .src #sidebar-button{position:static;}#settings-menu>a,#help-button>a,#sidebar-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus,#sidebar-button>a:hover,#sidebar-button>a:focus{border-color:var(--settings-button-border-focus);}#settings-menu>a{line-height:0;font-size:0;}#settings-menu>a:before{content:url('data:image/svg+xml,\ + ');width:22px;height:22px;filter:var(--settings-menu-filter);}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;width:33px;margin-left:10px;padding:0;padding-left:2px;border:0;font-size:0;}#copy-path::before{filter:var(--copy-path-img-filter);content:url('data:image/svg+xml,\ +\ +\ +');width:19px;height:18px;}#copy-path:hover::before{filter:var(--copy-path-img-hover-filter);}#copy-path.clicked::before{content:url('data:image/svg+xml,\ + \ + ');}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}.src #sidebar-button>a:before,.sidebar-menu-toggle:before{content:url('data:image/svg+xml,\ + ');opacity:0.75;}.sidebar-menu-toggle:hover:before,.sidebar-menu-toggle:active:before,.sidebar-menu-toggle:focus:before{opacity:1;}.src #sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');opacity:0.75;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.src .search-form{margin-left:40px;}.hide-sidebar .search-form{margin-left:32px;}.hide-sidebar .src .search-form{margin-left:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;white-space:nowrap;text-overflow:ellipsis;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;line-height:0;}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#copy-path,#help-button{display:none;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}.sidebar-menu-toggle:before{filter:var(--mobile-sidebar-menu-filter);}.sidebar-menu-toggle:hover{background:var(--main-background-color);}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{position:fixed;max-width:100vw;width:100vw;}.src .src-sidebar-title{padding-top:0;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"],:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--settings-menu-filter:none;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--settings-menu-filter:none;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--settings-menu-filter:invert(100%);--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);} \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/search-444266647c4dba98.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/search-444266647c4dba98.js deleted file mode 100644 index bf59e1d8eb..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/search-444266647c4dba98.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const itemTypes=["mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","primitive","associatedtype","constant","associatedconstant","union","foreigntype","keyword","existential","attr","derive","traitalias",];const TY_PRIMITIVE=itemTypes.indexOf("primitive");const TY_KEYWORD=itemTypes.indexOf("keyword");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";function hasOwnPropertyRustdoc(obj,property){return Object.prototype.hasOwnProperty.call(obj,property)}function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("titles").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb}else if(nb!==0){printTab(0)}}const levenshtein_row2=[];function levenshtein(s1,s2){if(s1===s2){return 0}const s1_len=s1.length,s2_len=s2.length;if(s1_len&&s2_len){let i1=0,i2=0,a,b,c,c2;const row=levenshtein_row2;while(i1-".indexOf(c)!==-1}function isStopCharacter(c){return isWhitespace(c)||isEndCharacter(c)}function isErrorCharacter(c){return"()".indexOf(c)!==-1}function itemTypeFromName(typename){for(let i=0,len=itemTypes.length;i0){throw new Error("Cannot use literal search when there is more than one element")}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw new Error("Unclosed `\"`")}else if(parserState.userQuery[end]!=="\""){throw new Error(`Unexpected \`${parserState.userQuery[end]}\` in a string element`)}else if(start===end){throw new Error("Cannot have empty string element")}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||isWhitespaceCharacter(c)}function isWhitespaceCharacter(c){return c===" "||c==="\t"}function createQueryElement(query,parserState,name,generics,isInGenerics){if(name==="*"||(name.length===0&&generics.length===0)){return}if(query.literalSearch&&parserState.totalElems-parserState.genericsElems>0){throw new Error("You cannot have more than one element if you use quotes")}const pathSegments=name.split("::");if(pathSegments.length>1){for(let i=0,len=pathSegments.length;i=end){throw new Error("Found generics without a path")}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}if(start>=end&&generics.length===0){return}elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics))}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;while(parserState.pos"){extra="`<`"}else if(endChar===""){extra="`->`"}throw new Error("Unexpected `"+c+"` after "+extra)}if(!foundStopChar){if(endChar!==""){throw new Error(`Expected \`,\`, \` \` or \`${endChar}\`, found \`${c}\``)}throw new Error(`Expected \`,\` or \` \`, found \`${c}\``)}const posBefore=parserState.pos;getNextElem(query,parserState,elems,endChar===">");if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}parserState.pos+=1}function checkExtraTypeFilterCharacters(parserState){const query=parserState.userQuery;for(let pos=0;pos"){if(isReturnArrow(parserState)){break}throw new Error(`Unexpected \`${c}\` (did you mean \`->\`?)`)}throw new Error(`Unexpected \`${c}\``)}else if(c===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw new Error("Unexpected `:`")}if(query.elems.length===0){throw new Error("Expected type filter before `:`")}else if(query.elems.length!==1||parserState.totalElems!==1){throw new Error("Unexpected `:`")}else if(query.literalSearch){throw new Error("You cannot use quotes on type filter")}checkExtraTypeFilterCharacters(parserState);parserState.typeFilter=query.elems.pop().name;parserState.pos+=1;parserState.totalElems=0;query.literalSearch=false;foundStopChar=true;continue}if(!foundStopChar){if(parserState.typeFilter!==null){throw new Error(`Expected \`,\`, \` \` or \`->\`, found \`${c}\``)}throw new Error(`Expected \`,\`, \` \`, \`:\` or \`->\`, found \`${c}\``)}before=query.elems.length;getNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}while(parserState.pos`")}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),typeFilter:NO_TYPE_FILTER,elems:[],returned:[],foundElems:0,literalSearch:false,error:null,}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&hasOwnPropertyRustdoc(rawSearchIndex,elem.value)){return elem.value}return null}function parseQuery(userQuery){userQuery=userQuery.trim();const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);if(parserState.typeFilter!==null){let typeFilter=parserState.typeFilter;if(typeFilter==="const"){typeFilter="constant"}query.typeFilter=itemTypeFromName(typeFilter)}}catch(err){query=newParsedQuery(userQuery);query.error=err.message;query.typeFilter=-1;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}function execQuery(parsedQuery,searchWords,filterCrates,currentCrate){const results_others={},results_in_args={},results_returned={};function transformResults(results){const duplicates={};const out=[];for(const result of results){if(result.id>-1){const obj=searchIndex[result.id];obj.lev=result.lev;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=obj.displayPath+obj.name;obj.fullPath+="|"+obj.ty;if(duplicates[obj.fullPath]){continue}duplicates[obj.fullPath]=true;obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const ar=[];for(const entry in results){if(hasOwnPropertyRustdoc(results,entry)){const result=results[entry];result.word=searchWords[result.id];result.item=searchIndex[result.id]||{};ar.push(result)}}results=ar;if(results.length===0){return[]}results.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.lev);b=(bbb.lev);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}if((aaa.item.ty===TY_PRIMITIVE&&bbb.item.ty!==TY_KEYWORD)||(aaa.item.ty===TY_KEYWORD&&bbb.item.ty!==TY_PRIMITIVE)){return-1}if((bbb.item.ty===TY_PRIMITIVE&&aaa.item.ty!==TY_PRIMITIVE)||(bbb.item.ty===TY_KEYWORD&&aaa.item.ty!==TY_KEYWORD)){return 1}a=(aaa.item.desc==="");b=(bbb.item.desc==="");if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});let nameSplit=null;if(parsedQuery.elems.length===1){const hasPath=typeof parsedQuery.elems[0].path==="undefined";nameSplit=hasPath?null:parsedQuery.elems[0].path}for(const result of results){if(result.dontValidate){continue}const name=result.item.name.toLowerCase(),path=result.item.path.toLowerCase(),parent=result.item.parent;if(!isType&&!validateResult(name,path,nameSplit,parent)){result.id=-1}}return transformResults(results)}function checkGenerics(row,elem,defaultLev){if(row.generics.length===0){return elem.generics.length===0?defaultLev:MAX_LEV_DISTANCE+1}else if(row.generics.length>0&&row.generics[0].name===null){return checkGenerics(row.generics[0],elem,defaultLev)}let elem_name;if(elem.generics.length>0&&row.generics.length>=elem.generics.length){const elems=Object.create(null);for(const entry of row.generics){elem_name=entry.name;if(elem_name===""){if(checkGenerics(entry,elem,MAX_LEV_DISTANCE+1)!==0){return MAX_LEV_DISTANCE+1}continue}if(elems[elem_name]===undefined){elems[elem_name]=0}elems[elem_name]+=1}for(const generic of elem.generics){let match=null;if(elems[generic.name]){match=generic.name}else{for(elem_name in elems){if(!hasOwnPropertyRustdoc(elems,elem_name)){continue}if(elem_name===generic){match=elem_name;break}}}if(match===null){return MAX_LEV_DISTANCE+1}elems[match]-=1;if(elems[match]===0){delete elems[match]}}return 0}return MAX_LEV_DISTANCE+1}function checkIfInGenerics(row,elem){let lev=MAX_LEV_DISTANCE+1;for(const entry of row.generics){lev=Math.min(checkType(entry,elem,true),lev);if(lev===0){break}}return lev}function checkType(row,elem,literalSearch){if(row.name===null){if(row.generics.length>0){return checkIfInGenerics(row,elem)}return MAX_LEV_DISTANCE+1}let lev=levenshtein(row.name,elem.name);if(literalSearch){if(lev!==0){if(elem.generics.length===0){const checkGeneric=row.generics.length>0;if(checkGeneric&&row.generics.findIndex(tmp_elem=>tmp_elem.name===elem.name)!==-1){return 0}}return MAX_LEV_DISTANCE+1}else if(elem.generics.length>0){return checkGenerics(row,elem,MAX_LEV_DISTANCE+1)}return 0}else if(row.generics.length>0){if(elem.generics.length===0){if(lev===0){return 0}lev=checkIfInGenerics(row,elem);return lev+0.5}else if(lev>MAX_LEV_DISTANCE){return checkIfInGenerics(row,elem)}else{const tmp_lev=checkGenerics(row,elem,lev);if(tmp_lev>MAX_LEV_DISTANCE){return MAX_LEV_DISTANCE+1}return(tmp_lev+lev)/2}}else if(elem.generics.length>0){return MAX_LEV_DISTANCE+1}return lev}function findArg(row,elem,typeFilter){let lev=MAX_LEV_DISTANCE+1;if(row&&row.type&&row.type.inputs&&row.type.inputs.length>0){for(const input of row.type.inputs){if(!typePassesFilter(typeFilter,input.ty)){continue}lev=Math.min(lev,checkType(input,elem,parsedQuery.literalSearch));if(lev===0){return 0}}}return parsedQuery.literalSearch?MAX_LEV_DISTANCE+1:lev}function checkReturned(row,elem,typeFilter){let lev=MAX_LEV_DISTANCE+1;if(row&&row.type&&row.type.output.length>0){const ret=row.type.output;for(const ret_ty of ret){if(!typePassesFilter(typeFilter,ret_ty.ty)){continue}lev=Math.min(lev,checkType(ret_ty,elem,parsedQuery.literalSearch));if(lev===0){return 0}}}return parsedQuery.literalSearch?MAX_LEV_DISTANCE+1:lev}function checkPath(contains,ty){if(contains.length===0){return 0}let ret_lev=MAX_LEV_DISTANCE+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;if(clength>length){return MAX_LEV_DISTANCE+1}for(let i=0;ilength){break}let lev_total=0;let aborted=false;for(let x=0;xMAX_LEV_DISTANCE){aborted=true;break}lev_total+=lev}if(!aborted){ret_lev=Math.min(ret_lev,Math.round(lev_total/clength))}}return ret_lev}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,desc:item.desc,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES[filterCrates]&&ALIASES[filterCrates][lowerQuery]){const query_aliases=ALIASES[filterCrates][lowerQuery];for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{Object.keys(ALIASES).forEach(crate=>{if(ALIASES[crate][lowerQuery]){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=ALIASES[crate][lowerQuery];for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}})}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,lev){if(lev===0||(!parsedQuery.literalSearch&&lev<=MAX_LEV_DISTANCE)){if(results[fullId]!==undefined){const result=results[fullId];if(result.dontValidate||result.lev<=lev){return}}results[fullId]={id:id,index:index,dontValidate:parsedQuery.literalSearch,lev:lev,}}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let lev,lev_add=0,index=-1;const fullId=row.id;const in_args=findArg(row,elem,parsedQuery.typeFilter);const returned=checkReturned(row,elem,parsedQuery.typeFilter);addIntoResults(results_in_args,fullId,pos,index,in_args);addIntoResults(results_returned,fullId,pos,index,returned);if(!typePassesFilter(parsedQuery.typeFilter,row.ty)){return}const searchWord=searchWords[pos];if(parsedQuery.literalSearch){if(searchWord===elem.name){addIntoResults(results_others,fullId,pos,-1,0)}return}if(elem.name.length===0){if(row.type!==null){lev=checkGenerics(row.type,elem,MAX_LEV_DISTANCE+1);addIntoResults(results_others,fullId,pos,index,lev)}return}if(elem.fullPath.length>1){lev=checkPath(elem.pathWithoutLast,row);if(lev>MAX_LEV_DISTANCE||(parsedQuery.literalSearch&&lev!==0)){return}else if(lev>0){lev_add=lev/10}}if(searchWord.indexOf(elem.pathLast)>-1||row.normalizedName.indexOf(elem.pathLast)>-1){index=row.normalizedName.indexOf(elem.pathLast)}lev=levenshtein(searchWord,elem.pathLast);if(lev>0&&elem.pathLast.length>2&&searchWord.indexOf(elem.pathLast)>-1){if(elem.pathLast.length<6){lev=1}else{lev=0}}lev+=lev_add;if(lev>MAX_LEV_DISTANCE){return}else if(index!==-1&&elem.fullPath.length<2){lev-=1}if(lev<0){lev=0}addIntoResults(results_others,fullId,pos,index,lev)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let totalLev=0;let nbLev=0;function checkArgs(elems,callback){for(const elem of elems){const lev=callback(row,elem,NO_TYPE_FILTER);if(lev<=1){nbLev+=1;totalLev+=lev}else{return false}}return true}if(!checkArgs(parsedQuery.elems,findArg)){return}if(!checkArgs(parsedQuery.returned,checkReturned)){return}if(nbLev===0){return}const lev=Math.round(totalLev/nbLev);addIntoResults(results,row.id,pos,0,lev)}function innerRunQuery(){let elem,i,nSearchWords,in_returned,row;if(parsedQuery.foundElems===1){if(parsedQuery.elems.length===1){elem=parsedQuery.elems[0];for(i=0,nSearchWords=searchWords.length;i0){for(i=0,nSearchWords=searchWords.length;i-1||path.indexOf(key)>-1||(parent!==undefined&&parent.name!==undefined&&parent.name.toLowerCase().indexOf(key)>-1)||levenshtein(name,key)<=MAX_LEV_DISTANCE)){return false}}return true}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#titles > button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor="#"+type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="#variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}function addTab(array,query,display){let extraClass="";if(display===true){extraClass=" active"}const output=document.createElement("div");let length=0;if(array.length>0){output.className="search-results "+extraClass;array.forEach(item=>{const name=item.name;const type=itemTypes[item.ty];length+=1;let extra="";if(type==="primitive"){extra=" (primitive type)"}else if(type==="keyword"){extra=" (keyword)"}const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";if(item.is_alias){const alias=document.createElement("span");alias.className="alias";const bold=document.createElement("b");bold.innerText=item.alias;alias.appendChild(bold);alias.insertAdjacentHTML("beforeend"," - see ");resultName.appendChild(alias)}resultName.insertAdjacentHTML("beforeend",item.displayPath+""+name+extra+"");link.appendChild(resultName);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)})}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,length]}function makeTabHeader(tabNb,text,nbElems){if(searchState.currentTab===tabNb){return""}return""}function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true"&&(!search.firstChild||search.firstChild.innerText!==searchState.loadingText))){const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const ret_others=addTab(results.others,results.query,true);const ret_in_args=addTab(results.in_args,results.query,false);const ret_returned=addTab(results.returned,results.query,false);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";const crates_list=Object.keys(rawSearchIndex);if(crates_list.length>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){output+=`

    Query parser error: "${results.query.error}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("titles").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function search(e,forced){if(e){e.preventDefault()}const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";if(browserSupportsHistoryApi()){const newURL=buildUrl(query.original,filterCrates);if(!history.state&&!params.search){history.pushState(null,"",newURL)}else{history.replaceState(null,"",newURL)}}showResults(execQuery(query,searchWords,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;return types.map(type=>{let pathIndex,generics;if(typeof type==="number"){pathIndex=type;generics=[]}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths)}return{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:generics,}})}function buildFunctionSearchType(functionSearchType,lowercasePaths){const INPUTS_DATA=0;const OUTPUT_DATA=1;if(functionSearchType===0){return null}let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){const pathIndex=functionSearchType[INPUTS_DATA];inputs=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){const pathIndex=functionSearchType[OUTPUT_DATA];output=[{name:pathIndex===0?null:lowercasePaths[pathIndex-1].name,ty:pathIndex===0?null:lowercasePaths[pathIndex-1].ty,generics:[],}]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths)}}else{output=[]}return{inputs,output,}}function buildIndex(rawSearchIndex){searchIndex=[];const searchWords=[];let i,word;let currentIndex=0;let id=0;for(const crate in rawSearchIndex){if(!hasOwnPropertyRustdoc(rawSearchIndex,crate)){continue}let crateSize=0;const crateCorpus=rawSearchIndex[crate];searchWords.push(crate);const crateRow={crate:crate,ty:1,name:crate,path:"",desc:crateCorpus.doc,parent:undefined,type:null,id:id,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),};id+=1;searchIndex.push(crateRow);currentIndex+=1;const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=crateCorpus.q;const itemDescs=crateCorpus.d;const itemParentIdxs=crateCorpus.i;const itemFunctionSearchTypes=crateCorpus.f;const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];let len=paths.length;for(i=0;i0?paths[itemParentIdxs[i]-1]:undefined,type:buildFunctionSearchType(itemFunctionSearchTypes[i],lowercasePaths),id:id,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),};id+=1;searchIndex.push(row);lastPath=row.path;crateSize+=1}if(aliases){ALIASES[crate]=Object.create(null);for(const alias_name in aliases){if(!hasOwnPropertyRustdoc(aliases,alias_name)){continue}if(!hasOwnPropertyRustdoc(ALIASES[crate],alias_name)){ALIASES[crate][alias_name]=[]}for(const local_alias of aliases[alias_name]){ALIASES[crate][alias_name].push(local_alias+currentIndex)}}}currentIndex+=crateSize}return searchWords}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){if(browserSupportsHistoryApi()){history.replaceState(null,window.currentCrate+" - Rust",getNakedUrl()+window.location.hash)}searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;search(e)}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const params=searchState.getQueryStringParams();const query=searchState.input.value.trim();if(!history.state&&!params.search){history.pushState(null,"",buildUrl(query,null))}else{history.replaceState(null,"",buildUrl(query,null))}}currentResults=null;search(undefined,true)}const searchWords=buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}return searchWords}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch({})}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/search-d52510db62a78183.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/search-d52510db62a78183.js new file mode 100644 index 0000000000..a2824f297f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/search-d52510db62a78183.js @@ -0,0 +1,5 @@ +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];const TY_GENERIC=itemTypes.indexOf("generic");const TY_IMPORT=itemTypes.indexOf("import");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let searchIndexDeprecated;let searchIndexEmptyDesc;let functionTypeFingerprint;let currentResults;const typeNameIdMap=new Map();const ALIASES=new Map();const typeNameIdOfArray=buildTypeMapIndex("array");const typeNameIdOfSlice=buildTypeMapIndex("slice");const typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");const typeNameIdOfTuple=buildTypeMapIndex("tuple");const typeNameIdOfUnit=buildTypeMapIndex("unit");const typeNameIdOfTupleOrUnit=buildTypeMapIndex("()");const typeNameIdOfFn=buildTypeMapIndex("fn");const typeNameIdOfFnMut=buildTypeMapIndex("fnmut");const typeNameIdOfFnOnce=buildTypeMapIndex("fnonce");const typeNameIdOfHof=buildTypeMapIndex("->");function buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){const obj=typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||c==="="}function isPathSeparator(c){return c===":"||c===" "}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name,gen.bindingName.generics);return false}return true}),bindings,typeFilter,bindingName,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}else{throw["Unexpected ",c]}}parserState.pos+=1;end=parserState.pos}if(foundExclamation!==-1&&foundExclamation!==start&&isIdentCharacter(parserState.userQuery[foundExclamation-1])){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=foundExclamation}return end}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else if(parserState.userQuery[parserState.pos]==="&"){if(parserState.typeFilter!==null&&parserState.typeFilter!=="primitive"){throw["Invalid search type: primitive ","&"," and ",parserState.typeFilter," both specified",]}parserState.typeFilter=null;parserState.pos+=1;let c=parserState.userQuery[parserState.pos];while(c===" "&&parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&rawSearchIndex.has(elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}async function execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}async function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.item=searchIndex[result.id];result.word=searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(passesUnification){return true}}return false},unboxingDepth,);if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,);if(passesUnification){return true}}return false}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgensIn){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(queryElem.id===typeNameIdOfTupleOrUnit&&(fnType.id===typeNameIdOfTuple||fnType.id===typeNameIdOfUnit)){}else if(queryElem.id===typeNameIdOfHof&&(fnType.id===typeNameIdOfFn||fnType.id===typeNameIdOfFnMut||fnType.id===typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp,unboxingDepth,)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}function checkType(row,elem,whereClause,mgens,unboxingDepth){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0&&mgens===null){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth+1,)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==typeNameIdOfArrayOrSlice&&elem.id!==typeNameIdOfTupleOrUnit&&elem.id!==typeNameIdOfHof){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth,)}}return unifyFunctionTypes([row],[elem],whereClause,mgens,null,unboxingDepth)}function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance,){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint,);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,null,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}function innerRunQuery(){const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem,isAssocType){if(typeNameIdMap.has(elem.normalizedPathLast)&&(isAssocType||!typeNameIdMap.get(elem.normalizedPathLast).assocOnly)){elem.id=typeNameIdMap.get(elem.normalizedPathLast).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of typeNameIdMap){const dist=editDistance(name,elem.normalizedPathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[typeNameIdMap.get(name).id,constraints]}),)}const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];for(let i=0,nSearchIndex=searchIndex.length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;for(const item of array){const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ +${item.alias} - see \ +
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ +${item.displayPath}${name}\ +
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)}}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,true),addTab(results.in_args,results.query,false),addTab(results.returned,results.query,false),]);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));await showResults(await execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>buildItemSearchType(type,lowercasePaths)):EMPTY_GENERICS_ARRAY}const EMPTY_BINDINGS_MAP=new Map();const EMPTY_GENERICS_ARRAY=[];let TYPES_POOL=new Map();function buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=EMPTY_GENERICS_ARRAY;bindings=EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[buildItemSearchType(assocType,lowercasePaths,true).id,buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,exactPath:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,}}const cr=TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}TYPES_POOL.set(result.id,result);return result}function buildFunctionSearchTypeCallback(lowercasePaths){return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:EMPTY_GENERICS_ARRAY,bindings:EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}function compareTypeFingerprints(fullId,queryFingerprint){const fh0=functionTypeFingerprint[fullId*4];const fh1=functionTypeFingerprint[(fullId*4)+1];const fh2=functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return functionTypeFingerprint[(fullId*4)+3]}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){const cb="}".charCodeAt(0);let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==cb){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){const[ob,la]=["{","`"].map(c=>c.charCodeAt(0));let n=0;let c=this.string.charCodeAt(this.offset);if(c===ob){this.offset+=1;return this.decodeList()}while(c>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);const[zero,ua,la]=["0","@","`"].map(c=>c.charCodeAt(0));if(c>=zero&&c16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i>3]&(1<<(value&7)))}}function buildIndex(rawSearchIndex){searchIndex=[];searchIndexDeprecated=new Map();searchIndexEmptyDesc=new Map();const charA="A".charCodeAt(0);let currentIndex=0;let id=0;for(const crate of rawSearchIndex.values()){id+=crate.t.length+1}functionTypeFingerprint=new Uint32Array((id+1)*4);id=0;for(const[crate,crateCorpus]of rawSearchIndex){const itemDescShardDecoder=new VlqHexDecoder(crateCorpus.D,noop=>noop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),bitIndex:0,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxs=crateCorpus.i;const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3?itemPaths.get(elem[3]):path;lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath});paths[i]={ty,name,path,exactPath}}lastPath="";len=itemTypes.length;for(let i=0;i=descShard.len&&!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}let word="";if(typeof itemNames[i]==="string"){word=itemNames[i].toLowerCase()}const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=functionTypeFingerprint.subarray(id*4,(id+1)*4);const fps=new Set();for(const t of type.inputs){buildFunctionTypeFingerprint(t,fp,fps)}for(const t of type.output){buildFunctionTypeFingerprint(t,fp,fps)}for(const w of type.where_clause){for(const t of w){buildFunctionTypeFingerprint(t,fp,fps)}}}}const row={crate,ty:itemTypes.charCodeAt(i)-charA,name:itemNames[i],path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdxs[i]>0?paths[itemParentIdxs[i]-1]:undefined,type,id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;if(!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;searchState.descShards.set(crate,descShardList)}TYPES_POOL=new Map()}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-4313503d2e1961c2.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-4313503d2e1961c2.js new file mode 100644 index 0000000000..ab425fe49d --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-4313503d2e1961c2.js @@ -0,0 +1,17 @@ +"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break;case"hide-sidebar":if(value===true){addClass(document.documentElement,"hide-sidebar")}else{removeClass(document.documentElement,"hide-sidebar")}break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme"),"hidden");removeClass(document.getElementById("preferred-dark-theme"),"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme"),"hidden");addClass(document.getElementById("preferred-dark-theme"),"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=()=>{changeSetting(toggle.id,toggle.checked)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){settingValue=useSystem==="false"?"light":"system preference"}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ +
    +
    ${setting_name}
    +
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ + `});output+=`\ +
    +
    `}else{const checked=setting["default"]===true?" checked":"";output+=`\ +
    \ + \ +
    `}}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Hide persistent navigation bar","js_name":"hide-sidebar","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
    ${buildSettingsPageSections(settings)}
    `;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display="";onEachLazy(settingsMenu.querySelectorAll("input[type='checkbox']"),el=>{const val=getSettingValue(el.id);const checked=val==="true";if(checked!==el.checked&&val!==null){el.checked=checked}})}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=event=>{event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=event=>{if(settingsMenu.contains(event.target)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-af96d9e2fc13e081.css b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-af96d9e2fc13e081.css deleted file mode 100644 index d94744e6fa..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-af96d9e2fc13e081.css +++ /dev/null @@ -1,3 +0,0 @@ -.setting-line{margin:0.6em 0 0.6em 0.3em;position:relative;}.setting-line .choices{display:flex;flex-wrap:wrap;}.setting-line .radio-line input,.setting-line .toggle input{margin-right:0.3em;height:1.2rem;width:1.2rem;color:inherit;border:1px solid currentColor;outline:none;-webkit-appearance:none;cursor:pointer;}.setting-line .radio-line input{border-radius:50%;}.setting-line .toggle input:checked{content:url('data:image/svg+xml,\ - \ - ');}.setting-line .radio-line input+span,.setting-line .toggle span{padding-bottom:1px;}.radio-line .setting-name{width:100%;}.radio-line .choice{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:flex;align-items:center;cursor:pointer;}.radio-line .choice+.choice{margin-left:0.5em;}.toggle{position:relative;width:100%;margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-line>.sub-settings{padding-left:42px;width:100%;display:block;}#settings .setting-line{margin:1.2em 0.6em;}.setting-line .radio-line input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-line .toggle input:checked{background-color:var(--settings-input-color);}.setting-line .radio-line input:focus,.setting-line .toggle input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-line .radio-line input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-line .radio-line input:hover,.setting-line .toggle input:hover{border-color:var(--settings-input-color) !important;} \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-bebeae96e00e4617.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-bebeae96e00e4617.js deleted file mode 100644 index 4d73ec358b..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/settings-bebeae96e00e4617.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict";(function(){const isSettingsPage=window.location.pathname.endsWith("/settings.html");function changeSetting(settingName,value){if(settingName==="theme"){const useSystem=value==="system preference"?"true":"false";updateLocalStorage("use-system-theme",useSystem)}updateLocalStorage(settingName,value);switch(settingName){case"theme":case"preferred-dark-theme":case"preferred-light-theme":updateSystemTheme();updateLightAndDark();break;case"line-numbers":if(value===true){window.rustdoc_add_line_numbers_to_examples()}else{window.rustdoc_remove_line_numbers_from_examples()}break}}function handleKey(ev){if(ev.ctrlKey||ev.altKey||ev.metaKey){return}switch(getVirtualKey(ev)){case"Enter":case"Return":case"Space":ev.target.checked=!ev.target.checked;ev.preventDefault();break}}function showLightAndDark(){removeClass(document.getElementById("preferred-light-theme").parentElement,"hidden");removeClass(document.getElementById("preferred-dark-theme").parentElement,"hidden")}function hideLightAndDark(){addClass(document.getElementById("preferred-light-theme").parentElement,"hidden");addClass(document.getElementById("preferred-dark-theme").parentElement,"hidden")}function updateLightAndDark(){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||(useSystem===null&&getSettingValue("theme")===null)){showLightAndDark()}else{hideLightAndDark()}}function setEvents(settingsElement){updateLightAndDark();onEachLazy(settingsElement.querySelectorAll("input[type=\"checkbox\"]"),toggle=>{const settingId=toggle.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){toggle.checked=settingValue==="true"}toggle.onchange=function(){changeSetting(this.id,this.checked)};toggle.onkeyup=handleKey;toggle.onkeyrelease=handleKey});onEachLazy(settingsElement.getElementsByClassName("select-wrapper"),elem=>{const select=elem.getElementsByTagName("select")[0];const settingId=select.id;const settingValue=getSettingValue(settingId);if(settingValue!==null){select.value=settingValue}select.onchange=function(){changeSetting(this.id,this.value)}});onEachLazy(settingsElement.querySelectorAll("input[type=\"radio\"]"),elem=>{const settingId=elem.name;let settingValue=getSettingValue(settingId);if(settingId==="theme"){const useSystem=getSettingValue("use-system-theme");if(useSystem==="true"||settingValue===null){if(useSystem!=="false"){settingValue="system preference"}else{settingValue="light"}}}if(settingValue!==null&&settingValue!=="null"){elem.checked=settingValue===elem.value}elem.addEventListener("change",ev=>{changeSetting(ev.target.name,ev.target.value)})})}function buildSettingsPageSections(settings){let output="";for(const setting of settings){output+="
    ";const js_data_name=setting["js_name"];const setting_name=setting["name"];if(setting["options"]!==undefined){output+=`\ -
    - ${setting_name} -
    `;onEach(setting["options"],option=>{const checked=option===setting["default"]?" checked":"";const full=`${js_data_name}-${option.replace(/ /g,"-")}`;output+=`\ -`});output+="
    "}else{const checked=setting["default"]===true?" checked":"";output+=`\ -`}output+="
    "}return output}function buildSettingsPage(){const theme_names=getVar("themes").split(",").filter(t=>t);theme_names.push("light","dark","ayu");const settings=[{"name":"Theme","js_name":"theme","default":"system preference","options":theme_names.concat("system preference"),},{"name":"Preferred light theme","js_name":"preferred-light-theme","default":"light","options":theme_names,},{"name":"Preferred dark theme","js_name":"preferred-dark-theme","default":"dark","options":theme_names,},{"name":"Auto-hide item contents for large items","js_name":"auto-hide-large-items","default":true,},{"name":"Auto-hide item methods' documentation","js_name":"auto-hide-method-docs","default":false,},{"name":"Auto-hide trait implementation documentation","js_name":"auto-hide-trait-implementations","default":false,},{"name":"Directly go to item in search if there is only one result","js_name":"go-to-only-result","default":false,},{"name":"Show line numbers on code examples","js_name":"line-numbers","default":false,},{"name":"Disable keyboard shortcuts","js_name":"disable-shortcuts","default":false,},];const elementKind=isSettingsPage?"section":"div";const innerHTML=`
    ${buildSettingsPageSections(settings)}
    `;const el=document.createElement(elementKind);el.id="settings";if(!isSettingsPage){el.className="popover"}el.innerHTML=innerHTML;if(isSettingsPage){document.getElementById(MAIN_ID).appendChild(el)}else{el.setAttribute("tabindex","-1");getSettingsButton().appendChild(el)}return el}const settingsMenu=buildSettingsPage();function displaySettings(){settingsMenu.style.display=""}function settingsBlurHandler(event){blurHandler(event,getSettingsButton(),window.hidePopoverMenus)}if(isSettingsPage){getSettingsButton().onclick=function(event){event.preventDefault()}}else{const settingsButton=getSettingsButton();const settingsMenu=document.getElementById("settings");settingsButton.onclick=function(event){if(elemIsInParent(event.target,settingsMenu)){return}event.preventDefault();const shouldDisplaySettings=settingsMenu.style.display==="none";window.hideAllModals();if(shouldDisplaySettings){displaySettings()}};settingsButton.onblur=settingsBlurHandler;settingsButton.querySelector("a").onblur=settingsBlurHandler;onEachLazy(settingsMenu.querySelectorAll("input"),el=>{el.onblur=settingsBlurHandler});settingsMenu.onblur=settingsBlurHandler}setTimeout(()=>{setEvents(settingsMenu);if(!isSettingsPage){displaySettings()}removeClass(getSettingsButton(),"rotate")},0)})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/source-script-5cf2e01a42cc9858.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/source-script-5cf2e01a42cc9858.js deleted file mode 100644 index f033213ebb..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/source-script-5cf2e01a42cc9858.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(function(){const rootPath=document.getElementById("rustdoc-vars").attributes["data-root-path"].value;const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;function closeSidebarIfMobile(){if(window.innerWidth"){window.rustdocMobileScrollLock();addClass(document.documentElement,"source-sidebar-expanded");child.innerText="<";updateLocalStorage("source-sidebar-show","true")}else{window.rustdocMobileScrollUnlock();removeClass(document.documentElement,"source-sidebar-expanded");child.innerText=">";updateLocalStorage("source-sidebar-show","false")}}function createSidebarToggle(){const sidebarToggle=document.createElement("div");sidebarToggle.id="sidebar-toggle";const inner=document.createElement("button");if(getCurrentValue("source-sidebar-show")==="true"){inner.innerText="<"}else{inner.innerText=">"}inner.onclick=toggleSidebar;sidebarToggle.appendChild(inner);return sidebarToggle}function createSourceSidebar(){const container=document.querySelector("nav.sidebar");const sidebarToggle=createSidebarToggle();container.insertBefore(sidebarToggle,container.firstChild);const sidebar=document.createElement("div");sidebar.id="source-sidebar";let hasFoundFile=false;const title=document.createElement("div");title.className="title";title.innerText="Files";sidebar.appendChild(title);Object.keys(sourcesIndex).forEach(key=>{sourcesIndex[key][NAME_OFFSET]=key;hasFoundFile=createDirEntry(sourcesIndex[key],sidebar,"",hasFoundFile)});container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}const lineNumbersRegex=/^#?(\d+)(?:-(\d+))?$/;function highlightSourceLines(match){if(typeof match==="undefined"){match=window.location.hash.match(lineNumbersRegex)}if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSourceHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSourceLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",()=>{const match=window.location.hash.match(lineNumbersRegex);if(match){return highlightSourceLines(match)}});onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSourceHighlight)});highlightSourceLines();window.createSourceSidebar=createSourceSidebar})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/src-script-e66d777a5a92e9b2.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/src-script-e66d777a5a92e9b2.js new file mode 100644 index 0000000000..d0aebb8510 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/src-script-e66d777a5a92e9b2.js @@ -0,0 +1 @@ +"use strict";(function(){const rootPath=getVar("root-path");const NAME_OFFSET=0;const DIRS_OFFSET=1;const FILES_OFFSET=2;const RUSTDOC_MOBILE_BREAKPOINT=700;function closeSidebarIfMobile(){if(window.innerWidth{removeClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","false")};window.rustdocShowSourceSidebar=()=>{addClass(document.documentElement,"src-sidebar-expanded");updateLocalStorage("source-sidebar-show","true")};window.rustdocToggleSrcSidebar=()=>{if(document.documentElement.classList.contains("src-sidebar-expanded")){window.rustdocCloseSourceSidebar()}else{window.rustdocShowSourceSidebar()}};function createSrcSidebar(){const container=document.querySelector("nav.sidebar");const sidebar=document.createElement("div");sidebar.id="src-sidebar";let hasFoundFile=false;for(const[key,source]of srcIndex){source[NAME_OFFSET]=key;hasFoundFile=createDirEntry(source,sidebar,"",hasFoundFile)}container.appendChild(sidebar);const selected_elem=sidebar.getElementsByClassName("selected")[0];if(typeof selected_elem!=="undefined"){selected_elem.focus()}}function highlightSrcLines(){const match=window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/);if(!match){return}let from=parseInt(match[1],10);let to=from;if(typeof match[2]!=="undefined"){to=parseInt(match[2],10)}if(to{onEachLazy(e.getElementsByTagName("a"),i_e=>{removeClass(i_e,"line-highlighted")})});for(let i=from;i<=to;++i){elem=document.getElementById(i);if(!elem){break}addClass(elem,"line-highlighted")}}const handleSrcHighlight=(function(){let prev_line_id=0;const set_fragment=name=>{const x=window.scrollX,y=window.scrollY;if(browserSupportsHistoryApi()){history.replaceState(null,null,"#"+name);highlightSrcLines()}else{location.replace("#"+name)}window.scrollTo(x,y)};return ev=>{let cur_line_id=parseInt(ev.target.id,10);if(isNaN(cur_line_id)||ev.ctrlKey||ev.altKey||ev.metaKey){return}ev.preventDefault();if(ev.shiftKey&&prev_line_id){if(prev_line_id>cur_line_id){const tmp=prev_line_id;prev_line_id=cur_line_id;cur_line_id=tmp}set_fragment(prev_line_id+"-"+cur_line_id)}else{prev_line_id=cur_line_id;set_fragment(cur_line_id)}}}());window.addEventListener("hashchange",highlightSrcLines);onEachLazy(document.getElementsByClassName("src-line-numbers"),el=>{el.addEventListener("click",handleSrcHighlight)});highlightSrcLines();window.createSrcSidebar=createSrcSidebar})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/storage-118b08c4c78b968e.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/storage-118b08c4c78b968e.js new file mode 100644 index 0000000000..9818946774 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/storage-118b08c4c78b968e.js @@ -0,0 +1,24 @@ +"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){const themeNames=getVar("themes").split(",").filter(t=>t);themeNames.push(...builtinThemes);if(themeNames.indexOf(newThemeName)===-1){return}if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+encodeURIComponent(newThemeName)+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px",)}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px",)}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}});class RustdocSearchElement extends HTMLElement{constructor(){super()}connectedCallback(){const rootPath=getVar("root-path");const currentCrate=getVar("current-crate");this.innerHTML=``}}window.customElements.define("rustdoc-search",RustdocSearchElement) \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/storage-d43fa987303ecbbb.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/storage-d43fa987303ecbbb.js deleted file mode 100644 index 017aff706c..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/storage-d43fa987303ecbbb.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");window.mainTheme=document.getElementById("mainThemeStyle");window.RUSTDOC_MOBILE_BREAKPOINT=700;const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");if(settingsElement===null){return null}const dataset=settingsElement.dataset;if(dataset===undefined){return null}return dataset})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current!==null){return current}if(settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return null}const localStoredTheme=getSettingValue("theme");const savedHref=[];function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(!elem||!elem.classList){return}elem.classList.add(className)}function removeClass(elem,className){if(!elem||!elem.classList){return}elem.classList.remove(className)}function onEach(arr,func,reversed){if(arr&&arr.length>0&&func){if(reversed){const length=arr.length;for(let i=length-1;i>=0;--i){if(func(arr[i])){return true}}}else{for(const elem of arr){if(func(elem)){return true}}}}return false}function onEachLazy(lazyArray,func,reversed){return onEach(Array.prototype.slice.call(lazyArray),func,reversed)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}function switchTheme(styleElem,mainStyleElem,newThemeName,saveTheme){if(saveTheme){updateLocalStorage("theme",newThemeName)}if(savedHref.length===0){onEachLazy(document.getElementsByTagName("link"),el=>{savedHref.push(el.href)})}const newHref=savedHref.find(url=>{const m=url.match(/static\.files\/(.*)-[a-f0-9]{16}\.css$/);if(m&&m[1]===newThemeName){return true}const m2=url.match(/\/([^/]*)\.css$/);if(m2&&m2[1].startsWith(newThemeName)){return true}});if(newHref&&newHref!==styleElem.href){styleElem.href=newHref}}function useSystemTheme(value){if(value===undefined){value=true}updateLocalStorage("use-system-theme",value);const toggle=document.getElementById("use-system-theme");if(toggle&&toggle instanceof HTMLInputElement){toggle.checked=value}}const updateSystemTheme=(function(){if(!window.matchMedia){return()=>{const cssTheme=getComputedStyle(document.documentElement).getPropertyValue("content");switchTheme(window.currentTheme,window.mainTheme,JSON.parse(cssTheme)||"light",true)}}const mql=window.matchMedia("(prefers-color-scheme: dark)");function handlePreferenceChange(mql){const use=theme=>{switchTheme(window.currentTheme,window.mainTheme,theme,true)};if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";if(mql.matches){use(darkTheme)}else{use(lightTheme)}}else{use(getSettingValue("theme"))}}mql.addListener(handlePreferenceChange);return()=>{handlePreferenceChange(mql)}})();function switchToSavedTheme(){switchTheme(window.currentTheme,window.mainTheme,getSettingValue("theme")||"light",false)}if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}updateSystemTheme()}else{switchToSavedTheme()}if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"source-sidebar-expanded")}window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(switchToSavedTheme,0)}}) \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/toggle-minus-31bbd6e4c77f5c96.svg b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/toggle-minus-31bbd6e4c77f5c96.svg deleted file mode 100644 index 73154788a0..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/toggle-minus-31bbd6e4c77f5c96.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/toggle-plus-1092eb4930d581b0.svg b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/toggle-plus-1092eb4930d581b0.svg deleted file mode 100644 index 08b17033e1..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/toggle-plus-1092eb4930d581b0.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/wheel-5ec35bf9ca753509.svg b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/wheel-5ec35bf9ca753509.svg deleted file mode 100644 index 01da3b24c7..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/static.files/wheel-5ec35bf9ca753509.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.js new file mode 100644 index 0000000000..ef568dba87 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_bitcoind_rpc/trait.BitcoindRpcErrorExt.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_bitcoind_rpc":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/chain_oracle/trait.ChainOracle.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/chain_oracle/trait.ChainOracle.js new file mode 100644 index 0000000000..1a8211de1a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/chain_oracle/trait.ChainOracle.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/descriptor_ext/trait.DescriptorExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/descriptor_ext/trait.DescriptorExt.js new file mode 100644 index 0000000000..1a8211de1a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/descriptor_ext/trait.DescriptorExt.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/indexed_tx_graph/trait.Indexer.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/indexed_tx_graph/trait.Indexer.js new file mode 100644 index 0000000000..1a8211de1a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/indexed_tx_graph/trait.Indexer.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Anchor.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Anchor.js new file mode 100644 index 0000000000..1a8211de1a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Anchor.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.AnchorFromBlockPosition.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.AnchorFromBlockPosition.js new file mode 100644 index 0000000000..1a8211de1a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.AnchorFromBlockPosition.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Append.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Append.js new file mode 100644 index 0000000000..f233683400 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_chain/tx_data_traits/trait.Append.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"bdk_chain":[], +"bdk_persist":[["impl<K: Ord, A: Anchor> Append for CombinedChangeSet<K, A>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_electrum/electrum_ext/trait.ElectrumExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_electrum/electrum_ext/trait.ElectrumExt.js new file mode 100644 index 0000000000..11e040008a --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_electrum/electrum_ext/trait.ElectrumExt.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_electrum":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_esplora/async_ext/trait.EsploraAsyncExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_esplora/async_ext/trait.EsploraAsyncExt.js new file mode 100644 index 0000000000..1f4be89de9 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_esplora/async_ext/trait.EsploraAsyncExt.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_esplora":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_esplora/blocking_ext/trait.EsploraExt.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_esplora/blocking_ext/trait.EsploraExt.js new file mode 100644 index 0000000000..1f4be89de9 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_esplora/blocking_ext/trait.EsploraExt.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_esplora":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_persist/persist/trait.PersistBackend.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_persist/persist/trait.PersistBackend.js new file mode 100644 index 0000000000..040c345f68 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_persist/persist/trait.PersistBackend.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"bdk_file_store":[["impl<C> PersistBackend<C> for Store<C>
    where\n C: Append + Serialize + DeserializeOwned + Send + Sync,
    "]], +"bdk_persist":[], +"bdk_sqlite":[["impl<K, A, C> PersistBackend<C> for Store<K, A>
    where\n K: Ord + for<'de> Deserialize<'de> + Serialize + Send,\n A: Anchor + for<'de> Deserialize<'de> + Serialize + Send,\n C: Clone + From<CombinedChangeSet<K, A>> + Into<CombinedChangeSet<K, A>>,
    "]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_tmp_plan/trait.CanDerive.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_tmp_plan/trait.CanDerive.js new file mode 100644 index 0000000000..d955c83b6e --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_tmp_plan/trait.CanDerive.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_tmp_plan":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/template/trait.DescriptorTemplate.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/template/trait.DescriptorTemplate.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/template/trait.DescriptorTemplate.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/trait.ExtractPolicy.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/trait.ExtractPolicy.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/trait.ExtractPolicy.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/trait.IntoWalletDescriptor.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/trait.IntoWalletDescriptor.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/descriptor/trait.IntoWalletDescriptor.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.DerivableKey.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.DerivableKey.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.DerivableKey.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.ExtScriptContext.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.ExtScriptContext.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.ExtScriptContext.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.GeneratableDefaultOptions.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.GeneratableDefaultOptions.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.GeneratableDefaultOptions.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.GeneratableKey.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.GeneratableKey.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.GeneratableKey.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.IntoDescriptorKey.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.IntoDescriptorKey.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/keys/trait.IntoDescriptorKey.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/psbt/trait.PsbtUtils.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/psbt/trait.PsbtUtils.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/psbt/trait.PsbtUtils.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/coin_selection/trait.CoinSelectionAlgorithm.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.InputSigner.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.InputSigner.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.InputSigner.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.SignerCommon.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.SignerCommon.js new file mode 100644 index 0000000000..e2be123c6f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.SignerCommon.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"bdk_hwi":[["impl SignerCommon for HWISigner"]], +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.TransactionSigner.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.TransactionSigner.js new file mode 100644 index 0000000000..54cf1ae9be --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/signer/trait.TransactionSigner.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"bdk_hwi":[["impl TransactionSigner for HWISigner"]], +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/tx_builder/trait.TxBuilderContext.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/utils/trait.IsDust.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/utils/trait.IsDust.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bdk_wallet/wallet/utils/trait.IsDust.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js new file mode 100644 index 0000000000..01ce8781c2 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bitcoin_hashes/serde_macros/serde_details/trait.SerdeHash.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl SerdeHash for DescriptorId"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bitcoin_hashes/trait.Hash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bitcoin_hashes/trait.Hash.js new file mode 100644 index 0000000000..feda1f6314 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/bitcoin_hashes/trait.Hash.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl Hash for DescriptorId"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Args.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Args.js new file mode 100644 index 0000000000..47686f751c --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Args.js @@ -0,0 +1,7 @@ +(function() {var implementors = { +"example_bitcoind_rpc_polling":[["impl Args for RpcArgs"]], +"example_cli":[["impl<CS: Subcommand, S: Args> Args for Args<CS, S>"]], +"example_electrum":[["impl Args for ElectrumArgs"],["impl Args for ScanOptions"]], +"example_esplora":[["impl Args for EsploraArgs"],["impl Args for ScanOptions"]], +"wallet_rpc":[["impl Args for Args"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.CommandFactory.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.CommandFactory.js new file mode 100644 index 0000000000..adf6cd3c4c --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.CommandFactory.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"example_cli":[["impl<CS: Subcommand, S: Args> CommandFactory for Args<CS, S>"]], +"example_electrum":[["impl CommandFactory for ScanOptions"]], +"example_esplora":[["impl CommandFactory for ScanOptions"]], +"wallet_rpc":[["impl CommandFactory for Args"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.FromArgMatches.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.FromArgMatches.js new file mode 100644 index 0000000000..3be5310912 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.FromArgMatches.js @@ -0,0 +1,7 @@ +(function() {var implementors = { +"example_bitcoind_rpc_polling":[["impl FromArgMatches for RpcCommands"],["impl FromArgMatches for RpcArgs"]], +"example_cli":[["impl FromArgMatches for AddressCmd"],["impl FromArgMatches for TxOutCmd"],["impl<CS: Subcommand, S: Args> FromArgMatches for Commands<CS, S>"],["impl<CS: Subcommand, S: Args> FromArgMatches for Args<CS, S>"]], +"example_electrum":[["impl FromArgMatches for ElectrumCommands"],["impl FromArgMatches for ElectrumArgs"],["impl FromArgMatches for ScanOptions"]], +"example_esplora":[["impl FromArgMatches for EsploraCommands"],["impl FromArgMatches for EsploraArgs"],["impl FromArgMatches for ScanOptions"]], +"wallet_rpc":[["impl FromArgMatches for Args"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Parser.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Parser.js new file mode 100644 index 0000000000..b4468d44d8 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Parser.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"example_cli":[["impl<CS: Subcommand, S: Args> Parser for Args<CS, S>"]], +"example_electrum":[["impl Parser for ScanOptions"]], +"example_esplora":[["impl Parser for ScanOptions"]], +"wallet_rpc":[["impl Parser for Args"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Subcommand.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Subcommand.js new file mode 100644 index 0000000000..7dd9073ce3 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/clap/derive/trait.Subcommand.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"example_bitcoind_rpc_polling":[["impl Subcommand for RpcCommands"]], +"example_cli":[["impl Subcommand for AddressCmd"],["impl Subcommand for TxOutCmd"],["impl<CS: Subcommand, S: Args> Subcommand for Commands<CS, S>"]], +"example_electrum":[["impl Subcommand for ElectrumCommands"]], +"example_esplora":[["impl Subcommand for EsploraCommands"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/borrow/trait.Borrow.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/borrow/trait.Borrow.js new file mode 100644 index 0000000000..06ec974d68 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/borrow/trait.Borrow.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl Borrow<[u8]> for DescriptorId"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/clone/trait.Clone.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/clone/trait.Clone.js new file mode 100644 index 0000000000..f808d51c49 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/clone/trait.Clone.js @@ -0,0 +1,11 @@ +(function() {var implementors = { +"bdk_chain":[["impl Clone for ConfirmationTime"],["impl Clone for ApplyHeaderError"],["impl Clone for Balance"],["impl Clone for AlterCheckPointError"],["impl Clone for CannotConnectError"],["impl Clone for CheckPoint"],["impl Clone for LocalChain"],["impl Clone for MissingGenesisError"],["impl Clone for BlockId"],["impl Clone for ConfirmationHeightAnchor"],["impl Clone for ConfirmationTimeHeightAnchor"],["impl Clone for DescriptorId"],["impl<'a, T: Clone, A: Clone> Clone for CanonicalTx<'a, T, A>"],["impl<'a, T: Clone, A: Clone> Clone for TxNode<'a, T, A>"],["impl<A: Clone> Clone for ChainPosition<A>"],["impl<A: Clone> Clone for FullTxOut<A>"],["impl<A: Clone> Clone for ChangeSet<A>"],["impl<A: Clone> Clone for TxGraph<A>"],["impl<A: Clone, IA: Clone> Clone for ChangeSet<A, IA>"],["impl<D: Clone> Clone for SpkIterator<D>"],["impl<I: Clone> Clone for SpkTxOutIndex<I>"],["impl<K: Clone> Clone for ChangeSet<K>"],["impl<K: Clone> Clone for KeychainTxOutIndex<K>"]], +"bdk_coin_select":[["impl Clone for ExcessStrategyKind"],["impl Clone for SelectionConstraint"],["impl Clone for CoinSelectorOpt"],["impl Clone for ExcessStrategy"],["impl Clone for Selection"],["impl Clone for SelectionError"],["impl Clone for WeightedValue"],["impl<'a> Clone for CoinSelector<'a>"]], +"bdk_persist":[["impl<K: Clone, A: Clone> Clone for CombinedChangeSet<K, A>"]], +"bdk_tmp_plan":[["impl Clone for SigningError"],["impl Clone for SatisfactionMaterial"],["impl<AK: Clone> Clone for Plan<AK>"],["impl<Ak: Clone> Clone for RequiredSignatures<Ak>"],["impl<Ak: Clone> Clone for PlanKey<Ak>"],["impl<Ak: Clone> Clone for Requirements<Ak>"],["impl<K: Clone> Clone for Assets<K>"]], +"bdk_wallet":[["impl Clone for PkOrF"],["impl Clone for Satisfaction"],["impl Clone for SatisfiableItem"],["impl Clone for KeychainKind"],["impl Clone for Utxo"],["impl Clone for ScriptContextEnum"],["impl Clone for MiniscriptPsbtError"],["impl Clone for SignerContext"],["impl Clone for SignerId"],["impl Clone for TapLeavesOptions"],["impl Clone for ChangeSpendPolicy"],["impl Clone for TxOrdering"],["impl Clone for Condition"],["impl Clone for Policy"],["impl Clone for PrivateKeyGenerateOptions"],["impl Clone for LocalOutput"],["impl Clone for WeightedUtxo"],["impl Clone for BranchAndBoundCoinSelection"],["impl Clone for LargestFirstCoinSelection"],["impl Clone for OldestFirstCoinSelection"],["impl Clone for SignOptions"],["impl Clone for SignerOrdering"],["impl Clone for SignersContainer"],["impl Clone for Update"],["impl Clone for BumpFee"],["impl Clone for CreateTx"],["impl<'a> Clone for BuildSatisfaction<'a>"],["impl<'a, Cs: Clone, Ctx> Clone for TxBuilder<'a, Cs, Ctx>"],["impl<K: Clone, Ctx: ScriptContext> Clone for GeneratedKey<K, Ctx>"],["impl<S: Clone + Sized + Debug + Clone> Clone for SignerWrapper<S>"]], +"example_bitcoind_rpc_polling":[["impl Clone for RpcCommands"],["impl Clone for RpcArgs"]], +"example_cli":[["impl Clone for AddressCmd"],["impl Clone for CoinSelectionAlgo"],["impl Clone for Keychain"],["impl Clone for TxOutCmd"],["impl<CS: Clone + Subcommand, S: Clone + Args> Clone for Commands<CS, S>"]], +"example_electrum":[["impl Clone for ElectrumCommands"],["impl Clone for ElectrumArgs"],["impl Clone for ScanOptions"]], +"example_esplora":[["impl Clone for EsploraCommands"],["impl Clone for EsploraArgs"],["impl Clone for ScanOptions"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Eq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Eq.js new file mode 100644 index 0000000000..53b5dffb5f --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Eq.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"bdk_chain":[["impl Eq for ConfirmationTime"],["impl Eq for CalculateFeeError"],["impl Eq for Balance"],["impl Eq for BlockId"],["impl Eq for ConfirmationHeightAnchor"],["impl Eq for ConfirmationTimeHeightAnchor"],["impl Eq for DescriptorId"],["impl<'a, T: Eq, A: Eq> Eq for CanonicalTx<'a, T, A>"],["impl<'a, T: Eq, A: Eq> Eq for TxNode<'a, T, A>"],["impl<A: Eq> Eq for ChainPosition<A>"],["impl<A: Eq> Eq for FullTxOut<A>"]], +"bdk_coin_select":[["impl Eq for ExcessStrategyKind"],["impl Eq for SelectionConstraint"]], +"bdk_wallet":[["impl Eq for PkOrF"],["impl Eq for PolicyError"],["impl Eq for Satisfaction"],["impl Eq for SatisfiableItem"],["impl Eq for KeychainKind"],["impl Eq for Utxo"],["impl Eq for ScriptContextEnum"],["impl Eq for SignerContext"],["impl Eq for SignerId"],["impl Eq for TapLeavesOptions"],["impl Eq for ChangeSpendPolicy"],["impl Eq for TxOrdering"],["impl Eq for Condition"],["impl Eq for Policy"],["impl Eq for LocalOutput"],["impl Eq for WeightedUtxo"],["impl Eq for SignerOrdering"],["impl Eq for AddressInfo"]], +"example_cli":[["impl Eq for Keychain"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Ord.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Ord.js new file mode 100644 index 0000000000..9fc4c14aeb --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.Ord.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"bdk_chain":[["impl Ord for ConfirmationTime"],["impl Ord for BlockId"],["impl Ord for ConfirmationHeightAnchor"],["impl Ord for ConfirmationTimeHeightAnchor"],["impl Ord for DescriptorId"],["impl<'a, T: Ord, A: Ord> Ord for CanonicalTx<'a, T, A>"],["impl<'a, T: Ord, A: Ord> Ord for TxNode<'a, T, A>"],["impl<A: Ord> Ord for ChainPosition<A>"],["impl<A: Ord> Ord for FullTxOut<A>"]], +"bdk_coin_select":[["impl Ord for ExcessStrategyKind"]], +"bdk_wallet":[["impl Ord for KeychainKind"],["impl Ord for SignerId"],["impl Ord for ChangeSpendPolicy"],["impl Ord for TxOrdering"],["impl Ord for SignerOrdering"]], +"example_cli":[["impl Ord for Keychain"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialEq.js new file mode 100644 index 0000000000..f19cf22bc4 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialEq.js @@ -0,0 +1,9 @@ +(function() {var implementors = { +"bdk_chain":[["impl PartialEq for ConfirmationTime"],["impl PartialEq for ApplyHeaderError"],["impl PartialEq for CalculateFeeError"],["impl PartialEq for Balance"],["impl PartialEq for AlterCheckPointError"],["impl PartialEq for CannotConnectError"],["impl PartialEq for CheckPoint"],["impl PartialEq for LocalChain"],["impl PartialEq for MissingGenesisError"],["impl PartialEq for BlockId"],["impl PartialEq for ConfirmationHeightAnchor"],["impl PartialEq for ConfirmationTimeHeightAnchor"],["impl PartialEq for DescriptorId"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq for CanonicalTx<'a, T, A>"],["impl<'a, T: PartialEq, A: PartialEq> PartialEq for TxNode<'a, T, A>"],["impl<A: PartialEq> PartialEq for ChainPosition<A>"],["impl<A: PartialEq> PartialEq for FullTxOut<A>"],["impl<A: PartialEq> PartialEq for ChangeSet<A>"],["impl<A: PartialEq> PartialEq for TxGraph<A>"],["impl<A: PartialEq, IA: PartialEq> PartialEq for ChangeSet<A, IA>"],["impl<K: PartialEq> PartialEq for ChangeSet<K>"]], +"bdk_coin_select":[["impl PartialEq for ExcessStrategyKind"],["impl PartialEq for SelectionConstraint"]], +"bdk_persist":[["impl<K: PartialEq, A: PartialEq> PartialEq for CombinedChangeSet<K, A>"]], +"bdk_wallet":[["impl PartialEq for PkOrF"],["impl PartialEq for PolicyError"],["impl PartialEq for Satisfaction"],["impl PartialEq for SatisfiableItem"],["impl PartialEq for KeychainKind"],["impl PartialEq for Utxo"],["impl PartialEq for ScriptContextEnum"],["impl PartialEq for SignerContext"],["impl PartialEq for SignerId"],["impl PartialEq for TapLeavesOptions"],["impl PartialEq for ChangeSpendPolicy"],["impl PartialEq for TxOrdering"],["impl PartialEq for Condition"],["impl PartialEq for Policy"],["impl PartialEq for LocalOutput"],["impl PartialEq for WeightedUtxo"],["impl PartialEq for SignerOrdering"],["impl PartialEq for AddressInfo"]], +"example_cli":[["impl PartialEq for Keychain"]], +"example_electrum":[["impl PartialEq for ScanOptions"]], +"example_esplora":[["impl PartialEq for ScanOptions"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialOrd.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialOrd.js new file mode 100644 index 0000000000..e2aec76ed1 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/cmp/trait.PartialOrd.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"bdk_chain":[["impl PartialOrd for ConfirmationTime"],["impl PartialOrd for BlockId"],["impl PartialOrd for ConfirmationHeightAnchor"],["impl PartialOrd for ConfirmationTimeHeightAnchor"],["impl PartialOrd for DescriptorId"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd for CanonicalTx<'a, T, A>"],["impl<'a, T: PartialOrd, A: PartialOrd> PartialOrd for TxNode<'a, T, A>"],["impl<A: PartialOrd> PartialOrd for ChainPosition<A>"],["impl<A: PartialOrd> PartialOrd for FullTxOut<A>"]], +"bdk_coin_select":[["impl PartialOrd for ExcessStrategyKind"]], +"bdk_wallet":[["impl PartialOrd for KeychainKind"],["impl PartialOrd for SignerId"],["impl PartialOrd for ChangeSpendPolicy"],["impl PartialOrd for TxOrdering"],["impl PartialOrd for Condition"],["impl PartialOrd for SignerOrdering"]], +"example_cli":[["impl PartialOrd for Keychain"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.AsRef.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.AsRef.js new file mode 100644 index 0000000000..bd91ccd2c9 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.AsRef.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"bdk_chain":[["impl AsRef<[u8; 32]> for DescriptorId"],["impl AsRef<[u8]> for DescriptorId"],["impl<A> AsRef<TxGraph<A>> for TxGraph<A>"]], +"bdk_wallet":[["impl AsRef<TxGraph<ConfirmationTimeHeightAnchor>> for Wallet"],["impl AsRef<[u8]> for KeychainKind"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.From.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.From.js new file mode 100644 index 0000000000..1330e6aa11 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/convert/trait.From.js @@ -0,0 +1,9 @@ +(function() {var implementors = { +"bdk_chain":[["impl From<(&u32, &BlockHash)> for BlockId"],["impl From<(u32, BlockHash)> for BlockId"],["impl From<ChainPosition<ConfirmationTimeHeightAnchor>> for ConfirmationTime"],["impl From<BlockId> for (u32, BlockHash)"],["impl From<DescriptorId> for Hash"],["impl From<Hash> for DescriptorId"],["impl<A, IA: Default> From<ChangeSet<A>> for ChangeSet<A, IA>"],["impl<A, K> From<ChangeSet<K>> for ChangeSet<A, ChangeSet<K>>"]], +"bdk_coin_select":[["impl From<usize> for BnbLimit"],["impl From<Duration> for BnbLimit"]], +"bdk_file_store":[["impl From<Error> for FileError"],["impl From<Error> for IterError"]], +"bdk_persist":[["impl<K, A> From<BTreeMap<u32, Option<BlockHash>>> for CombinedChangeSet<K, A>"],["impl<K, A> From<ChangeSet<A, ChangeSet<K>>> for CombinedChangeSet<K, A>"]], +"bdk_tmp_plan":[["impl From<Error> for SigningError"],["impl From<Error> for SigningError"]], +"bdk_wallet":[["impl From<Error> for CreateTxError"],["impl From<PolicyError> for Error"],["impl From<PolicyError> for CreateTxError"],["impl From<SatisfiableItem> for Policy"],["impl From<KeyError> for Error"],["impl From<Error> for CreateTxError"],["impl From<MiniscriptPsbtError> for CreateTxError"],["impl From<bool> for Satisfaction"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for Error"],["impl From<Error> for KeyError"],["impl From<Error> for KeyError"],["impl From<Error> for CreateTxError"],["impl From<Error> for SignerError"],["impl From<Fingerprint> for SignerId"],["impl From<FullScanResult<KeychainKind>> for Update"],["impl From<Hash> for SignerId"],["impl From<HexToBytesError> for Error"],["impl From<SyncResult> for Update"],["impl<Ctx: ScriptContext> From<Xpriv> for ExtendedKey<Ctx>"],["impl<Ctx: ScriptContext> From<Xpub> for ExtendedKey<Ctx>"]], +"example_bitcoind_rpc_polling":[["impl From<RpcArgs> for Auth"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/default/trait.Default.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/default/trait.Default.js new file mode 100644 index 0000000000..6fcbd6c0e7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/default/trait.Default.js @@ -0,0 +1,7 @@ +(function() {var implementors = { +"bdk_chain":[["impl Default for Balance"],["impl Default for BlockId"],["impl Default for ConfirmationHeightAnchor"],["impl Default for ConfirmationTimeHeightAnchor"],["impl<A> Default for ChangeSet<A>"],["impl<A> Default for TxGraph<A>"],["impl<A, I: Default> Default for IndexedTxGraph<A, I>"],["impl<A, IA: Default> Default for ChangeSet<A, IA>"],["impl<I> Default for SpkTxOutIndex<I>"],["impl<K> Default for ChangeSet<K>"],["impl<K> Default for KeychainTxOutIndex<K>"]], +"bdk_persist":[["impl<K, A> Default for CombinedChangeSet<K, A>"]], +"bdk_tmp_plan":[["impl Default for SatisfactionMaterial"],["impl<Ak> Default for RequiredSignatures<Ak>"],["impl<Ak> Default for Requirements<Ak>"],["impl<K> Default for Assets<K>"]], +"bdk_wallet":[["impl Default for TapLeavesOptions"],["impl Default for ChangeSpendPolicy"],["impl Default for TxOrdering"],["impl Default for Condition"],["impl Default for PrivateKeyGenerateOptions"],["impl Default for BranchAndBoundCoinSelection"],["impl Default for LargestFirstCoinSelection"],["impl Default for OldestFirstCoinSelection"],["impl Default for SignOptions"],["impl Default for SignerOrdering"],["impl Default for SignersContainer"],["impl Default for Update"],["impl Default for BumpFee"],["impl Default for CreateTx"]], +"example_cli":[["impl Default for CoinSelectionAlgo"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/error/trait.Error.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/error/trait.Error.js new file mode 100644 index 0000000000..1c031af778 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/error/trait.Error.js @@ -0,0 +1,8 @@ +(function() {var implementors = { +"bdk_chain":[["impl Error for ApplyHeaderError"],["impl Error for CalculateFeeError"],["impl Error for AlterCheckPointError"],["impl Error for CannotConnectError"],["impl Error for MissingGenesisError"]], +"bdk_coin_select":[["impl Error for SelectionError"]], +"bdk_file_store":[["impl Error for FileError"],["impl Error for IterError"],["impl<C: Debug> Error for AggregateChangesetsError<C>"]], +"bdk_sqlite":[["impl Error for Error"]], +"bdk_tmp_plan":[["impl Error for SigningError"]], +"bdk_wallet":[["impl Error for Error"],["impl Error for PolicyError"],["impl Error for KeyError"],["impl Error for Error"],["impl Error for ApplyBlockError"],["impl Error for InsertTxError"],["impl Error for LoadError"],["impl Error for NewError"],["impl Error for NewOrLoadError"],["impl Error for BuildFeeBumpError"],["impl Error for CreateTxError"],["impl Error for MiniscriptPsbtError"],["impl Error for SignerError"],["impl Error for AddForeignUtxoError"],["impl Error for AddUtxoError"],["impl Error for AllowShrinkingError"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Debug.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Debug.js new file mode 100644 index 0000000000..020631b308 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Debug.js @@ -0,0 +1,16 @@ +(function() {var implementors = { +"bdk_bitcoind_rpc":[["impl<B: Debug> Debug for BlockEvent<B>"]], +"bdk_chain":[["impl Debug for ConfirmationTime"],["impl Debug for ApplyHeaderError"],["impl Debug for CalculateFeeError"],["impl Debug for Balance"],["impl Debug for AlterCheckPointError"],["impl Debug for CannotConnectError"],["impl Debug for CheckPoint"],["impl Debug for LocalChain"],["impl Debug for MissingGenesisError"],["impl Debug for BlockId"],["impl Debug for ConfirmationHeightAnchor"],["impl Debug for ConfirmationTimeHeightAnchor"],["impl Debug for DescriptorId"],["impl<'a, T: Debug, A: Debug> Debug for CanonicalTx<'a, T, A>"],["impl<'a, T: Debug, A: Debug> Debug for TxNode<'a, T, A>"],["impl<A: Debug> Debug for ChainPosition<A>"],["impl<A: Debug> Debug for FullTxOut<A>"],["impl<A: Debug> Debug for ChangeSet<A>"],["impl<A: Debug> Debug for TxGraph<A>"],["impl<A: Debug, I: Debug> Debug for IndexedTxGraph<A, I>"],["impl<A: Debug, IA: Debug> Debug for ChangeSet<A, IA>"],["impl<I: Debug> Debug for SpkTxOutIndex<I>"],["impl<K: Debug> Debug for ChangeSet<K>"],["impl<K: Debug> Debug for KeychainTxOutIndex<K>"]], +"bdk_coin_select":[["impl Debug for ExcessStrategyKind"],["impl Debug for SelectionConstraint"],["impl Debug for CoinSelectorOpt"],["impl Debug for ExcessStrategy"],["impl Debug for Selection"],["impl Debug for SelectionError"],["impl Debug for WeightedValue"],["impl<'a> Debug for CoinSelector<'a>"]], +"bdk_file_store":[["impl Debug for FileError"],["impl Debug for IterError"],["impl<C> Debug for Store<C>
    where\n C: Sync + Send + Debug,
    "],["impl<C: Debug> Debug for AggregateChangesetsError<C>"]], +"bdk_hwi":[["impl Debug for HWISigner"]], +"bdk_persist":[["impl<C: Debug> Debug for Persist<C>"],["impl<K: Debug, A: Debug> Debug for CombinedChangeSet<K, A>"]], +"bdk_sqlite":[["impl Debug for Error"],["impl<K, A> Debug for Store<K, A>"]], +"bdk_tmp_plan":[["impl Debug for SigningError"],["impl Debug for SatisfactionMaterial"],["impl<AK: Debug> Debug for Plan<AK>"],["impl<Ak: Debug> Debug for RequiredSignatures<Ak>"],["impl<Ak: Debug> Debug for PlanKey<Ak>"],["impl<Ak: Debug> Debug for Requirements<Ak>"],["impl<K: Debug> Debug for Assets<K>"]], +"bdk_wallet":[["impl Debug for Error"],["impl Debug for PkOrF"],["impl Debug for PolicyError"],["impl Debug for Satisfaction"],["impl Debug for SatisfiableItem"],["impl Debug for KeychainKind"],["impl Debug for Utxo"],["impl Debug for KeyError"],["impl Debug for ScriptContextEnum"],["impl Debug for Error"],["impl Debug for Excess"],["impl Debug for ApplyBlockError"],["impl Debug for InsertTxError"],["impl Debug for LoadError"],["impl Debug for NewError"],["impl Debug for NewOrLoadError"],["impl Debug for BuildFeeBumpError"],["impl Debug for CreateTxError"],["impl Debug for MiniscriptPsbtError"],["impl Debug for SignerContext"],["impl Debug for SignerError"],["impl Debug for SignerId"],["impl Debug for TapLeavesOptions"],["impl Debug for AddForeignUtxoError"],["impl Debug for AddUtxoError"],["impl Debug for AllowShrinkingError"],["impl Debug for ChangeSpendPolicy"],["impl Debug for TxOrdering"],["impl Debug for Condition"],["impl Debug for Policy"],["impl Debug for PrivateKeyGenerateOptions"],["impl Debug for LocalOutput"],["impl Debug for WeightedUtxo"],["impl Debug for BranchAndBoundCoinSelection"],["impl Debug for CoinSelectionResult"],["impl Debug for LargestFirstCoinSelection"],["impl Debug for OldestFirstCoinSelection"],["impl Debug for FullyNodedExport"],["impl Debug for SignOptions"],["impl Debug for SignerOrdering"],["impl Debug for SignersContainer"],["impl Debug for AddressInfo"],["impl Debug for Update"],["impl Debug for Wallet"],["impl Debug for BumpFee"],["impl Debug for CreateTx"],["impl<'a> Debug for BuildSatisfaction<'a>"],["impl<'a, Cs: Debug, Ctx: Debug> Debug for TxBuilder<'a, Cs, Ctx>"],["impl<Ctx: Debug + ScriptContext> Debug for DescriptorKey<Ctx>"],["impl<S: Debug + Sized + Debug + Clone> Debug for SignerWrapper<S>"]], +"example_bitcoind_rpc_polling":[["impl Debug for Emission"],["impl Debug for RpcCommands"],["impl Debug for RpcArgs"]], +"example_cli":[["impl Debug for AddressCmd"],["impl Debug for CoinSelectionAlgo"],["impl Debug for Keychain"],["impl Debug for TxOutCmd"],["impl<CS: Debug + Subcommand, S: Debug + Args> Debug for Commands<CS, S>"]], +"example_electrum":[["impl Debug for ElectrumCommands"],["impl Debug for ElectrumArgs"],["impl Debug for ScanOptions"]], +"example_esplora":[["impl Debug for EsploraCommands"],["impl Debug for EsploraArgs"],["impl Debug for ScanOptions"]], +"wallet_rpc":[["impl Debug for Emission"],["impl Debug for Args"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Display.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Display.js new file mode 100644 index 0000000000..32ec50f7b9 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.Display.js @@ -0,0 +1,9 @@ +(function() {var implementors = { +"bdk_chain":[["impl Display for ApplyHeaderError"],["impl Display for CalculateFeeError"],["impl Display for Balance"],["impl Display for AlterCheckPointError"],["impl Display for CannotConnectError"],["impl Display for MissingGenesisError"],["impl Display for DescriptorId"]], +"bdk_coin_select":[["impl Display for ExcessStrategyKind"],["impl Display for SelectionConstraint"],["impl Display for SelectionError"]], +"bdk_file_store":[["impl Display for FileError"],["impl Display for IterError"],["impl<C> Display for AggregateChangesetsError<C>"]], +"bdk_sqlite":[["impl Display for Error"]], +"bdk_tmp_plan":[["impl Display for SigningError"]], +"bdk_wallet":[["impl Display for Error"],["impl Display for PolicyError"],["impl Display for KeyError"],["impl Display for Error"],["impl Display for ApplyBlockError"],["impl Display for InsertTxError"],["impl Display for LoadError"],["impl Display for NewError"],["impl Display for NewOrLoadError"],["impl Display for BuildFeeBumpError"],["impl Display for CreateTxError"],["impl Display for MiniscriptPsbtError"],["impl Display for SignerError"],["impl Display for AddForeignUtxoError"],["impl Display for AddUtxoError"],["impl Display for AllowShrinkingError"],["impl Display for FullyNodedExport"],["impl Display for AddressInfo"]], +"example_cli":[["impl Display for CoinSelectionAlgo"],["impl Display for Keychain"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.LowerHex.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.LowerHex.js new file mode 100644 index 0000000000..afa0c3fa90 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.LowerHex.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl LowerHex for DescriptorId"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.UpperHex.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.UpperHex.js new file mode 100644 index 0000000000..fb5a7a8e66 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/fmt/trait.UpperHex.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl UpperHex for DescriptorId"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/hash/trait.Hash.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/hash/trait.Hash.js new file mode 100644 index 0000000000..ee084e7504 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/hash/trait.Hash.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"bdk_chain":[["impl Hash for ConfirmationTime"],["impl Hash for BlockId"],["impl Hash for ConfirmationHeightAnchor"],["impl Hash for ConfirmationTimeHeightAnchor"],["impl Hash for DescriptorId"],["impl<A: Hash> Hash for ChainPosition<A>"]], +"bdk_coin_select":[["impl Hash for ExcessStrategyKind"]], +"bdk_wallet":[["impl Hash for PkOrF"],["impl Hash for KeychainKind"],["impl Hash for SignerId"],["impl Hash for ChangeSpendPolicy"],["impl Hash for TxOrdering"],["impl Hash for Condition"],["impl Hash for LocalOutput"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/iter/traits/collect/trait.IntoIterator.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/iter/traits/collect/trait.IntoIterator.js new file mode 100644 index 0000000000..8b097e3f40 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/iter/traits/collect/trait.IntoIterator.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl IntoIterator for CheckPoint"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/iter/traits/iterator/trait.Iterator.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/iter/traits/iterator/trait.Iterator.js new file mode 100644 index 0000000000..17340b5959 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/iter/traits/iterator/trait.Iterator.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"bdk_chain":[["impl Iterator for CheckPointIter"],["impl<'g, A, F, O> Iterator for TxAncestors<'g, A, F>
    where\n F: FnMut(usize, Arc<Transaction>) -> Option<O>,
    "],["impl<'g, A, F, O> Iterator for TxDescendants<'g, A, F>
    where\n F: FnMut(usize, Txid) -> Option<O>,
    "],["impl<D> Iterator for SpkIterator<D>
    where\n D: Borrow<Descriptor<DescriptorPublicKey>>,
    "]], +"bdk_coin_select":[["impl<'c, 'f, S: Ord + Copy + Display> Iterator for BnbIter<'c, 'f, S>"]], +"bdk_file_store":[["impl<'t, T> Iterator for EntryIter<'t, T>
    where\n T: DeserializeOwned,
    "]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Copy.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Copy.js new file mode 100644 index 0000000000..6c955c5dcd --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Copy.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"bdk_chain":[["impl Copy for ConfirmationTime"],["impl Copy for BlockId"],["impl Copy for ConfirmationHeightAnchor"],["impl Copy for ConfirmationTimeHeightAnchor"],["impl Copy for DescriptorId"],["impl<A: Copy> Copy for ChainPosition<A>"]], +"bdk_coin_select":[["impl Copy for ExcessStrategyKind"],["impl Copy for SelectionConstraint"],["impl Copy for CoinSelectorOpt"],["impl Copy for ExcessStrategy"],["impl Copy for WeightedValue"]], +"bdk_wallet":[["impl Copy for KeychainKind"],["impl Copy for ScriptContextEnum"],["impl Copy for SignerContext"],["impl Copy for ChangeSpendPolicy"],["impl Copy for TxOrdering"],["impl Copy for Condition"],["impl Copy for PrivateKeyGenerateOptions"],["impl Copy for LargestFirstCoinSelection"],["impl Copy for OldestFirstCoinSelection"],["impl<'a> Copy for BuildSatisfaction<'a>"]], +"example_cli":[["impl Copy for Keychain"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Freeze.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Freeze.js new file mode 100644 index 0000000000..40901b5737 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Freeze.js @@ -0,0 +1,18 @@ +(function() {var implementors = { +"bdk_bitcoind_rpc":[["impl<'c, C> Freeze for Emitter<'c, C>",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Freeze for BlockEvent<B>
    where\n B: Freeze,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], +"bdk_chain":[["impl Freeze for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Freeze for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Freeze for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Freeze for Balance",1,["bdk_chain::keychain::Balance"]],["impl Freeze for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Freeze for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Freeze for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Freeze for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Freeze for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Freeze for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Freeze for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Freeze for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Freeze for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Freeze for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl Freeze for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Freeze for CanonicalTx<'a, T, A>
    where\n T: Freeze,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Freeze for TxNode<'a, T, A>
    where\n T: Freeze,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Freeze for TxAncestors<'g, A, F>
    where\n F: Freeze,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Freeze for TxDescendants<'g, A, F>
    where\n F: Freeze,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Freeze for ChainPosition<A>
    where\n A: Freeze,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Freeze for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Freeze for FullTxOut<A>
    where\n A: Freeze,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Freeze for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Freeze for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Freeze for IndexedTxGraph<A, I>
    where\n I: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Freeze for ChangeSet<A, IA>
    where\n IA: Freeze,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Freeze for SpkIterator<D>
    where\n D: Freeze,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Freeze for SpkTxOutIndex<I>",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<K> Freeze for ChangeSet<K>",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Freeze for KeychainTxOutIndex<K>",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> Freeze for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Freeze for FullScanResult<K, A>",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_coin_select":[["impl Freeze for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl Freeze for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl Freeze for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Freeze for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Freeze for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl Freeze for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Freeze for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Freeze for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Freeze for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> Freeze for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> Freeze for BnbIter<'c, 'f, S>
    where\n S: Freeze,
    ",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> Freeze for Bnb<'c, S>
    where\n S: Freeze,
    ",1,["bdk_coin_select::bnb::Bnb"]]], +"bdk_electrum":[["impl Freeze for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]],["impl<K> Freeze for ElectrumFullScanResult<K>",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]]], +"bdk_file_store":[["impl Freeze for FileError",1,["bdk_file_store::FileError"]],["impl Freeze for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> Freeze for EntryIter<'t, T>",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> Freeze for AggregateChangesetsError<C>
    where\n C: Freeze,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> Freeze for Store<C>",1,["bdk_file_store::store::Store"]]], +"bdk_hwi":[["impl Freeze for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], +"bdk_persist":[["impl<C> Freeze for Persist<C>
    where\n C: Freeze,
    ",1,["bdk_persist::persist::Persist"]],["impl<K, A> Freeze for CombinedChangeSet<K, A>",1,["bdk_persist::changeset::CombinedChangeSet"]]], +"bdk_sqlite":[["impl Freeze for Error",1,["bdk_sqlite::Error"]],["impl<K, A> !Freeze for Store<K, A>",1,["bdk_sqlite::store::Store"]]], +"bdk_testenv":[["impl !Freeze for TestEnv",1,["bdk_testenv::TestEnv"]]], +"bdk_tmp_plan":[["impl Freeze for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl Freeze for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> !Freeze for Plan<AK>",1,["bdk_tmp_plan::Plan"]],["impl<Ak> Freeze for PlanState<Ak>
    where\n Ak: Freeze,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> Freeze for RequiredSignatures<Ak>
    where\n Ak: Freeze,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> Freeze for PlanKey<Ak>
    where\n Ak: Freeze,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> Freeze for Requirements<Ak>
    where\n Ak: Freeze,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> Freeze for Assets<K>",1,["bdk_tmp_plan::Assets"]]], +"bdk_wallet":[["impl !Freeze for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Freeze for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Freeze for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Freeze for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Freeze for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Freeze for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Freeze for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Freeze for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Freeze for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Freeze for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Freeze for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Freeze for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Freeze for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Freeze for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl Freeze for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Freeze for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Freeze for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Freeze for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Freeze for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Freeze for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Freeze for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Freeze for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Freeze for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Freeze for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Freeze for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Freeze for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl Freeze for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Freeze for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Freeze for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Freeze for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Freeze for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Freeze for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Freeze for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Freeze for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Freeze for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Freeze for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Freeze for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Freeze for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Freeze for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Freeze for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Freeze for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Freeze for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Freeze for Update",1,["bdk_wallet::wallet::Update"]],["impl Freeze for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Freeze for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl Freeze for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl<'a> Freeze for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs, Ctx> Freeze for TxBuilder<'a, Cs, Ctx>
    where\n Cs: Freeze,
    ",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Freeze for DescriptorKey<Ctx>",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Freeze for ExtendedKey<Ctx>",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> Freeze for Bip44<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Freeze for Bip44Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Freeze for Bip49<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Freeze for Bip49Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Freeze for Bip84<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Freeze for Bip84Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Freeze for Bip86<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Freeze for Bip86Public<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Freeze for P2Pkh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Freeze for P2TR<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Freeze for P2Wpkh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Freeze for P2Wpkh_P2Sh<K>
    where\n K: Freeze,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Freeze for GeneratedKey<K, Ctx>
    where\n K: Freeze,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Freeze for SignerWrapper<S>
    where\n S: Freeze,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"example_bitcoind_rpc_polling":[["impl Freeze for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Freeze for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl Freeze for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], +"example_cli":[["impl Freeze for AddressCmd",1,["example_cli::AddressCmd"]],["impl Freeze for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Freeze for Keychain",1,["example_cli::Keychain"]],["impl Freeze for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Freeze for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> Freeze for Commands<CS, S>
    where\n CS: Freeze,\n S: Freeze,
    ",1,["example_cli::Commands"]],["impl<CS, S> Freeze for Args<CS, S>
    where\n CS: Freeze,\n S: Freeze,
    ",1,["example_cli::Args"]],["impl<CS, S, C> !Freeze for Init<CS, S, C>",1,["example_cli::Init"]]], +"example_electrum":[["impl Freeze for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Freeze for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Freeze for ScanOptions",1,["example_electrum::ScanOptions"]]], +"example_esplora":[["impl Freeze for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl Freeze for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl Freeze for ScanOptions",1,["example_esplora::ScanOptions"]]], +"wallet_rpc":[["impl Freeze for Emission",1,["wallet_rpc::Emission"]],["impl Freeze for Args",1,["wallet_rpc::Args"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Send.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Send.js new file mode 100644 index 0000000000..8e8e1eaf4b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Send.js @@ -0,0 +1,18 @@ +(function() {var implementors = { +"bdk_bitcoind_rpc":[["impl<'c, C> Send for Emitter<'c, C>
    where\n C: Sync,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Send for BlockEvent<B>
    where\n B: Send,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], +"bdk_chain":[["impl Send for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Send for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Send for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Send for Balance",1,["bdk_chain::keychain::Balance"]],["impl Send for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Send for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Send for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Send for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Send for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Send for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Send for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Send for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Send for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Send for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl Send for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Send for CanonicalTx<'a, T, A>
    where\n T: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Send for TxNode<'a, T, A>
    where\n T: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Send for TxAncestors<'g, A, F>
    where\n F: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Send for TxDescendants<'g, A, F>
    where\n F: Send,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Send for ChainPosition<A>
    where\n A: Send,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Send for SyncResult<A>
    where\n A: Send,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Send for FullTxOut<A>
    where\n A: Send,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Send for ChangeSet<A>
    where\n A: Send,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Send for TxGraph<A>
    where\n A: Send,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Send for IndexedTxGraph<A, I>
    where\n I: Send,\n A: Send,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Send for ChangeSet<A, IA>
    where\n IA: Send,\n A: Send,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Send for SpkIterator<D>
    where\n D: Send,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Send for SpkTxOutIndex<I>
    where\n I: Send,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<K> Send for ChangeSet<K>
    where\n K: Send,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Send for KeychainTxOutIndex<K>
    where\n K: Send,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> Send for FullScanRequest<K>
    where\n K: Send,
    ",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Send for FullScanResult<K, A>
    where\n K: Send,\n A: Send,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_coin_select":[["impl Send for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl Send for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl Send for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Send for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Send for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl Send for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Send for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Send for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Send for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> Send for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> !Send for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> Send for Bnb<'c, S>
    where\n S: Send,
    ",1,["bdk_coin_select::bnb::Bnb"]]], +"bdk_electrum":[["impl Send for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]],["impl<K> Send for ElectrumFullScanResult<K>
    where\n K: Send,
    ",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]]], +"bdk_file_store":[["impl Send for FileError",1,["bdk_file_store::FileError"]],["impl Send for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> Send for EntryIter<'t, T>
    where\n T: Send,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> Send for AggregateChangesetsError<C>
    where\n C: Send,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> Send for Store<C>",1,["bdk_file_store::store::Store"]]], +"bdk_hwi":[["impl Send for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], +"bdk_persist":[["impl<C> Send for Persist<C>
    where\n C: Send,
    ",1,["bdk_persist::persist::Persist"]],["impl<K, A> Send for CombinedChangeSet<K, A>
    where\n K: Send,\n A: Send,
    ",1,["bdk_persist::changeset::CombinedChangeSet"]]], +"bdk_sqlite":[["impl Send for Error",1,["bdk_sqlite::Error"]],["impl<K, A> Send for Store<K, A>
    where\n K: Send,\n A: Send,
    ",1,["bdk_sqlite::store::Store"]]], +"bdk_testenv":[["impl Send for TestEnv",1,["bdk_testenv::TestEnv"]]], +"bdk_tmp_plan":[["impl Send for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl Send for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> Send for Plan<AK>
    where\n AK: Send,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> Send for PlanState<Ak>
    where\n Ak: Send,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> Send for RequiredSignatures<Ak>
    where\n Ak: Send,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> Send for PlanKey<Ak>
    where\n Ak: Send,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> Send for Requirements<Ak>
    where\n Ak: Send,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> Send for Assets<K>
    where\n K: Send,
    ",1,["bdk_tmp_plan::Assets"]]], +"bdk_wallet":[["impl Send for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Send for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Send for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Send for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Send for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Send for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Send for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Send for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Send for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Send for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Send for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Send for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Send for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl Send for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Send for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Send for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Send for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Send for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Send for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Send for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Send for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Send for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Send for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Send for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Send for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Send for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl Send for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Send for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Send for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Send for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Send for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Send for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Send for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Send for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Send for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Send for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Send for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Send for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Send for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Send for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Send for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Send for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Send for Update",1,["bdk_wallet::wallet::Update"]],["impl Send for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Send for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl Send for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl<'a> Send for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs, Ctx> !Send for TxBuilder<'a, Cs, Ctx>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Send for DescriptorKey<Ctx>
    where\n Ctx: Send,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Send for ExtendedKey<Ctx>
    where\n Ctx: Send,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> Send for Bip44<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Send for Bip44Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Send for Bip49<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Send for Bip49Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Send for Bip84<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Send for Bip84Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Send for Bip86<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Send for Bip86Public<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Send for P2Pkh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Send for P2TR<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Send for P2Wpkh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Send for P2Wpkh_P2Sh<K>
    where\n K: Send,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Send for GeneratedKey<K, Ctx>
    where\n K: Send,\n Ctx: Send,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Send for SignerWrapper<S>
    where\n S: Send,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"example_bitcoind_rpc_polling":[["impl Send for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Send for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl Send for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], +"example_cli":[["impl Send for AddressCmd",1,["example_cli::AddressCmd"]],["impl Send for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Send for Keychain",1,["example_cli::Keychain"]],["impl Send for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Send for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> Send for Commands<CS, S>
    where\n CS: Send,\n S: Send,
    ",1,["example_cli::Commands"]],["impl<CS, S> Send for Args<CS, S>
    where\n CS: Send,\n S: Send,
    ",1,["example_cli::Args"]],["impl<CS, S, C> Send for Init<CS, S, C>
    where\n C: Send,\n CS: Send,\n S: Send,
    ",1,["example_cli::Init"]]], +"example_electrum":[["impl Send for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Send for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Send for ScanOptions",1,["example_electrum::ScanOptions"]]], +"example_esplora":[["impl Send for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl Send for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl Send for ScanOptions",1,["example_esplora::ScanOptions"]]], +"wallet_rpc":[["impl Send for Emission",1,["wallet_rpc::Emission"]],["impl Send for Args",1,["wallet_rpc::Args"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.StructuralPartialEq.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.StructuralPartialEq.js new file mode 100644 index 0000000000..61e7b5c59d --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -0,0 +1,9 @@ +(function() {var implementors = { +"bdk_chain":[["impl StructuralPartialEq for ConfirmationTime"],["impl StructuralPartialEq for ApplyHeaderError"],["impl StructuralPartialEq for CalculateFeeError"],["impl StructuralPartialEq for Balance"],["impl StructuralPartialEq for AlterCheckPointError"],["impl StructuralPartialEq for CannotConnectError"],["impl StructuralPartialEq for LocalChain"],["impl StructuralPartialEq for MissingGenesisError"],["impl StructuralPartialEq for BlockId"],["impl StructuralPartialEq for ConfirmationHeightAnchor"],["impl StructuralPartialEq for ConfirmationTimeHeightAnchor"],["impl StructuralPartialEq for DescriptorId"],["impl<'a, T, A> StructuralPartialEq for CanonicalTx<'a, T, A>"],["impl<'a, T, A> StructuralPartialEq for TxNode<'a, T, A>"],["impl<A> StructuralPartialEq for ChainPosition<A>"],["impl<A> StructuralPartialEq for FullTxOut<A>"],["impl<A> StructuralPartialEq for ChangeSet<A>"],["impl<A> StructuralPartialEq for TxGraph<A>"],["impl<A, IA> StructuralPartialEq for ChangeSet<A, IA>"],["impl<K> StructuralPartialEq for ChangeSet<K>"]], +"bdk_coin_select":[["impl StructuralPartialEq for ExcessStrategyKind"],["impl StructuralPartialEq for SelectionConstraint"]], +"bdk_persist":[["impl<K, A> StructuralPartialEq for CombinedChangeSet<K, A>"]], +"bdk_wallet":[["impl StructuralPartialEq for PkOrF"],["impl StructuralPartialEq for PolicyError"],["impl StructuralPartialEq for Satisfaction"],["impl StructuralPartialEq for SatisfiableItem"],["impl StructuralPartialEq for KeychainKind"],["impl StructuralPartialEq for Utxo"],["impl StructuralPartialEq for ScriptContextEnum"],["impl StructuralPartialEq for SignerContext"],["impl StructuralPartialEq for SignerId"],["impl StructuralPartialEq for TapLeavesOptions"],["impl StructuralPartialEq for ChangeSpendPolicy"],["impl StructuralPartialEq for TxOrdering"],["impl StructuralPartialEq for Condition"],["impl StructuralPartialEq for Policy"],["impl StructuralPartialEq for LocalOutput"],["impl StructuralPartialEq for WeightedUtxo"],["impl StructuralPartialEq for SignerOrdering"],["impl StructuralPartialEq for AddressInfo"]], +"example_cli":[["impl StructuralPartialEq for Keychain"]], +"example_electrum":[["impl StructuralPartialEq for ScanOptions"]], +"example_esplora":[["impl StructuralPartialEq for ScanOptions"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Sync.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Sync.js new file mode 100644 index 0000000000..3d98a734d0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Sync.js @@ -0,0 +1,18 @@ +(function() {var implementors = { +"bdk_bitcoind_rpc":[["impl<'c, C> Sync for Emitter<'c, C>
    where\n C: Sync,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Sync for BlockEvent<B>
    where\n B: Sync,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], +"bdk_chain":[["impl !Sync for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Sync for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Sync for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Sync for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Sync for Balance",1,["bdk_chain::keychain::Balance"]],["impl Sync for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Sync for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Sync for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Sync for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Sync for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Sync for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Sync for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Sync for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Sync for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl Sync for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Sync for CanonicalTx<'a, T, A>
    where\n T: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Sync for TxNode<'a, T, A>
    where\n T: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Sync for TxAncestors<'g, A, F>
    where\n F: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Sync for TxDescendants<'g, A, F>
    where\n F: Sync,\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Sync for ChainPosition<A>
    where\n A: Sync,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Sync for SyncResult<A>
    where\n A: Sync,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Sync for FullTxOut<A>
    where\n A: Sync,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Sync for ChangeSet<A>
    where\n A: Sync,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Sync for TxGraph<A>
    where\n A: Sync,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Sync for IndexedTxGraph<A, I>
    where\n I: Sync,\n A: Sync,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Sync for ChangeSet<A, IA>
    where\n IA: Sync,\n A: Sync,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Sync for SpkIterator<D>
    where\n D: Sync,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Sync for SpkTxOutIndex<I>
    where\n I: Sync,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<K> !Sync for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> Sync for ChangeSet<K>
    where\n K: Sync,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Sync for KeychainTxOutIndex<K>
    where\n K: Sync,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K, A> Sync for FullScanResult<K, A>
    where\n K: Sync,\n A: Sync,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_coin_select":[["impl Sync for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl Sync for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl Sync for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Sync for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Sync for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl Sync for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Sync for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Sync for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Sync for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> Sync for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> !Sync for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> Sync for Bnb<'c, S>
    where\n S: Sync,
    ",1,["bdk_coin_select::bnb::Bnb"]]], +"bdk_electrum":[["impl Sync for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]],["impl<K> Sync for ElectrumFullScanResult<K>
    where\n K: Sync,
    ",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]]], +"bdk_file_store":[["impl Sync for FileError",1,["bdk_file_store::FileError"]],["impl Sync for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> Sync for EntryIter<'t, T>
    where\n T: Sync,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> Sync for AggregateChangesetsError<C>
    where\n C: Sync,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> Sync for Store<C>",1,["bdk_file_store::store::Store"]]], +"bdk_hwi":[["impl Sync for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], +"bdk_persist":[["impl<C> Sync for Persist<C>
    where\n C: Sync,
    ",1,["bdk_persist::persist::Persist"]],["impl<K, A> Sync for CombinedChangeSet<K, A>
    where\n K: Sync,\n A: Sync,
    ",1,["bdk_persist::changeset::CombinedChangeSet"]]], +"bdk_sqlite":[["impl Sync for Error",1,["bdk_sqlite::Error"]],["impl<K, A> Sync for Store<K, A>
    where\n K: Sync,\n A: Sync,
    ",1,["bdk_sqlite::store::Store"]]], +"bdk_testenv":[["impl Sync for TestEnv",1,["bdk_testenv::TestEnv"]]], +"bdk_tmp_plan":[["impl Sync for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl Sync for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> Sync for Plan<AK>
    where\n AK: Sync,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> Sync for PlanState<Ak>
    where\n Ak: Sync,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> Sync for RequiredSignatures<Ak>
    where\n Ak: Sync,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> Sync for PlanKey<Ak>
    where\n Ak: Sync,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> Sync for Requirements<Ak>
    where\n Ak: Sync,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> Sync for Assets<K>
    where\n K: Sync,
    ",1,["bdk_tmp_plan::Assets"]]], +"bdk_wallet":[["impl Sync for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Sync for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Sync for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Sync for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Sync for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Sync for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Sync for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Sync for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Sync for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Sync for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Sync for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Sync for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Sync for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl Sync for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Sync for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Sync for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Sync for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Sync for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Sync for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Sync for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Sync for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Sync for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Sync for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Sync for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Sync for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Sync for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl Sync for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Sync for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Sync for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Sync for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Sync for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Sync for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Sync for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Sync for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Sync for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Sync for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Sync for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Sync for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Sync for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Sync for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Sync for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Sync for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Sync for Update",1,["bdk_wallet::wallet::Update"]],["impl Sync for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Sync for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl Sync for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl<'a> Sync for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs, Ctx> !Sync for TxBuilder<'a, Cs, Ctx>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Sync for DescriptorKey<Ctx>
    where\n Ctx: Sync,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Sync for ExtendedKey<Ctx>
    where\n Ctx: Sync,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> Sync for Bip44<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Sync for Bip44Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Sync for Bip49<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Sync for Bip49Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Sync for Bip84<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Sync for Bip84Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Sync for Bip86<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Sync for Bip86Public<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Sync for P2Pkh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Sync for P2TR<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Sync for P2Wpkh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Sync for P2Wpkh_P2Sh<K>
    where\n K: Sync,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Sync for GeneratedKey<K, Ctx>
    where\n K: Sync,\n Ctx: Sync,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Sync for SignerWrapper<S>
    where\n S: Sync,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"example_bitcoind_rpc_polling":[["impl Sync for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Sync for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl Sync for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], +"example_cli":[["impl Sync for AddressCmd",1,["example_cli::AddressCmd"]],["impl Sync for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Sync for Keychain",1,["example_cli::Keychain"]],["impl Sync for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Sync for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> Sync for Commands<CS, S>
    where\n CS: Sync,\n S: Sync,
    ",1,["example_cli::Commands"]],["impl<CS, S> Sync for Args<CS, S>
    where\n CS: Sync,\n S: Sync,
    ",1,["example_cli::Args"]],["impl<CS, S, C> Sync for Init<CS, S, C>
    where\n C: Sync + Send,\n CS: Sync,\n S: Sync,
    ",1,["example_cli::Init"]]], +"example_electrum":[["impl Sync for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Sync for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Sync for ScanOptions",1,["example_electrum::ScanOptions"]]], +"example_esplora":[["impl Sync for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl Sync for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl Sync for ScanOptions",1,["example_esplora::ScanOptions"]]], +"wallet_rpc":[["impl Sync for Emission",1,["wallet_rpc::Emission"]],["impl Sync for Args",1,["wallet_rpc::Args"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Unpin.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Unpin.js new file mode 100644 index 0000000000..c2db48a19b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/marker/trait.Unpin.js @@ -0,0 +1,18 @@ +(function() {var implementors = { +"bdk_bitcoind_rpc":[["impl<'c, C> Unpin for Emitter<'c, C>",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> Unpin for BlockEvent<B>
    where\n B: Unpin,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], +"bdk_chain":[["impl Unpin for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl Unpin for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl Unpin for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl Unpin for Balance",1,["bdk_chain::keychain::Balance"]],["impl Unpin for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl Unpin for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl Unpin for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl Unpin for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl Unpin for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl Unpin for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl Unpin for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl Unpin for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl Unpin for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl Unpin for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl Unpin for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> Unpin for CanonicalTx<'a, T, A>
    where\n T: Unpin,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> Unpin for TxNode<'a, T, A>
    where\n T: Unpin,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> Unpin for TxAncestors<'g, A, F>
    where\n F: Unpin,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> Unpin for TxDescendants<'g, A, F>
    where\n F: Unpin,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> Unpin for ChainPosition<A>
    where\n A: Unpin,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> Unpin for SyncResult<A>",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> Unpin for FullTxOut<A>
    where\n A: Unpin,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> Unpin for ChangeSet<A>",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> Unpin for TxGraph<A>",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> Unpin for IndexedTxGraph<A, I>
    where\n I: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> Unpin for ChangeSet<A, IA>
    where\n IA: Unpin,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> Unpin for SpkIterator<D>
    where\n D: Unpin,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> Unpin for SpkTxOutIndex<I>
    where\n I: Unpin,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<K> Unpin for ChangeSet<K>",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> Unpin for KeychainTxOutIndex<K>",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K> Unpin for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K, A> Unpin for FullScanResult<K, A>",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_coin_select":[["impl Unpin for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl Unpin for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl Unpin for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl Unpin for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl Unpin for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl Unpin for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl Unpin for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl Unpin for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl Unpin for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> Unpin for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> Unpin for BnbIter<'c, 'f, S>
    where\n S: Unpin,
    ",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> Unpin for Bnb<'c, S>
    where\n S: Unpin,
    ",1,["bdk_coin_select::bnb::Bnb"]]], +"bdk_electrum":[["impl Unpin for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]],["impl<K> Unpin for ElectrumFullScanResult<K>",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]]], +"bdk_file_store":[["impl Unpin for FileError",1,["bdk_file_store::FileError"]],["impl Unpin for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> Unpin for EntryIter<'t, T>
    where\n T: Unpin,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> Unpin for AggregateChangesetsError<C>
    where\n C: Unpin,
    ",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> Unpin for Store<C>
    where\n C: Unpin,
    ",1,["bdk_file_store::store::Store"]]], +"bdk_hwi":[["impl Unpin for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], +"bdk_persist":[["impl<C> Unpin for Persist<C>
    where\n C: Unpin,
    ",1,["bdk_persist::persist::Persist"]],["impl<K, A> Unpin for CombinedChangeSet<K, A>",1,["bdk_persist::changeset::CombinedChangeSet"]]], +"bdk_sqlite":[["impl Unpin for Error",1,["bdk_sqlite::Error"]],["impl<K, A> Unpin for Store<K, A>
    where\n K: Unpin,\n A: Unpin,
    ",1,["bdk_sqlite::store::Store"]]], +"bdk_testenv":[["impl Unpin for TestEnv",1,["bdk_testenv::TestEnv"]]], +"bdk_tmp_plan":[["impl Unpin for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl Unpin for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> Unpin for Plan<AK>
    where\n AK: Unpin,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> Unpin for PlanState<Ak>
    where\n Ak: Unpin,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> Unpin for RequiredSignatures<Ak>
    where\n Ak: Unpin,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> Unpin for PlanKey<Ak>
    where\n Ak: Unpin,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> Unpin for Requirements<Ak>
    where\n Ak: Unpin,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> Unpin for Assets<K>
    where\n K: Unpin,
    ",1,["bdk_tmp_plan::Assets"]]], +"bdk_wallet":[["impl Unpin for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl Unpin for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl Unpin for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl Unpin for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl Unpin for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl Unpin for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl Unpin for Utxo",1,["bdk_wallet::types::Utxo"]],["impl Unpin for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl Unpin for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl Unpin for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl Unpin for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl Unpin for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl Unpin for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl Unpin for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl Unpin for NewError",1,["bdk_wallet::wallet::NewError"]],["impl Unpin for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl Unpin for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl Unpin for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl Unpin for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl Unpin for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl Unpin for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl Unpin for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl Unpin for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl Unpin for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl Unpin for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl Unpin for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl Unpin for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl Unpin for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl Unpin for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl Unpin for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl Unpin for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl Unpin for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl Unpin for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl Unpin for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl Unpin for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl Unpin for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl Unpin for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl Unpin for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl Unpin for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl Unpin for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl Unpin for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl Unpin for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl Unpin for Update",1,["bdk_wallet::wallet::Update"]],["impl Unpin for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl Unpin for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl Unpin for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl<'a> Unpin for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs, Ctx> Unpin for TxBuilder<'a, Cs, Ctx>
    where\n Cs: Unpin,\n Ctx: Unpin,
    ",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> Unpin for DescriptorKey<Ctx>
    where\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> Unpin for ExtendedKey<Ctx>
    where\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> Unpin for Bip44<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> Unpin for Bip44Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> Unpin for Bip49<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> Unpin for Bip49Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> Unpin for Bip84<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> Unpin for Bip84Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> Unpin for Bip86<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> Unpin for Bip86Public<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> Unpin for P2Pkh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> Unpin for P2TR<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> Unpin for P2Wpkh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> Unpin for P2Wpkh_P2Sh<K>
    where\n K: Unpin,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> Unpin for GeneratedKey<K, Ctx>
    where\n K: Unpin,\n Ctx: Unpin,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> Unpin for SignerWrapper<S>
    where\n S: Unpin,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"example_bitcoind_rpc_polling":[["impl Unpin for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl Unpin for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl Unpin for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], +"example_cli":[["impl Unpin for AddressCmd",1,["example_cli::AddressCmd"]],["impl Unpin for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl Unpin for Keychain",1,["example_cli::Keychain"]],["impl Unpin for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl Unpin for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> Unpin for Commands<CS, S>
    where\n CS: Unpin,\n S: Unpin,
    ",1,["example_cli::Commands"]],["impl<CS, S> Unpin for Args<CS, S>
    where\n CS: Unpin,\n S: Unpin,
    ",1,["example_cli::Args"]],["impl<CS, S, C> Unpin for Init<CS, S, C>
    where\n C: Unpin,\n CS: Unpin,\n S: Unpin,
    ",1,["example_cli::Init"]]], +"example_electrum":[["impl Unpin for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl Unpin for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl Unpin for ScanOptions",1,["example_electrum::ScanOptions"]]], +"example_esplora":[["impl Unpin for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl Unpin for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl Unpin for ScanOptions",1,["example_esplora::ScanOptions"]]], +"wallet_rpc":[["impl Unpin for Emission",1,["wallet_rpc::Emission"]],["impl Unpin for Args",1,["wallet_rpc::Args"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/arith/trait.Add.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/arith/trait.Add.js new file mode 100644 index 0000000000..14e2ce5801 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/arith/trait.Add.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl Add for Balance"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.Deref.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.Deref.js new file mode 100644 index 0000000000..a51a0f4c04 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/deref/trait.Deref.js @@ -0,0 +1,4 @@ +(function() {var implementors = { +"bdk_chain":[["impl<'a, T, A> Deref for TxNode<'a, T, A>"]], +"bdk_wallet":[["impl Deref for AddressInfo"],["impl<K, Ctx: ScriptContext> Deref for GeneratedKey<K, Ctx>"],["impl<S: Sized + Debug + Clone> Deref for SignerWrapper<S>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/drop/trait.Drop.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/drop/trait.Drop.js new file mode 100644 index 0000000000..44ffe3b0f2 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/drop/trait.Drop.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_file_store":[["impl<'t, T> Drop for EntryIter<'t, T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/index/trait.Index.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/index/trait.Index.js new file mode 100644 index 0000000000..1aee3be389 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/ops/index/trait.Index.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_chain":[["impl<I: SliceIndex<[u8]>> Index<I> for DescriptorId"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js new file mode 100644 index 0000000000..0cc8778d55 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -0,0 +1,18 @@ +(function() {var implementors = { +"bdk_bitcoind_rpc":[["impl<'c, C> RefUnwindSafe for Emitter<'c, C>
    where\n C: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> RefUnwindSafe for BlockEvent<B>
    where\n B: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], +"bdk_chain":[["impl !RefUnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl RefUnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl RefUnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl RefUnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl RefUnwindSafe for Balance",1,["bdk_chain::keychain::Balance"]],["impl RefUnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl RefUnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl RefUnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl RefUnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl RefUnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl RefUnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl RefUnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl RefUnwindSafe for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl RefUnwindSafe for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl RefUnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> RefUnwindSafe for CanonicalTx<'a, T, A>
    where\n T: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> RefUnwindSafe for TxNode<'a, T, A>
    where\n T: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> RefUnwindSafe for TxAncestors<'g, A, F>
    where\n F: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> RefUnwindSafe for TxDescendants<'g, A, F>
    where\n F: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> RefUnwindSafe for ChainPosition<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> RefUnwindSafe for SyncResult<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> RefUnwindSafe for FullTxOut<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> RefUnwindSafe for ChangeSet<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> RefUnwindSafe for TxGraph<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> RefUnwindSafe for IndexedTxGraph<A, I>
    where\n I: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> RefUnwindSafe for ChangeSet<A, IA>
    where\n IA: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> RefUnwindSafe for SpkIterator<D>
    where\n D: RefUnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> RefUnwindSafe for SpkTxOutIndex<I>
    where\n I: RefUnwindSafe,
    ",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<K> !RefUnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> RefUnwindSafe for ChangeSet<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> RefUnwindSafe for KeychainTxOutIndex<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K, A> RefUnwindSafe for FullScanResult<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_coin_select":[["impl RefUnwindSafe for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl RefUnwindSafe for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl RefUnwindSafe for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl RefUnwindSafe for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl RefUnwindSafe for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl RefUnwindSafe for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl RefUnwindSafe for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl RefUnwindSafe for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl RefUnwindSafe for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> RefUnwindSafe for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> !RefUnwindSafe for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> RefUnwindSafe for Bnb<'c, S>
    where\n S: RefUnwindSafe,
    ",1,["bdk_coin_select::bnb::Bnb"]]], +"bdk_electrum":[["impl RefUnwindSafe for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]],["impl<K> RefUnwindSafe for ElectrumFullScanResult<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]]], +"bdk_file_store":[["impl !RefUnwindSafe for FileError",1,["bdk_file_store::FileError"]],["impl !RefUnwindSafe for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> RefUnwindSafe for EntryIter<'t, T>
    where\n T: RefUnwindSafe,
    ",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> !RefUnwindSafe for AggregateChangesetsError<C>",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> RefUnwindSafe for Store<C>
    where\n C: RefUnwindSafe,
    ",1,["bdk_file_store::store::Store"]]], +"bdk_hwi":[["impl !RefUnwindSafe for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], +"bdk_persist":[["impl<C> !RefUnwindSafe for Persist<C>",1,["bdk_persist::persist::Persist"]],["impl<K, A> RefUnwindSafe for CombinedChangeSet<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_persist::changeset::CombinedChangeSet"]]], +"bdk_sqlite":[["impl !RefUnwindSafe for Error",1,["bdk_sqlite::Error"]],["impl<K, A> RefUnwindSafe for Store<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_sqlite::store::Store"]]], +"bdk_testenv":[["impl !RefUnwindSafe for TestEnv",1,["bdk_testenv::TestEnv"]]], +"bdk_tmp_plan":[["impl RefUnwindSafe for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl RefUnwindSafe for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> RefUnwindSafe for Plan<AK>
    where\n AK: RefUnwindSafe,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> RefUnwindSafe for PlanState<Ak>
    where\n Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> RefUnwindSafe for RequiredSignatures<Ak>
    where\n Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> RefUnwindSafe for PlanKey<Ak>
    where\n Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> RefUnwindSafe for Requirements<Ak>
    where\n Ak: RefUnwindSafe,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> RefUnwindSafe for Assets<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_tmp_plan::Assets"]]], +"bdk_wallet":[["impl !RefUnwindSafe for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl !RefUnwindSafe for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl !RefUnwindSafe for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl RefUnwindSafe for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl RefUnwindSafe for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl RefUnwindSafe for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl RefUnwindSafe for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl RefUnwindSafe for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl RefUnwindSafe for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl RefUnwindSafe for Utxo",1,["bdk_wallet::types::Utxo"]],["impl RefUnwindSafe for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl RefUnwindSafe for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl RefUnwindSafe for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl RefUnwindSafe for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl RefUnwindSafe for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl RefUnwindSafe for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl RefUnwindSafe for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl RefUnwindSafe for NewError",1,["bdk_wallet::wallet::NewError"]],["impl RefUnwindSafe for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl RefUnwindSafe for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl RefUnwindSafe for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl RefUnwindSafe for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl RefUnwindSafe for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl RefUnwindSafe for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl RefUnwindSafe for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl RefUnwindSafe for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl RefUnwindSafe for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl RefUnwindSafe for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl RefUnwindSafe for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl RefUnwindSafe for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl RefUnwindSafe for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl RefUnwindSafe for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl RefUnwindSafe for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl RefUnwindSafe for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl RefUnwindSafe for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl RefUnwindSafe for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl RefUnwindSafe for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl RefUnwindSafe for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl RefUnwindSafe for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl RefUnwindSafe for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl RefUnwindSafe for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl RefUnwindSafe for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl RefUnwindSafe for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl RefUnwindSafe for Update",1,["bdk_wallet::wallet::Update"]],["impl RefUnwindSafe for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl RefUnwindSafe for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl<'a> RefUnwindSafe for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs, Ctx> !RefUnwindSafe for TxBuilder<'a, Cs, Ctx>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> RefUnwindSafe for DescriptorKey<Ctx>
    where\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> RefUnwindSafe for ExtendedKey<Ctx>
    where\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> RefUnwindSafe for Bip44<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> RefUnwindSafe for Bip44Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> RefUnwindSafe for Bip49<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> RefUnwindSafe for Bip49Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> RefUnwindSafe for Bip84<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> RefUnwindSafe for Bip84Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> RefUnwindSafe for Bip86<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> RefUnwindSafe for Bip86Public<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> RefUnwindSafe for P2Pkh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> RefUnwindSafe for P2TR<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> RefUnwindSafe for P2Wpkh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> RefUnwindSafe for P2Wpkh_P2Sh<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> RefUnwindSafe for GeneratedKey<K, Ctx>
    where\n K: RefUnwindSafe,\n Ctx: RefUnwindSafe,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> RefUnwindSafe for SignerWrapper<S>
    where\n S: RefUnwindSafe,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"example_bitcoind_rpc_polling":[["impl RefUnwindSafe for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl RefUnwindSafe for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl RefUnwindSafe for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], +"example_cli":[["impl RefUnwindSafe for AddressCmd",1,["example_cli::AddressCmd"]],["impl RefUnwindSafe for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl RefUnwindSafe for Keychain",1,["example_cli::Keychain"]],["impl RefUnwindSafe for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl RefUnwindSafe for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> RefUnwindSafe for Commands<CS, S>
    where\n CS: RefUnwindSafe,\n S: RefUnwindSafe,
    ",1,["example_cli::Commands"]],["impl<CS, S> RefUnwindSafe for Args<CS, S>
    where\n CS: RefUnwindSafe,\n S: RefUnwindSafe,
    ",1,["example_cli::Args"]],["impl<CS, S, C> RefUnwindSafe for Init<CS, S, C>
    where\n C: RefUnwindSafe,\n CS: RefUnwindSafe,\n S: RefUnwindSafe,
    ",1,["example_cli::Init"]]], +"example_electrum":[["impl RefUnwindSafe for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl RefUnwindSafe for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl RefUnwindSafe for ScanOptions",1,["example_electrum::ScanOptions"]]], +"example_esplora":[["impl RefUnwindSafe for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl RefUnwindSafe for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl RefUnwindSafe for ScanOptions",1,["example_esplora::ScanOptions"]]], +"wallet_rpc":[["impl RefUnwindSafe for Emission",1,["wallet_rpc::Emission"]],["impl RefUnwindSafe for Args",1,["wallet_rpc::Args"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js new file mode 100644 index 0000000000..3ae2b6dc12 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -0,0 +1,18 @@ +(function() {var implementors = { +"bdk_bitcoind_rpc":[["impl<'c, C> UnwindSafe for Emitter<'c, C>
    where\n C: RefUnwindSafe,
    ",1,["bdk_bitcoind_rpc::Emitter"]],["impl<B> UnwindSafe for BlockEvent<B>
    where\n B: UnwindSafe,
    ",1,["bdk_bitcoind_rpc::BlockEvent"]]], +"bdk_chain":[["impl !UnwindSafe for SyncRequest",1,["bdk_chain::spk_client::SyncRequest"]],["impl UnwindSafe for ConfirmationTime",1,["bdk_chain::chain_data::ConfirmationTime"]],["impl UnwindSafe for ApplyHeaderError",1,["bdk_chain::local_chain::ApplyHeaderError"]],["impl UnwindSafe for CalculateFeeError",1,["bdk_chain::tx_graph::CalculateFeeError"]],["impl UnwindSafe for Balance",1,["bdk_chain::keychain::Balance"]],["impl UnwindSafe for AlterCheckPointError",1,["bdk_chain::local_chain::AlterCheckPointError"]],["impl UnwindSafe for CannotConnectError",1,["bdk_chain::local_chain::CannotConnectError"]],["impl UnwindSafe for CheckPoint",1,["bdk_chain::local_chain::CheckPoint"]],["impl UnwindSafe for CheckPointIter",1,["bdk_chain::local_chain::CheckPointIter"]],["impl UnwindSafe for LocalChain",1,["bdk_chain::local_chain::LocalChain"]],["impl UnwindSafe for MissingGenesisError",1,["bdk_chain::local_chain::MissingGenesisError"]],["impl UnwindSafe for BlockId",1,["bdk_chain::chain_data::BlockId"]],["impl UnwindSafe for ConfirmationHeightAnchor",1,["bdk_chain::chain_data::ConfirmationHeightAnchor"]],["impl UnwindSafe for ConfirmationTimeHeightAnchor",1,["bdk_chain::chain_data::ConfirmationTimeHeightAnchor"]],["impl UnwindSafe for DescriptorId",1,["bdk_chain::descriptor_ext::DescriptorId"]],["impl<'a, T, A> UnwindSafe for CanonicalTx<'a, T, A>
    where\n T: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::CanonicalTx"]],["impl<'a, T, A> UnwindSafe for TxNode<'a, T, A>
    where\n T: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxNode"]],["impl<'g, A, F> UnwindSafe for TxAncestors<'g, A, F>
    where\n F: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxAncestors"]],["impl<'g, A, F> UnwindSafe for TxDescendants<'g, A, F>
    where\n F: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxDescendants"]],["impl<A> UnwindSafe for ChainPosition<A>
    where\n A: UnwindSafe,
    ",1,["bdk_chain::chain_data::ChainPosition"]],["impl<A> UnwindSafe for SyncResult<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::SyncResult"]],["impl<A> UnwindSafe for FullTxOut<A>
    where\n A: UnwindSafe,
    ",1,["bdk_chain::chain_data::FullTxOut"]],["impl<A> UnwindSafe for ChangeSet<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::ChangeSet"]],["impl<A> UnwindSafe for TxGraph<A>
    where\n A: RefUnwindSafe,
    ",1,["bdk_chain::tx_graph::TxGraph"]],["impl<A, I> UnwindSafe for IndexedTxGraph<A, I>
    where\n I: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::IndexedTxGraph"]],["impl<A, IA> UnwindSafe for ChangeSet<A, IA>
    where\n IA: UnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::indexed_tx_graph::ChangeSet"]],["impl<D> UnwindSafe for SpkIterator<D>
    where\n D: UnwindSafe,
    ",1,["bdk_chain::spk_iter::SpkIterator"]],["impl<I> UnwindSafe for SpkTxOutIndex<I>",1,["bdk_chain::spk_txout_index::SpkTxOutIndex"]],["impl<K> !UnwindSafe for FullScanRequest<K>",1,["bdk_chain::spk_client::FullScanRequest"]],["impl<K> UnwindSafe for ChangeSet<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::ChangeSet"]],["impl<K> UnwindSafe for KeychainTxOutIndex<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_chain::keychain::txout_index::KeychainTxOutIndex"]],["impl<K, A> UnwindSafe for FullScanResult<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_chain::spk_client::FullScanResult"]]], +"bdk_coin_select":[["impl UnwindSafe for BnbLimit",1,["bdk_coin_select::bnb::BnbLimit"]],["impl UnwindSafe for BranchStrategy",1,["bdk_coin_select::bnb::BranchStrategy"]],["impl UnwindSafe for ExcessStrategyKind",1,["bdk_coin_select::coin_selector::ExcessStrategyKind"]],["impl UnwindSafe for SelectionConstraint",1,["bdk_coin_select::coin_selector::SelectionConstraint"]],["impl UnwindSafe for CoinSelectorOpt",1,["bdk_coin_select::coin_selector::CoinSelectorOpt"]],["impl UnwindSafe for ExcessStrategy",1,["bdk_coin_select::coin_selector::ExcessStrategy"]],["impl UnwindSafe for Selection",1,["bdk_coin_select::coin_selector::Selection"]],["impl UnwindSafe for SelectionError",1,["bdk_coin_select::coin_selector::SelectionError"]],["impl UnwindSafe for WeightedValue",1,["bdk_coin_select::coin_selector::WeightedValue"]],["impl<'a> UnwindSafe for CoinSelector<'a>",1,["bdk_coin_select::coin_selector::CoinSelector"]],["impl<'c, 'f, S> !UnwindSafe for BnbIter<'c, 'f, S>",1,["bdk_coin_select::bnb::BnbIter"]],["impl<'c, S> UnwindSafe for Bnb<'c, S>
    where\n S: UnwindSafe,
    ",1,["bdk_coin_select::bnb::Bnb"]]], +"bdk_electrum":[["impl UnwindSafe for ElectrumSyncResult",1,["bdk_electrum::electrum_ext::ElectrumSyncResult"]],["impl<K> UnwindSafe for ElectrumFullScanResult<K>
    where\n K: RefUnwindSafe,
    ",1,["bdk_electrum::electrum_ext::ElectrumFullScanResult"]]], +"bdk_file_store":[["impl !UnwindSafe for FileError",1,["bdk_file_store::FileError"]],["impl !UnwindSafe for IterError",1,["bdk_file_store::entry_iter::IterError"]],["impl<'t, T> !UnwindSafe for EntryIter<'t, T>",1,["bdk_file_store::entry_iter::EntryIter"]],["impl<C> !UnwindSafe for AggregateChangesetsError<C>",1,["bdk_file_store::store::AggregateChangesetsError"]],["impl<C> UnwindSafe for Store<C>
    where\n C: UnwindSafe,
    ",1,["bdk_file_store::store::Store"]]], +"bdk_hwi":[["impl UnwindSafe for HWISigner",1,["bdk_hwi::signer::HWISigner"]]], +"bdk_persist":[["impl<C> !UnwindSafe for Persist<C>",1,["bdk_persist::persist::Persist"]],["impl<K, A> UnwindSafe for CombinedChangeSet<K, A>
    where\n K: RefUnwindSafe,\n A: RefUnwindSafe,
    ",1,["bdk_persist::changeset::CombinedChangeSet"]]], +"bdk_sqlite":[["impl !UnwindSafe for Error",1,["bdk_sqlite::Error"]],["impl<K, A> UnwindSafe for Store<K, A>
    where\n K: UnwindSafe,\n A: UnwindSafe,
    ",1,["bdk_sqlite::store::Store"]]], +"bdk_testenv":[["impl !UnwindSafe for TestEnv",1,["bdk_testenv::TestEnv"]]], +"bdk_tmp_plan":[["impl UnwindSafe for SigningError",1,["bdk_tmp_plan::requirements::SigningError"]],["impl UnwindSafe for SatisfactionMaterial",1,["bdk_tmp_plan::SatisfactionMaterial"]],["impl<AK> UnwindSafe for Plan<AK>
    where\n AK: UnwindSafe,
    ",1,["bdk_tmp_plan::Plan"]],["impl<Ak> UnwindSafe for PlanState<Ak>
    where\n Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::PlanState"]],["impl<Ak> UnwindSafe for RequiredSignatures<Ak>
    where\n Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::requirements::RequiredSignatures"]],["impl<Ak> UnwindSafe for PlanKey<Ak>
    where\n Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::template::PlanKey"]],["impl<Ak> UnwindSafe for Requirements<Ak>
    where\n Ak: UnwindSafe,
    ",1,["bdk_tmp_plan::requirements::Requirements"]],["impl<K> UnwindSafe for Assets<K>
    where\n K: UnwindSafe,
    ",1,["bdk_tmp_plan::Assets"]]], +"bdk_wallet":[["impl !UnwindSafe for CreateTxError",1,["bdk_wallet::wallet::error::CreateTxError"]],["impl !UnwindSafe for SignersContainer",1,["bdk_wallet::wallet::signer::SignersContainer"]],["impl !UnwindSafe for Wallet",1,["bdk_wallet::wallet::Wallet"]],["impl UnwindSafe for Error",1,["bdk_wallet::descriptor::error::Error"]],["impl UnwindSafe for PkOrF",1,["bdk_wallet::descriptor::policy::PkOrF"]],["impl UnwindSafe for PolicyError",1,["bdk_wallet::descriptor::policy::PolicyError"]],["impl UnwindSafe for Satisfaction",1,["bdk_wallet::descriptor::policy::Satisfaction"]],["impl UnwindSafe for SatisfiableItem",1,["bdk_wallet::descriptor::policy::SatisfiableItem"]],["impl UnwindSafe for KeychainKind",1,["bdk_wallet::types::KeychainKind"]],["impl UnwindSafe for Utxo",1,["bdk_wallet::types::Utxo"]],["impl UnwindSafe for KeyError",1,["bdk_wallet::keys::KeyError"]],["impl UnwindSafe for ScriptContextEnum",1,["bdk_wallet::keys::ScriptContextEnum"]],["impl UnwindSafe for Error",1,["bdk_wallet::wallet::coin_selection::Error"]],["impl UnwindSafe for Excess",1,["bdk_wallet::wallet::coin_selection::Excess"]],["impl UnwindSafe for ApplyBlockError",1,["bdk_wallet::wallet::ApplyBlockError"]],["impl UnwindSafe for InsertTxError",1,["bdk_wallet::wallet::InsertTxError"]],["impl UnwindSafe for LoadError",1,["bdk_wallet::wallet::LoadError"]],["impl UnwindSafe for NewError",1,["bdk_wallet::wallet::NewError"]],["impl UnwindSafe for NewOrLoadError",1,["bdk_wallet::wallet::NewOrLoadError"]],["impl UnwindSafe for BuildFeeBumpError",1,["bdk_wallet::wallet::error::BuildFeeBumpError"]],["impl UnwindSafe for MiniscriptPsbtError",1,["bdk_wallet::wallet::error::MiniscriptPsbtError"]],["impl UnwindSafe for SignerContext",1,["bdk_wallet::wallet::signer::SignerContext"]],["impl UnwindSafe for SignerError",1,["bdk_wallet::wallet::signer::SignerError"]],["impl UnwindSafe for SignerId",1,["bdk_wallet::wallet::signer::SignerId"]],["impl UnwindSafe for TapLeavesOptions",1,["bdk_wallet::wallet::signer::TapLeavesOptions"]],["impl UnwindSafe for AddForeignUtxoError",1,["bdk_wallet::wallet::tx_builder::AddForeignUtxoError"]],["impl UnwindSafe for AddUtxoError",1,["bdk_wallet::wallet::tx_builder::AddUtxoError"]],["impl UnwindSafe for AllowShrinkingError",1,["bdk_wallet::wallet::tx_builder::AllowShrinkingError"]],["impl UnwindSafe for ChangeSpendPolicy",1,["bdk_wallet::wallet::tx_builder::ChangeSpendPolicy"]],["impl UnwindSafe for TxOrdering",1,["bdk_wallet::wallet::tx_builder::TxOrdering"]],["impl UnwindSafe for Condition",1,["bdk_wallet::descriptor::policy::Condition"]],["impl UnwindSafe for Policy",1,["bdk_wallet::descriptor::policy::Policy"]],["impl UnwindSafe for PrivateKeyGenerateOptions",1,["bdk_wallet::keys::PrivateKeyGenerateOptions"]],["impl UnwindSafe for LocalOutput",1,["bdk_wallet::types::LocalOutput"]],["impl UnwindSafe for WeightedUtxo",1,["bdk_wallet::types::WeightedUtxo"]],["impl UnwindSafe for BranchAndBoundCoinSelection",1,["bdk_wallet::wallet::coin_selection::BranchAndBoundCoinSelection"]],["impl UnwindSafe for CoinSelectionResult",1,["bdk_wallet::wallet::coin_selection::CoinSelectionResult"]],["impl UnwindSafe for LargestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::LargestFirstCoinSelection"]],["impl UnwindSafe for OldestFirstCoinSelection",1,["bdk_wallet::wallet::coin_selection::OldestFirstCoinSelection"]],["impl UnwindSafe for FullyNodedExport",1,["bdk_wallet::wallet::export::FullyNodedExport"]],["impl UnwindSafe for SignOptions",1,["bdk_wallet::wallet::signer::SignOptions"]],["impl UnwindSafe for SignerOrdering",1,["bdk_wallet::wallet::signer::SignerOrdering"]],["impl UnwindSafe for AddressInfo",1,["bdk_wallet::wallet::AddressInfo"]],["impl UnwindSafe for Update",1,["bdk_wallet::wallet::Update"]],["impl UnwindSafe for BumpFee",1,["bdk_wallet::wallet::tx_builder::BumpFee"]],["impl UnwindSafe for CreateTx",1,["bdk_wallet::wallet::tx_builder::CreateTx"]],["impl<'a> UnwindSafe for BuildSatisfaction<'a>",1,["bdk_wallet::descriptor::policy::BuildSatisfaction"]],["impl<'a, Cs, Ctx> !UnwindSafe for TxBuilder<'a, Cs, Ctx>",1,["bdk_wallet::wallet::tx_builder::TxBuilder"]],["impl<Ctx> UnwindSafe for DescriptorKey<Ctx>
    where\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::DescriptorKey"]],["impl<Ctx> UnwindSafe for ExtendedKey<Ctx>
    where\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::ExtendedKey"]],["impl<K> UnwindSafe for Bip44<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44"]],["impl<K> UnwindSafe for Bip44Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip44Public"]],["impl<K> UnwindSafe for Bip49<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49"]],["impl<K> UnwindSafe for Bip49Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip49Public"]],["impl<K> UnwindSafe for Bip84<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84"]],["impl<K> UnwindSafe for Bip84Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip84Public"]],["impl<K> UnwindSafe for Bip86<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86"]],["impl<K> UnwindSafe for Bip86Public<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::Bip86Public"]],["impl<K> UnwindSafe for P2Pkh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Pkh"]],["impl<K> UnwindSafe for P2TR<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2TR"]],["impl<K> UnwindSafe for P2Wpkh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh"]],["impl<K> UnwindSafe for P2Wpkh_P2Sh<K>
    where\n K: UnwindSafe,
    ",1,["bdk_wallet::descriptor::template::P2Wpkh_P2Sh"]],["impl<K, Ctx> UnwindSafe for GeneratedKey<K, Ctx>
    where\n K: UnwindSafe,\n Ctx: UnwindSafe,
    ",1,["bdk_wallet::keys::GeneratedKey"]],["impl<S> UnwindSafe for SignerWrapper<S>
    where\n S: UnwindSafe,
    ",1,["bdk_wallet::wallet::signer::SignerWrapper"]]], +"example_bitcoind_rpc_polling":[["impl UnwindSafe for Emission",1,["example_bitcoind_rpc_polling::Emission"]],["impl UnwindSafe for RpcCommands",1,["example_bitcoind_rpc_polling::RpcCommands"]],["impl UnwindSafe for RpcArgs",1,["example_bitcoind_rpc_polling::RpcArgs"]]], +"example_cli":[["impl UnwindSafe for AddressCmd",1,["example_cli::AddressCmd"]],["impl UnwindSafe for CoinSelectionAlgo",1,["example_cli::CoinSelectionAlgo"]],["impl UnwindSafe for Keychain",1,["example_cli::Keychain"]],["impl UnwindSafe for TxOutCmd",1,["example_cli::TxOutCmd"]],["impl UnwindSafe for CreateTxChange",1,["example_cli::CreateTxChange"]],["impl<CS, S> UnwindSafe for Commands<CS, S>
    where\n CS: UnwindSafe,\n S: UnwindSafe,
    ",1,["example_cli::Commands"]],["impl<CS, S> UnwindSafe for Args<CS, S>
    where\n CS: UnwindSafe,\n S: UnwindSafe,
    ",1,["example_cli::Args"]],["impl<CS, S, C> UnwindSafe for Init<CS, S, C>
    where\n C: UnwindSafe,\n CS: UnwindSafe,\n S: UnwindSafe,
    ",1,["example_cli::Init"]]], +"example_electrum":[["impl UnwindSafe for ElectrumCommands",1,["example_electrum::ElectrumCommands"]],["impl UnwindSafe for ElectrumArgs",1,["example_electrum::ElectrumArgs"]],["impl UnwindSafe for ScanOptions",1,["example_electrum::ScanOptions"]]], +"example_esplora":[["impl UnwindSafe for EsploraCommands",1,["example_esplora::EsploraCommands"]],["impl UnwindSafe for EsploraArgs",1,["example_esplora::EsploraArgs"]],["impl UnwindSafe for ScanOptions",1,["example_esplora::ScanOptions"]]], +"wallet_rpc":[["impl UnwindSafe for Emission",1,["wallet_rpc::Emission"]],["impl UnwindSafe for Args",1,["wallet_rpc::Args"]]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/str/traits/trait.FromStr.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/str/traits/trait.FromStr.js new file mode 100644 index 0000000000..a5a57a000b --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/core/str/traits/trait.FromStr.js @@ -0,0 +1,5 @@ +(function() {var implementors = { +"bdk_chain":[["impl FromStr for DescriptorId"]], +"bdk_wallet":[["impl FromStr for FullyNodedExport"]], +"example_cli":[["impl FromStr for CoinSelectionAlgo"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/miniscript/miniscript/context/trait.ScriptContext.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/miniscript/miniscript/context/trait.ScriptContext.js new file mode 100644 index 0000000000..e69e7865df --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/miniscript/miniscript/context/trait.ScriptContext.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"bdk_wallet":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/de/trait.Deserialize.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/de/trait.Deserialize.js new file mode 100644 index 0000000000..1bf2805228 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/de/trait.Deserialize.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"bdk_chain":[["impl<'de> Deserialize<'de> for ConfirmationTime"],["impl<'de> Deserialize<'de> for Balance"],["impl<'de> Deserialize<'de> for BlockId"],["impl<'de> Deserialize<'de> for ConfirmationHeightAnchor"],["impl<'de> Deserialize<'de> for ConfirmationTimeHeightAnchor"],["impl<'de> Deserialize<'de> for DescriptorId"],["impl<'de, A> Deserialize<'de> for ChangeSet<A>
    where\n A: Ord + Deserialize<'de>,
    "],["impl<'de, A, IA> Deserialize<'de> for ChangeSet<A, IA>
    where\n A: Ord + Deserialize<'de>,\n IA: Deserialize<'de>,
    "],["impl<'de, K> Deserialize<'de> for ChangeSet<K>
    where\n K: Ord + Deserialize<'de>,
    "]], +"bdk_persist":[["impl<'de, K, A> Deserialize<'de> for CombinedChangeSet<K, A>
    where\n A: Ord + Deserialize<'de>,\n K: Ord + Deserialize<'de>,
    "]], +"bdk_wallet":[["impl<'de> Deserialize<'de> for KeychainKind"],["impl<'de> Deserialize<'de> for LocalOutput"],["impl<'de> Deserialize<'de> for FullyNodedExport"]], +"example_cli":[["impl<'de> Deserialize<'de> for Keychain"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/ser/trait.Serialize.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/ser/trait.Serialize.js new file mode 100644 index 0000000000..32a3fff95c --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/trait.impl/serde/ser/trait.Serialize.js @@ -0,0 +1,6 @@ +(function() {var implementors = { +"bdk_chain":[["impl Serialize for ConfirmationTime"],["impl Serialize for Balance"],["impl Serialize for BlockId"],["impl Serialize for ConfirmationHeightAnchor"],["impl Serialize for ConfirmationTimeHeightAnchor"],["impl Serialize for DescriptorId"],["impl<A> Serialize for ChangeSet<A>
    where\n A: Ord + Serialize,
    "],["impl<A, IA> Serialize for ChangeSet<A, IA>
    where\n A: Ord + Serialize,\n IA: Serialize,
    "],["impl<K> Serialize for ChangeSet<K>
    where\n K: Ord + Serialize,
    "]], +"bdk_persist":[["impl<K, A> Serialize for CombinedChangeSet<K, A>
    where\n A: Ord + Serialize,\n K: Ord + Serialize,
    "]], +"bdk_wallet":[["impl Serialize for PkOrF"],["impl Serialize for Satisfaction"],["impl Serialize for SatisfiableItem"],["impl Serialize for KeychainKind"],["impl Serialize for Condition"],["impl Serialize for Policy"],["impl Serialize for LocalOutput"],["impl Serialize for FullyNodedExport"]], +"example_cli":[["impl Serialize for Keychain"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/boxed/struct.Box.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/boxed/struct.Box.js new file mode 100644 index 0000000000..62148fbfc4 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/boxed/struct.Box.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_esplora":[["
    1.64.0 · source§

    impl<T> AsFd for Box<T>
    where\n T: AsFd + ?Sized,

    source§

    fn as_fd(&self) -> BorrowedFd<'_>

    Borrows the file descriptor. Read more
    ","AsFd","bdk_esplora::blocking_ext::Error"],["
    1.5.0 · source§

    impl<T, A> AsMut<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

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

    Converts this type into a mutable reference of the (usually inferred) input type.
    ","AsMut","bdk_esplora::blocking_ext::Error"],["
    1.63.0 · source§

    impl<T> AsRawFd for Box<T>
    where\n T: AsRawFd,

    source§

    fn as_raw_fd(&self) -> i32

    Extracts the raw file descriptor. Read more
    ","AsRawFd","bdk_esplora::blocking_ext::Error"],["
    1.5.0 · source§

    impl<T, A> AsRef<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn as_ref(&self) -> &T

    Converts this type into a shared reference of the (usually inferred) input type.
    ","AsRef","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncBufRead for Box<T>
    where\n T: AsyncBufRead + Unpin + ?Sized,

    §

    fn poll_fill_buf(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<&[u8], Error>>

    Attempt to return the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    §

    fn consume(self: Pin<&mut Box<T>>, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to poll_read. Read more
    ","AsyncBufRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncBufRead for Box<T>
    where\n T: AsyncBufRead + Unpin + ?Sized,

    §

    fn poll_fill_buf(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<&[u8], Error>>

    Attempts to return the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    §

    fn consume(self: Pin<&mut Box<T>>, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to poll_read. Read more
    ","AsyncBufRead","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFn<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFn<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn async_call(\n &self,\n args: Args\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFn, returning a future which may borrow from the called closure.
    ","AsyncFn","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFnMut<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFnMut<Args> + ?Sized,\n A: Allocator,

    §

    type CallRefFuture<'a> = <F as AsyncFnMut<Args>>::CallRefFuture<'a>\nwhere\n Box<F, A>: 'a

    🔬This is a nightly-only experimental API. (async_fn_traits)
    source§

    extern "rust-call" fn async_call_mut(\n &mut self,\n args: Args\n) -> <Box<F, A> as AsyncFnMut<Args>>::CallRefFuture<'_>

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFnMut, returning a future which may borrow from the called closure.
    ","AsyncFnMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<Args, F, A> AsyncFnOnce<Args> for Box<F, A>
    where\n Args: Tuple,\n F: AsyncFnOnce<Args> + ?Sized,\n A: Allocator,

    §

    type Output = <F as AsyncFnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Output type of the called closure’s future.
    §

    type CallOnceFuture = <F as AsyncFnOnce<Args>>::CallOnceFuture

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Future returned by AsyncFnOnce::async_call_once.
    source§

    extern "rust-call" fn async_call_once(\n self,\n args: Args\n) -> <Box<F, A> as AsyncFnOnce<Args>>::CallOnceFuture

    🔬This is a nightly-only experimental API. (async_fn_traits)
    Call the AsyncFnOnce, returning a future which may move out of the called closure.
    ","AsyncFnOnce","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<S> AsyncIterator for Box<S>
    where\n S: AsyncIterator + Unpin + ?Sized,

    §

    type Item = <S as AsyncIterator>::Item

    🔬This is a nightly-only experimental API. (async_iterator)
    The type of items yielded by the async iterator.
    source§

    fn poll_next(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Option<<Box<S> as AsyncIterator>::Item>>

    🔬This is a nightly-only experimental API. (async_iterator)
    Attempt to pull out the next value of this async iterator, registering the\ncurrent task for wakeup if the value is not yet available, and returning\nNone if the async iterator is exhausted. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    🔬This is a nightly-only experimental API. (async_iterator)
    Returns the bounds on the remaining length of the async iterator. Read more
    ","AsyncIterator","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncRead for Box<T>
    where\n T: AsyncRead + Unpin + ?Sized,

    §

    fn poll_read(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &mut ReadBuf<'_>\n) -> Poll<Result<(), Error>>

    Attempts to read from the AsyncRead into buf. Read more
    ","AsyncRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncRead for Box<T>
    where\n T: AsyncRead + Unpin + ?Sized,

    §

    fn poll_read(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &mut [u8]\n) -> Poll<Result<usize, Error>>

    Attempt to read from the AsyncRead into buf. Read more
    §

    fn poll_read_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &mut [IoSliceMut<'_>]\n) -> Poll<Result<usize, Error>>

    Attempt to read from the AsyncRead into bufs using vectored\nIO operations. Read more
    ","AsyncRead","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncSeek for Box<T>
    where\n T: AsyncSeek + Unpin + ?Sized,

    §

    fn poll_seek(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n pos: SeekFrom\n) -> Poll<Result<u64, Error>>

    Attempt to seek to an offset, in bytes, in a stream. Read more
    ","AsyncSeek","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncSeek for Box<T>
    where\n T: AsyncSeek + Unpin + ?Sized,

    §

    fn start_seek(self: Pin<&mut Box<T>>, pos: SeekFrom) -> Result<(), Error>

    Attempts to seek to an offset, in bytes, in a stream. Read more
    §

    fn poll_complete(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<u64, Error>>

    Waits for a seek operation to complete. Read more
    ","AsyncSeek","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncWrite for Box<T>
    where\n T: AsyncWrite + Unpin + ?Sized,

    §

    fn poll_write(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &[u8]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from buf into the object. Read more
    §

    fn poll_write_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &[IoSlice<'_>]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from bufs into the object using vectored\nIO operations. Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempt to flush the object, ensuring that any buffered data reach\ntheir destination. Read more
    §

    fn poll_close(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempt to close the object. Read more
    ","AsyncWrite","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> AsyncWrite for Box<T>
    where\n T: AsyncWrite + Unpin + ?Sized,

    §

    fn poll_write(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n buf: &[u8]\n) -> Poll<Result<usize, Error>>

    Attempt to write bytes from buf into the object. Read more
    §

    fn poll_write_vectored(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>,\n bufs: &[IoSlice<'_>]\n) -> Poll<Result<usize, Error>>

    Like poll_write, except that it writes from a slice of buffers. Read more
    §

    fn is_write_vectored(&self) -> bool

    Determines if this writer has an efficient poll_write_vectored\nimplementation. Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Attempts to flush the object, ensuring that any buffered data reach\ntheir destination. Read more
    §

    fn poll_shutdown(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), Error>>

    Initiates or attempts to shut down this writer, returning success when\nthe I/O connection has completely shut down. Read more
    ","AsyncWrite","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Body for Box<T>
    where\n T: Body + Unpin + ?Sized,

    §

    type Data = <T as Body>::Data

    Values yielded by the Body.
    §

    type Error = <T as Body>::Error

    The error type this Body might generate.
    source§

    fn poll_data(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Option<Result<<Box<T> as Body>::Data, <Box<T> as Body>::Error>>>

    Attempt to pull out the next data buffer of this stream.
    source§

    fn poll_trailers(\n self: Pin<&mut Box<T>>,\n cx: &mut Context<'_>\n) -> Poll<Result<Option<HeaderMap>, <Box<T> as Body>::Error>>

    Poll for an optional single HeaderMap of trailers. Read more
    source§

    fn is_end_stream(&self) -> bool

    Returns true when the end of stream has been reached. Read more
    source§

    fn size_hint(&self) -> SizeHint

    Returns the bounds on the remaining length of the stream. Read more
    source§

    fn data(&mut self) -> Data<'_, Self>
    where\n Self: Sized + Unpin,

    Returns future that resolves to next data chunk, if any.
    source§

    fn trailers(&mut self) -> Trailers<'_, Self>
    where\n Self: Sized + Unpin,

    Returns future that resolves to trailers, if any.
    source§

    fn map_data<F, B>(self, f: F) -> MapData<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Data) -> B,\n B: Buf,

    Maps this body’s data value to a different value.
    source§

    fn map_err<F, E>(self, f: F) -> MapErr<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Error) -> E,

    Maps this body’s error value to a different value.
    source§

    fn collect(self) -> Collect<Self>
    where\n Self: Sized,

    Turn this body into Collected body which will collect all the DATA frames\nand trailers.
    ","Body","bdk_esplora::blocking_ext::Error"],["
    1.1.0 · source§

    impl<T, A> Borrow<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    ","Borrow","bdk_esplora::blocking_ext::Error"],["
    1.1.0 · source§

    impl<T, A> BorrowMut<T> for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

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

    Mutably borrows from an owned value. Read more
    ","BorrowMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Box<T>

    1.0.0 · source

    pub fn new(x: T) -> Box<T>

    Allocates memory on the heap and then places x into it.

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    let five = Box::new(5);
    \n
    source

    pub fn new_uninit() -> Box<MaybeUninit<T>>

    🔬This is a nightly-only experimental API. (new_uninit)

    Constructs a new box with uninitialized contents.

    \n
    §Examples
    \n
    #![feature(new_uninit)]\n\nlet mut five = Box::<u32>::new_uninit();\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
    \n
    source

    pub fn new_zeroed() -> Box<MaybeUninit<T>>

    🔬This is a nightly-only experimental API. (new_uninit)

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes.

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(new_uninit)]\n\nlet zero = Box::<u32>::new_zeroed();\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
    \n
    1.33.0 · source

    pub fn pin(x: T) -> Pin<Box<T>>

    Constructs a new Pin<Box<T>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

    \n

    Constructing and pinning of the Box can also be done in two steps: Box::pin(x)\ndoes the same as Box::into_pin(Box::new(x)). Consider using\ninto_pin if you already have a Box<T>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new.

    \n
    source

    pub fn try_new(x: T) -> Result<Box<T>, AllocError>

    🔬This is a nightly-only experimental API. (allocator_api)

    Allocates memory on the heap then places x into it,\nreturning an error if the allocation fails

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nlet five = Box::try_new(5)?;
    \n
    source

    pub fn try_new_uninit() -> Result<Box<MaybeUninit<T>>, AllocError>

    🔬This is a nightly-only experimental API. (allocator_api)

    Constructs a new box with uninitialized contents on the heap,\nreturning an error if the allocation fails

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nlet mut five = Box::<u32>::try_new_uninit()?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
    \n
    source

    pub fn try_new_zeroed() -> Result<Box<MaybeUninit<T>>, AllocError>

    🔬This is a nightly-only experimental API. (allocator_api)

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes on the heap

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nlet zero = Box::<u32>::try_new_zeroed()?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Box<T>
    where\n T: ?Sized,

    1.4.0 · source

    pub unsafe fn from_raw(raw: *mut T) -> Box<T>

    Constructs a box from a raw pointer.

    \n

    After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

    \n
    §Safety
    \n

    This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

    \n

    The safety conditions are described in the memory layout section.

    \n
    §Examples
    \n

    Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw:

    \n\n
    let x = Box::new(5);\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
    \n

    Manually create a Box from scratch by using the global allocator:

    \n\n
    use std::alloc::{alloc, Layout};\n\nunsafe {\n    let ptr = alloc(Layout::new::<i32>()) as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw(ptr);\n}
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> Box<T, A>
    where\n A: Allocator,

    source

    pub fn new_in(x: T, alloc: A) -> Box<T, A>
    where\n A: Allocator,

    🔬This is a nightly-only experimental API. (allocator_api)

    Allocates memory in the given allocator then places x into it.

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::new_in(5, System);
    \n
    source

    pub fn try_new_in(x: T, alloc: A) -> Result<Box<T, A>, AllocError>
    where\n A: Allocator,

    🔬This is a nightly-only experimental API. (allocator_api)

    Allocates memory in the given allocator then places x into it,\nreturning an error if the allocation fails

    \n

    This doesn’t actually allocate if T is zero-sized.

    \n
    §Examples
    \n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet five = Box::try_new_in(5, System)?;
    \n
    source

    pub fn new_uninit_in(alloc: A) -> Box<MaybeUninit<T>, A>
    where\n A: Allocator,

    🔬This is a nightly-only experimental API. (allocator_api)

    Constructs a new box with uninitialized contents in the provided allocator.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::new_uninit_in(System);\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5)
    \n
    source

    pub fn try_new_uninit_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
    where\n A: Allocator,

    🔬This is a nightly-only experimental API. (allocator_api)

    Constructs a new box with uninitialized contents in the provided allocator,\nreturning an error if the allocation fails

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet mut five = Box::<u32, _>::try_new_uninit_in(System)?;\n\nlet five = unsafe {\n    // Deferred initialization:\n    five.as_mut_ptr().write(5);\n\n    five.assume_init()\n};\n\nassert_eq!(*five, 5);
    \n
    source

    pub fn new_zeroed_in(alloc: A) -> Box<MaybeUninit<T>, A>
    where\n A: Allocator,

    🔬This is a nightly-only experimental API. (allocator_api)

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator.

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::new_zeroed_in(System);\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0)
    \n
    source

    pub fn try_new_zeroed_in(alloc: A) -> Result<Box<MaybeUninit<T>, A>, AllocError>
    where\n A: Allocator,

    🔬This is a nightly-only experimental API. (allocator_api)

    Constructs a new Box with uninitialized contents, with the memory\nbeing filled with 0 bytes in the provided allocator,\nreturning an error if the allocation fails,

    \n

    See MaybeUninit::zeroed for examples of correct and incorrect usage\nof this method.

    \n
    §Examples
    \n
    #![feature(allocator_api, new_uninit)]\n\nuse std::alloc::System;\n\nlet zero = Box::<u32, _>::try_new_zeroed_in(System)?;\nlet zero = unsafe { zero.assume_init() };\n\nassert_eq!(*zero, 0);
    \n
    source

    pub fn pin_in(x: T, alloc: A) -> Pin<Box<T, A>>
    where\n A: 'static + Allocator,

    🔬This is a nightly-only experimental API. (allocator_api)

    Constructs a new Pin<Box<T, A>>. If T does not implement Unpin, then\nx will be pinned in memory and unable to be moved.

    \n

    Constructing and pinning of the Box can also be done in two steps: Box::pin_in(x, alloc)\ndoes the same as Box::into_pin(Box::new_in(x, alloc)). Consider using\ninto_pin if you already have a Box<T, A>, or if you want to\nconstruct a (pinned) Box in a different way than with Box::new_in.

    \n
    source

    pub fn into_boxed_slice(boxed: Box<T, A>) -> Box<[T], A>

    🔬This is a nightly-only experimental API. (box_into_boxed_slice)

    Converts a Box<T> into a Box<[T]>

    \n

    This conversion does not allocate on the heap and happens in place.

    \n
    source

    pub fn into_inner(boxed: Box<T, A>) -> T

    🔬This is a nightly-only experimental API. (box_into_inner)

    Consumes the Box, returning the wrapped value.

    \n
    §Examples
    \n
    #![feature(box_into_inner)]\n\nlet c = Box::new(5);\n\nassert_eq!(Box::into_inner(c), 5);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    const: unstable · source

    pub unsafe fn from_raw_in(raw: *mut T, alloc: A) -> Box<T, A>

    🔬This is a nightly-only experimental API. (allocator_api)

    Constructs a box from a raw pointer in the given allocator.

    \n

    After calling this function, the raw pointer is owned by the\nresulting Box. Specifically, the Box destructor will call\nthe destructor of T and free the allocated memory. For this\nto be safe, the memory must have been allocated in accordance\nwith the memory layout used by Box .

    \n
    §Safety
    \n

    This function is unsafe because improper use may lead to\nmemory problems. For example, a double-free may occur if the\nfunction is called twice on the same raw pointer.

    \n
    §Examples
    \n

    Recreate a Box which was previously converted to a raw pointer\nusing Box::into_raw_with_allocator:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(5, System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
    \n

    Manually create a Box from scratch by using the system allocator:

    \n\n
    #![feature(allocator_api, slice_ptr_get)]\n\nuse std::alloc::{Allocator, Layout, System};\n\nunsafe {\n    let ptr = System.allocate(Layout::new::<i32>())?.as_mut_ptr() as *mut i32;\n    // In general .write is required to avoid attempting to destruct\n    // the (uninitialized) previous contents of `ptr`, though for this\n    // simple example `*ptr = 5` would have worked as well.\n    ptr.write(5);\n    let x = Box::from_raw_in(ptr, System);\n}
    \n
    1.4.0 · source

    pub fn into_raw(b: Box<T, A>) -> *mut T

    Consumes the Box, returning a wrapped raw pointer.

    \n

    The pointer will be properly aligned and non-null.

    \n

    After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw function, allowing the Box destructor to perform\nthe cleanup.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::into_raw(b) instead of b.into_raw(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Converting the raw pointer back into a Box with Box::from_raw\nfor automatic cleanup:

    \n\n
    let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nlet x = unsafe { Box::from_raw(ptr) };
    \n

    Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

    \n\n
    use std::alloc::{dealloc, Layout};\nuse std::ptr;\n\nlet x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    dealloc(ptr as *mut u8, Layout::new::<String>());\n}
    \n

    Note: This is equivalent to the following:

    \n\n
    let x = Box::new(String::from(\"Hello\"));\nlet ptr = Box::into_raw(x);\nunsafe {\n    drop(Box::from_raw(ptr));\n}
    \n
    source

    pub fn into_raw_with_allocator(b: Box<T, A>) -> (*mut T, A)

    🔬This is a nightly-only experimental API. (allocator_api)

    Consumes the Box, returning a wrapped raw pointer and the allocator.

    \n

    The pointer will be properly aligned and non-null.

    \n

    After calling this function, the caller is responsible for the\nmemory previously managed by the Box. In particular, the\ncaller should properly destroy T and release the memory, taking\ninto account the memory layout used by Box. The easiest way to\ndo this is to convert the raw pointer back into a Box with the\nBox::from_raw_in function, allowing the Box destructor to perform\nthe cleanup.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::into_raw_with_allocator(b) instead of b.into_raw_with_allocator(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Converting the raw pointer back into a Box with Box::from_raw_in\nfor automatic cleanup:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::System;\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nlet x = unsafe { Box::from_raw_in(ptr, alloc) };
    \n

    Manual cleanup by explicitly running the destructor and deallocating\nthe memory:

    \n\n
    #![feature(allocator_api)]\n\nuse std::alloc::{Allocator, Layout, System};\nuse std::ptr::{self, NonNull};\n\nlet x = Box::new_in(String::from(\"Hello\"), System);\nlet (ptr, alloc) = Box::into_raw_with_allocator(x);\nunsafe {\n    ptr::drop_in_place(ptr);\n    let non_null = NonNull::new_unchecked(ptr);\n    alloc.deallocate(non_null.cast(), Layout::new::<String>());\n}
    \n
    const: unstable · source

    pub fn allocator(b: &Box<T, A>) -> &A

    🔬This is a nightly-only experimental API. (allocator_api)

    Returns a reference to the underlying allocator.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::allocator(&b) instead of b.allocator(). This\nis so that there is no conflict with a method on the inner type.

    \n
    1.26.0 · source

    pub fn leak<'a>(b: Box<T, A>) -> &'a mut T
    where\n A: 'a,

    Consumes and leaks the Box, returning a mutable reference,\n&'a mut T. Note that the type T must outlive the chosen lifetime\n'a. If the type has only static references, or none at all, then this\nmay be chosen to be 'static.

    \n

    This function is mainly useful for data that lives for the remainder of\nthe program’s life. Dropping the returned reference will cause a memory\nleak. If this is not acceptable, the reference should first be wrapped\nwith the Box::from_raw function producing a Box. This Box can\nthen be dropped which will properly destroy T and release the\nallocated memory.

    \n

    Note: this is an associated function, which means that you have\nto call it as Box::leak(b) instead of b.leak(). This\nis so that there is no conflict with a method on the inner type.

    \n
    §Examples
    \n

    Simple usage:

    \n\n
    let x = Box::new(41);\nlet static_ref: &'static mut usize = Box::leak(x);\n*static_ref += 1;\nassert_eq!(*static_ref, 42);
    \n

    Unsized data:

    \n\n
    let x = vec![1, 2, 3].into_boxed_slice();\nlet static_ref = Box::leak(x);\nstatic_ref[0] = 4;\nassert_eq!(*static_ref, [4, 2, 3]);
    \n
    1.63.0 (const: unstable) · source

    pub fn into_pin(boxed: Box<T, A>) -> Pin<Box<T, A>>
    where\n A: 'static,

    Converts a Box<T> into a Pin<Box<T>>. If T does not implement Unpin, then\n*boxed will be pinned in memory and unable to be moved.

    \n

    This conversion does not allocate on the heap and happens in place.

    \n

    This is also available via From.

    \n

    Constructing and pinning a Box with Box::into_pin(Box::new(x))\ncan also be written more concisely using Box::pin(x).\nThis into_pin method is useful if you already have a Box<T>, or you are\nconstructing a (pinned) Box in a different way than with Box::new.

    \n
    §Notes
    \n

    It’s not recommended that crates add an impl like From<Box<T>> for Pin<T>,\nas it’ll introduce an ambiguity when calling Pin::from.\nA demonstration of such a poor impl is shown below.

    \n\n
    ⓘ
    struct Foo; // A type defined in this crate.\nimpl From<Box<()>> for Pin<Foo> {\n    fn from(_: Box<()>) -> Pin<Foo> {\n        Pin::new(Foo)\n    }\n}\n\nlet foo = Box::new(());\nlet bar = Pin::from(foo);
    \n
    ",0,"bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Buf for Box<T>
    where\n T: Buf + ?Sized,

    §

    fn remaining(&self) -> usize

    Returns the number of bytes between the current position and the end of\nthe buffer. Read more
    §

    fn chunk(&self) -> &[u8] ⓘ

    Returns a slice starting at the current position and of length between 0\nand Buf::remaining(). Note that this can return shorter slice (this allows\nnon-continuous internal representation). Read more
    §

    fn chunks_vectored<'b>(&'b self, dst: &mut [IoSlice<'b>]) -> usize

    Fills dst with potentially multiple slices starting at self’s\ncurrent position. Read more
    §

    fn advance(&mut self, cnt: usize)

    Advance the internal cursor of the Buf Read more
    §

    fn has_remaining(&self) -> bool

    Returns true if there are any more bytes to consume Read more
    §

    fn copy_to_slice(&mut self, dst: &mut [u8])

    Copies bytes from self into dst. Read more
    §

    fn get_u8(&mut self) -> u8

    Gets an unsigned 8 bit integer from self. Read more
    §

    fn get_i8(&mut self) -> i8

    Gets a signed 8 bit integer from self. Read more
    §

    fn get_u16(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in big-endian byte order. Read more
    §

    fn get_u16_le(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in little-endian byte order. Read more
    §

    fn get_u16_ne(&mut self) -> u16

    Gets an unsigned 16 bit integer from self in native-endian byte order. Read more
    §

    fn get_i16(&mut self) -> i16

    Gets a signed 16 bit integer from self in big-endian byte order. Read more
    §

    fn get_i16_le(&mut self) -> i16

    Gets a signed 16 bit integer from self in little-endian byte order. Read more
    §

    fn get_i16_ne(&mut self) -> i16

    Gets a signed 16 bit integer from self in native-endian byte order. Read more
    §

    fn get_u32(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in the big-endian byte order. Read more
    §

    fn get_u32_le(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in the little-endian byte order. Read more
    §

    fn get_u32_ne(&mut self) -> u32

    Gets an unsigned 32 bit integer from self in native-endian byte order. Read more
    §

    fn get_i32(&mut self) -> i32

    Gets a signed 32 bit integer from self in big-endian byte order. Read more
    §

    fn get_i32_le(&mut self) -> i32

    Gets a signed 32 bit integer from self in little-endian byte order. Read more
    §

    fn get_i32_ne(&mut self) -> i32

    Gets a signed 32 bit integer from self in native-endian byte order. Read more
    §

    fn get_u64(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in big-endian byte order. Read more
    §

    fn get_u64_le(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in little-endian byte order. Read more
    §

    fn get_u64_ne(&mut self) -> u64

    Gets an unsigned 64 bit integer from self in native-endian byte order. Read more
    §

    fn get_i64(&mut self) -> i64

    Gets a signed 64 bit integer from self in big-endian byte order. Read more
    §

    fn get_i64_le(&mut self) -> i64

    Gets a signed 64 bit integer from self in little-endian byte order. Read more
    §

    fn get_i64_ne(&mut self) -> i64

    Gets a signed 64 bit integer from self in native-endian byte order. Read more
    §

    fn get_uint(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in big-endian byte order. Read more
    §

    fn get_uint_le(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in little-endian byte order. Read more
    §

    fn get_uint_ne(&mut self, nbytes: usize) -> u64

    Gets an unsigned n-byte integer from self in native-endian byte order. Read more
    §

    fn get_int(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in big-endian byte order. Read more
    §

    fn get_int_le(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in little-endian byte order. Read more
    §

    fn get_int_ne(&mut self, nbytes: usize) -> i64

    Gets a signed n-byte integer from self in native-endian byte order. Read more
    §

    fn copy_to_bytes(&mut self, len: usize) -> Bytes

    Consumes len bytes inside self and returns new instance of Bytes\nwith this data. Read more
    §

    fn get_u128(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in big-endian byte order. Read more
    §

    fn get_u128_le(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in little-endian byte order. Read more
    §

    fn get_u128_ne(&mut self) -> u128

    Gets an unsigned 128 bit integer from self in native-endian byte order. Read more
    §

    fn get_i128(&mut self) -> i128

    Gets a signed 128 bit integer from self in big-endian byte order. Read more
    §

    fn get_i128_le(&mut self) -> i128

    Gets a signed 128 bit integer from self in little-endian byte order. Read more
    §

    fn get_i128_ne(&mut self) -> i128

    Gets a signed 128 bit integer from self in native-endian byte order. Read more
    §

    fn get_f32(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in big-endian byte order. Read more
    §

    fn get_f32_le(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in little-endian byte order. Read more
    §

    fn get_f32_ne(&mut self) -> f32

    Gets an IEEE754 single-precision (4 bytes) floating point number from\nself in native-endian byte order. Read more
    §

    fn get_f64(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in big-endian byte order. Read more
    §

    fn get_f64_le(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in little-endian byte order. Read more
    §

    fn get_f64_ne(&mut self) -> f64

    Gets an IEEE754 double-precision (8 bytes) floating point number from\nself in native-endian byte order. Read more
    §

    fn take(self, limit: usize) -> Take<Self>
    where\n Self: Sized,

    Creates an adaptor which will read at most limit bytes from self. Read more
    §

    fn chain<U>(self, next: U) -> Chain<Self, U>
    where\n U: Buf,\n Self: Sized,

    Creates an adaptor which will chain this buffer with another. Read more
    §

    fn reader(self) -> Reader<Self>
    where\n Self: Sized,

    Creates an adaptor which implements the Read trait for self. Read more
    ","Buf","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> BufMut for Box<T>
    where\n T: BufMut + ?Sized,

    §

    fn remaining_mut(&self) -> usize

    Returns the number of bytes that can be written from the current\nposition until the end of the buffer is reached. Read more
    §

    fn chunk_mut(&mut self) -> &mut UninitSlice

    Returns a mutable slice starting at the current BufMut position and of\nlength between 0 and BufMut::remaining_mut(). Note that this can be shorter than the\nwhole remainder of the buffer (this allows non-continuous implementation). Read more
    §

    unsafe fn advance_mut(&mut self, cnt: usize)

    Advance the internal cursor of the BufMut Read more
    §

    fn put_slice(&mut self, src: &[u8])

    Transfer bytes into self from src and advance the cursor by the\nnumber of bytes written. Read more
    §

    fn put_u8(&mut self, n: u8)

    Writes an unsigned 8 bit integer to self. Read more
    §

    fn put_i8(&mut self, n: i8)

    Writes a signed 8 bit integer to self. Read more
    §

    fn put_u16(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in big-endian byte order. Read more
    §

    fn put_u16_le(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in little-endian byte order. Read more
    §

    fn put_u16_ne(&mut self, n: u16)

    Writes an unsigned 16 bit integer to self in native-endian byte order. Read more
    §

    fn put_i16(&mut self, n: i16)

    Writes a signed 16 bit integer to self in big-endian byte order. Read more
    §

    fn put_i16_le(&mut self, n: i16)

    Writes a signed 16 bit integer to self in little-endian byte order. Read more
    §

    fn put_i16_ne(&mut self, n: i16)

    Writes a signed 16 bit integer to self in native-endian byte order. Read more
    §

    fn put_u32(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in big-endian byte order. Read more
    §

    fn put_u32_le(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in little-endian byte order. Read more
    §

    fn put_u32_ne(&mut self, n: u32)

    Writes an unsigned 32 bit integer to self in native-endian byte order. Read more
    §

    fn put_i32(&mut self, n: i32)

    Writes a signed 32 bit integer to self in big-endian byte order. Read more
    §

    fn put_i32_le(&mut self, n: i32)

    Writes a signed 32 bit integer to self in little-endian byte order. Read more
    §

    fn put_i32_ne(&mut self, n: i32)

    Writes a signed 32 bit integer to self in native-endian byte order. Read more
    §

    fn put_u64(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in the big-endian byte order. Read more
    §

    fn put_u64_le(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in little-endian byte order. Read more
    §

    fn put_u64_ne(&mut self, n: u64)

    Writes an unsigned 64 bit integer to self in native-endian byte order. Read more
    §

    fn put_i64(&mut self, n: i64)

    Writes a signed 64 bit integer to self in the big-endian byte order. Read more
    §

    fn put_i64_le(&mut self, n: i64)

    Writes a signed 64 bit integer to self in little-endian byte order. Read more
    §

    fn put_i64_ne(&mut self, n: i64)

    Writes a signed 64 bit integer to self in native-endian byte order. Read more
    §

    fn has_remaining_mut(&self) -> bool

    Returns true if there is space in self for more bytes. Read more
    §

    fn put<T>(&mut self, src: T)
    where\n T: Buf,\n Self: Sized,

    Transfer bytes into self from src and advance the cursor by the\nnumber of bytes written. Read more
    §

    fn put_bytes(&mut self, val: u8, cnt: usize)

    Put cnt bytes val into self. Read more
    §

    fn put_u128(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in the big-endian byte order. Read more
    §

    fn put_u128_le(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in little-endian byte order. Read more
    §

    fn put_u128_ne(&mut self, n: u128)

    Writes an unsigned 128 bit integer to self in native-endian byte order. Read more
    §

    fn put_i128(&mut self, n: i128)

    Writes a signed 128 bit integer to self in the big-endian byte order. Read more
    §

    fn put_i128_le(&mut self, n: i128)

    Writes a signed 128 bit integer to self in little-endian byte order. Read more
    §

    fn put_i128_ne(&mut self, n: i128)

    Writes a signed 128 bit integer to self in native-endian byte order. Read more
    §

    fn put_uint(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in big-endian byte order. Read more
    §

    fn put_uint_le(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in the little-endian byte order. Read more
    §

    fn put_uint_ne(&mut self, n: u64, nbytes: usize)

    Writes an unsigned n-byte integer to self in the native-endian byte order. Read more
    §

    fn put_int(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in big-endian byte order. Read more
    §

    fn put_int_le(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in little-endian byte order. Read more
    §

    fn put_int_ne(&mut self, n: i64, nbytes: usize)

    Writes low nbytes of a signed integer to self in native-endian byte order. Read more
    §

    fn put_f32(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in big-endian byte order. Read more
    §

    fn put_f32_le(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in little-endian byte order. Read more
    §

    fn put_f32_ne(&mut self, n: f32)

    Writes an IEEE754 single-precision (4 bytes) floating point number to\nself in native-endian byte order. Read more
    §

    fn put_f64(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in big-endian byte order. Read more
    §

    fn put_f64_le(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in little-endian byte order. Read more
    §

    fn put_f64_ne(&mut self, n: f64)

    Writes an IEEE754 double-precision (8 bytes) floating point number to\nself in native-endian byte order. Read more
    §

    fn limit(self, limit: usize) -> Limit<Self>
    where\n Self: Sized,

    Creates an adaptor which can write at most limit bytes to self. Read more
    §

    fn writer(self) -> Writer<Self>
    where\n Self: Sized,

    Creates an adaptor which implements the Write trait for self. Read more
    §

    fn chain_mut<U>(self, next: U) -> Chain<Self, U>
    where\n U: BufMut,\n Self: Sized,

    Creates an adapter which will chain this buffer with another. Read more
    ","BufMut","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<B> BufRead for Box<B>
    where\n B: BufRead + ?Sized,

    source§

    fn fill_buf(&mut self) -> Result<&[u8], Error>

    Returns the contents of the internal buffer, filling it with more data\nfrom the inner reader if it is empty. Read more
    source§

    fn consume(&mut self, amt: usize)

    Tells this buffer that amt bytes have been consumed from the buffer,\nso they should no longer be returned in calls to read. Read more
    source§

    fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize, Error>

    Read all bytes into buf until the delimiter byte or EOF is reached. Read more
    source§

    fn read_line(&mut self, buf: &mut String) -> Result<usize, Error>

    Read all bytes until a newline (the 0xA byte) is reached, and append\nthem to the provided String buffer. Read more
    source§

    fn has_data_left(&mut self) -> Result<bool, Error>

    🔬This is a nightly-only experimental API. (buf_read_has_data_left)
    Check if the underlying Read has any data left to be read. Read more
    source§

    fn skip_until(&mut self, byte: u8) -> Result<usize, Error>

    🔬This is a nightly-only experimental API. (bufread_skip_until)
    Skip all bytes until the delimiter byte or EOF is reached. Read more
    1.0.0 · source§

    fn split(self, byte: u8) -> Split<Self>
    where\n Self: Sized,

    Returns an iterator over the contents of this reader split on the byte\nbyte. Read more
    1.0.0 · source§

    fn lines(self) -> Lines<Self>
    where\n Self: Sized,

    Returns an iterator over the lines of this reader. Read more
    ","BufRead","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Clone for Box<T, A>
    where\n T: Clone,\n A: Allocator + Clone,

    source§

    fn clone(&self) -> Box<T, A>

    Returns a new box with a clone() of this box’s contents.

    \n
    §Examples
    \n
    let x = Box::new(5);\nlet y = x.clone();\n\n// The value is the same\nassert_eq!(x, y);\n\n// But they are unique objects\nassert_ne!(&*x as *const i32, &*y as *const i32);
    \n
    source§

    fn clone_from(&mut self, source: &Box<T, A>)

    Copies source’s contents into self without creating a new allocation.

    \n
    §Examples
    \n
    let x = Box::new(5);\nlet mut y = Box::new(10);\nlet yp: *const i32 = &*y;\n\ny.clone_from(&x);\n\n// The value is the same\nassert_eq!(x, y);\n\n// And no allocation occurred\nassert_eq!(yp, &*y);
    \n
    ","Clone","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<G, R, A> Coroutine<R> for Box<G, A>
    where\n G: Coroutine<R> + Unpin + ?Sized,\n A: Allocator,

    §

    type Yield = <G as Coroutine<R>>::Yield

    🔬This is a nightly-only experimental API. (coroutine_trait)
    The type of value this coroutine yields. Read more
    §

    type Return = <G as Coroutine<R>>::Return

    🔬This is a nightly-only experimental API. (coroutine_trait)
    The type of value this coroutine returns. Read more
    source§

    fn resume(\n self: Pin<&mut Box<G, A>>,\n arg: R\n) -> CoroutineState<<Box<G, A> as Coroutine<R>>::Yield, <Box<G, A> as Coroutine<R>>::Return>

    🔬This is a nightly-only experimental API. (coroutine_trait)
    Resumes the execution of this coroutine. Read more
    ","Coroutine","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Debug for Box<T, A>
    where\n T: Debug + ?Sized,\n A: Allocator,

    source§

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

    Formats the value using the given formatter. Read more
    ","Debug","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T> Default for Box<T>
    where\n T: Default,

    source§

    fn default() -> Box<T>

    Creates a Box<T>, with the Default value for T.

    \n
    ","Default","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Deref for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    §

    type Target = T

    The resulting type after dereferencing.
    source§

    fn deref(&self) -> &T

    Dereferences the value.
    ","Deref","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> DerefMut for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

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

    Mutably dereferences the value.
    ","DerefMut","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<'de, T> Deserialize<'de> for Box<T>
    where\n T: Deserialize<'de>,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<Box<T>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Display for Box<T, A>
    where\n T: Display + ?Sized,\n A: Allocator,

    source§

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

    Formats the value using the given formatter. Read more
    ","Display","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> DoubleEndedIterator for Box<I, A>
    where\n I: DoubleEndedIterator + ?Sized,\n A: Allocator,

    source§

    fn next_back(&mut self) -> Option<<I as Iterator>::Item>

    Removes and returns an element from the end of the iterator. Read more
    source§

    fn nth_back(&mut self, n: usize) -> Option<<I as Iterator>::Item>

    Returns the nth element from the end of the iterator. Read more
    source§

    fn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator from the back by n elements. Read more
    1.27.0 · source§

    fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

    This is the reverse version of Iterator::try_fold(): it takes\nelements starting from the back of the iterator. Read more
    1.27.0 · source§

    fn rfold<B, F>(self, init: B, f: F) -> B
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

    An iterator method that reduces the iterator’s elements to a single,\nfinal value, starting from the back. Read more
    1.27.0 · source§

    fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator from the back that satisfies a predicate. Read more
    ","DoubleEndedIterator","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Drop for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    ","Drop","bdk_esplora::blocking_ext::Error"],["
    1.8.0 · source§

    impl<T> Error for Box<T>
    where\n T: Error,

    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn provide<'b>(&'b self, request: &mut Request<'b>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    ","Error","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> ExactSizeIterator for Box<I, A>
    where\n I: ExactSizeIterator + ?Sized,\n A: Allocator,

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    ","ExactSizeIterator","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> Fn<Args> for Box<F, A>
    where\n Args: Tuple,\n F: Fn<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn call(\n &self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","Fn","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> FnMut<Args> for Box<F, A>
    where\n Args: Tuple,\n F: FnMut<Args> + ?Sized,\n A: Allocator,

    source§

    extern "rust-call" fn call_mut(\n &mut self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","FnMut","bdk_esplora::blocking_ext::Error"],["
    1.35.0 · source§

    impl<Args, F, A> FnOnce<Args> for Box<F, A>
    where\n Args: Tuple,\n F: FnOnce<Args> + ?Sized,\n A: Allocator,

    §

    type Output = <F as FnOnce<Args>>::Output

    The returned type after the call operator is used.
    source§

    extern "rust-call" fn call_once(\n self,\n args: Args\n) -> <Box<F, A> as FnOnce<Args>>::Output

    🔬This is a nightly-only experimental API. (fn_traits)
    Performs the call operation.
    ","FnOnce","bdk_esplora::blocking_ext::Error"],["
    1.6.0 · source§

    impl<T> From<T> for Box<T>

    source§

    fn from(t: T) -> Box<T>

    Converts a T into a Box<T>

    \n

    The conversion allocates on the heap and moves t\nfrom the stack into it.

    \n
    §Examples
    \n
    let x = 5;\nlet boxed = Box::new(5);\n\nassert_eq!(Box::from(x), boxed);
    \n
    ","From","bdk_esplora::blocking_ext::Error"],["
    §

    impl<F> FusedFuture for Box<F>
    where\n F: FusedFuture + Unpin + ?Sized,

    §

    fn is_terminated(&self) -> bool

    Returns true if the underlying future should no longer be polled.
    ","FusedFuture","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> FusedStream for Box<S>
    where\n S: FusedStream + Unpin + ?Sized,

    §

    fn is_terminated(&self) -> bool

    Returns true if the stream should no longer be polled.
    ","FusedStream","bdk_esplora::blocking_ext::Error"],["
    1.36.0 · source§

    impl<F, A> Future for Box<F, A>
    where\n F: Future + Unpin + ?Sized,\n A: Allocator,

    §

    type Output = <F as Future>::Output

    The type of value produced on completion.
    source§

    fn poll(\n self: Pin<&mut Box<F, A>>,\n cx: &mut Context<'_>\n) -> Poll<<Box<F, A> as Future>::Output>

    Attempt to resolve the future to a final value, registering\nthe current task for wakeup if the value is not yet available. Read more
    ","Future","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Hash for Box<T, A>
    where\n T: Hash + ?Sized,\n A: Allocator,

    source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_esplora::blocking_ext::Error"],["
    1.22.0 · source§

    impl<T, A> Hasher for Box<T, A>
    where\n T: Hasher + ?Sized,\n A: Allocator,

    source§

    fn finish(&self) -> u64

    Returns the hash value for the values written so far. Read more
    source§

    fn write(&mut self, bytes: &[u8])

    Writes some data into this Hasher. Read more
    source§

    fn write_u8(&mut self, i: u8)

    Writes a single u8 into this hasher.
    source§

    fn write_u16(&mut self, i: u16)

    Writes a single u16 into this hasher.
    source§

    fn write_u32(&mut self, i: u32)

    Writes a single u32 into this hasher.
    source§

    fn write_u64(&mut self, i: u64)

    Writes a single u64 into this hasher.
    source§

    fn write_u128(&mut self, i: u128)

    Writes a single u128 into this hasher.
    source§

    fn write_usize(&mut self, i: usize)

    Writes a single usize into this hasher.
    source§

    fn write_i8(&mut self, i: i8)

    Writes a single i8 into this hasher.
    source§

    fn write_i16(&mut self, i: i16)

    Writes a single i16 into this hasher.
    source§

    fn write_i32(&mut self, i: i32)

    Writes a single i32 into this hasher.
    source§

    fn write_i64(&mut self, i: i64)

    Writes a single i64 into this hasher.
    source§

    fn write_i128(&mut self, i: i128)

    Writes a single i128 into this hasher.
    source§

    fn write_isize(&mut self, i: isize)

    Writes a single isize into this hasher.
    source§

    fn write_length_prefix(&mut self, len: usize)

    🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
    Writes a length prefix into this hasher, as part of being prefix-free. Read more
    source§

    fn write_str(&mut self, s: &str)

    🔬This is a nightly-only experimental API. (hasher_prefixfree_extras)
    Writes a single str into this hasher. Read more
    ","Hasher","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<I, A> Iterator for Box<I, A>
    where\n I: Iterator + ?Sized,\n A: Allocator,

    §

    type Item = <I as Iterator>::Item

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<<I as Iterator>::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn nth(&mut self, n: usize) -> Option<<I as Iterator>::Item>

    Returns the nth element of the iterator. Read more
    source§

    fn last(self) -> Option<<I as Iterator>::Item>

    Consumes the iterator, returning the last element. Read more
    source§

    fn next_chunk<const N: usize>(\n &mut self\n) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
    where\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_next_chunk)
    Advances the iterator and returns an array containing the next N values. Read more
    1.0.0 · source§

    fn count(self) -> usize
    where\n Self: Sized,

    Consumes the iterator, counting the number of iterations and returning it. Read more
    source§

    fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

    🔬This is a nightly-only experimental API. (iter_advance_by)
    Advances the iterator by n elements. Read more
    1.28.0 · source§

    fn step_by(self, step: usize) -> StepBy<Self>
    where\n Self: Sized,

    Creates an iterator starting at the same point, but stepping by\nthe given amount at each iteration. Read more
    1.0.0 · source§

    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
    where\n Self: Sized,\n U: IntoIterator<Item = Self::Item>,

    Takes two iterators and creates a new iterator over both in sequence. Read more
    1.0.0 · source§

    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
    where\n Self: Sized,\n U: IntoIterator,

    ‘Zips up’ two iterators into a single iterator of pairs. Read more
    source§

    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
    where\n Self: Sized,\n G: FnMut() -> Self::Item,

    🔬This is a nightly-only experimental API. (iter_intersperse)
    Creates a new iterator which places an item generated by separator\nbetween adjacent items of the original iterator. Read more
    1.0.0 · source§

    fn map<B, F>(self, f: F) -> Map<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> B,

    Takes a closure and creates an iterator which calls that closure on each\nelement. Read more
    1.21.0 · source§

    fn for_each<F>(self, f: F)
    where\n Self: Sized,\n F: FnMut(Self::Item),

    Calls a closure on each element of an iterator. Read more
    1.0.0 · source§

    fn filter<P>(self, predicate: P) -> Filter<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator which uses a closure to determine if an element\nshould be yielded. Read more
    1.0.0 · source§

    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both filters and maps. Read more
    1.0.0 · source§

    fn enumerate(self) -> Enumerate<Self>
    where\n Self: Sized,

    Creates an iterator which gives the current iteration count as well as\nthe next value. Read more
    1.0.0 · source§

    fn peekable(self) -> Peekable<Self>
    where\n Self: Sized,

    Creates an iterator which can use the peek and peek_mut methods\nto look at the next element of the iterator without consuming it. See\ntheir documentation for more information. Read more
    1.0.0 · source§

    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator that skips elements based on a predicate. Read more
    1.0.0 · source§

    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Creates an iterator that yields elements based on a predicate. Read more
    1.57.0 · source§

    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
    where\n Self: Sized,\n P: FnMut(Self::Item) -> Option<B>,

    Creates an iterator that both yields elements based on a predicate and maps. Read more
    1.0.0 · source§

    fn skip(self, n: usize) -> Skip<Self>
    where\n Self: Sized,

    Creates an iterator that skips the first n elements. Read more
    1.0.0 · source§

    fn take(self, n: usize) -> Take<Self>
    where\n Self: Sized,

    Creates an iterator that yields the first n elements, or fewer\nif the underlying iterator ends sooner. Read more
    1.0.0 · source§

    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
    where\n Self: Sized,\n F: FnMut(&mut St, Self::Item) -> Option<B>,

    An iterator adapter which, like fold, holds internal state, but\nunlike fold, produces a new iterator. Read more
    1.0.0 · source§

    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
    where\n Self: Sized,\n U: IntoIterator,\n F: FnMut(Self::Item) -> U,

    Creates an iterator that works like map, but flattens nested structure. Read more
    source§

    fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
    where\n Self: Sized,\n F: FnMut(&[Self::Item; N]) -> R,

    🔬This is a nightly-only experimental API. (iter_map_windows)
    Calls the given function f for each contiguous window of size N over\nself and returns an iterator over the outputs of f. Like slice::windows(),\nthe windows during mapping overlap as well. Read more
    1.0.0 · source§

    fn fuse(self) -> Fuse<Self>
    where\n Self: Sized,

    Creates an iterator which ends after the first None. Read more
    1.0.0 · source§

    fn inspect<F>(self, f: F) -> Inspect<Self, F>
    where\n Self: Sized,\n F: FnMut(&Self::Item),

    Does something with each element of an iterator, passing the value on. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Borrows an iterator, rather than consuming it. Read more
    1.0.0 · source§

    fn collect<B>(self) -> B
    where\n B: FromIterator<Self::Item>,\n Self: Sized,

    Transforms an iterator into a collection. Read more
    source§

    fn collect_into<E>(self, collection: &mut E) -> &mut E
    where\n E: Extend<Self::Item>,\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_collect_into)
    Collects all the items from an iterator into a collection. Read more
    1.0.0 · source§

    fn partition<B, F>(self, f: F) -> (B, B)
    where\n Self: Sized,\n B: Default + Extend<Self::Item>,\n F: FnMut(&Self::Item) -> bool,

    Consumes an iterator, creating two collections from it. Read more
    source§

    fn is_partitioned<P>(self, predicate: P) -> bool
    where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_is_partitioned)
    Checks if the elements of this iterator are partitioned according to the given predicate,\nsuch that all those that return true precede all those that return false. Read more
    1.27.0 · source§

    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> R,\n R: Try<Output = B>,

    An iterator method that applies a function as long as it returns\nsuccessfully, producing a single, final value. Read more
    1.27.0 · source§

    fn try_for_each<F, R>(&mut self, f: F) -> R
    where\n Self: Sized,\n F: FnMut(Self::Item) -> R,\n R: Try<Output = ()>,

    An iterator method that applies a fallible function to each item in the\niterator, stopping at the first error and returning that error. Read more
    1.0.0 · source§

    fn fold<B, F>(self, init: B, f: F) -> B
    where\n Self: Sized,\n F: FnMut(B, Self::Item) -> B,

    Folds every element into an accumulator by applying an operation,\nreturning the final result. Read more
    1.51.0 · source§

    fn reduce<F>(self, f: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(Self::Item, Self::Item) -> Self::Item,

    Reduces the elements to a single one, by repeatedly applying a reducing\noperation. Read more
    source§

    fn try_reduce<F, R>(\n &mut self,\n f: F\n) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
    where\n Self: Sized,\n F: FnMut(Self::Item, Self::Item) -> R,\n R: Try<Output = Self::Item>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (iterator_try_reduce)
    Reduces the elements to a single one by repeatedly applying a reducing operation. If the\nclosure returns a failure, the failure is propagated back to the caller immediately. Read more
    1.0.0 · source§

    fn all<F>(&mut self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

    Tests if every element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn any<F>(&mut self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> bool,

    Tests if any element of the iterator matches a predicate. Read more
    1.0.0 · source§

    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
    where\n Self: Sized,\n P: FnMut(&Self::Item) -> bool,

    Searches for an element of an iterator that satisfies a predicate. Read more
    1.30.0 · source§

    fn find_map<B, F>(&mut self, f: F) -> Option<B>
    where\n Self: Sized,\n F: FnMut(Self::Item) -> Option<B>,

    Applies function to the elements of iterator and returns\nthe first non-none result. Read more
    source§

    fn try_find<F, R>(\n &mut self,\n f: F\n) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
    where\n Self: Sized,\n F: FnMut(&Self::Item) -> R,\n R: Try<Output = bool>,\n <R as Try>::Residual: Residual<Option<Self::Item>>,

    🔬This is a nightly-only experimental API. (try_find)
    Applies function to the elements of iterator and returns\nthe first true result or the first error. Read more
    1.0.0 · source§

    fn position<P>(&mut self, predicate: P) -> Option<usize>
    where\n Self: Sized,\n P: FnMut(Self::Item) -> bool,

    Searches for an element in an iterator, returning its index. Read more
    1.6.0 · source§

    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

    Returns the element that gives the maximum value from the\nspecified function. Read more
    1.15.0 · source§

    fn max_by<F>(self, compare: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the maximum value with respect to the\nspecified comparison function. Read more
    1.6.0 · source§

    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
    where\n B: Ord,\n Self: Sized,\n F: FnMut(&Self::Item) -> B,

    Returns the element that gives the minimum value from the\nspecified function. Read more
    1.15.0 · source§

    fn min_by<F>(self, compare: F) -> Option<Self::Item>
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> Ordering,

    Returns the element that gives the minimum value with respect to the\nspecified comparison function. Read more
    1.0.0 · source§

    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
    where\n FromA: Default + Extend<A>,\n FromB: Default + Extend<B>,\n Self: Sized + Iterator<Item = (A, B)>,

    Converts an iterator of pairs into a pair of containers. Read more
    1.36.0 · source§

    fn copied<'a, T>(self) -> Copied<Self>
    where\n T: 'a + Copy,\n Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which copies all of its elements. Read more
    1.0.0 · source§

    fn cloned<'a, T>(self) -> Cloned<Self>
    where\n T: 'a + Clone,\n Self: Sized + Iterator<Item = &'a T>,

    Creates an iterator which clones all of its elements. Read more
    source§

    fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
    where\n Self: Sized,

    🔬This is a nightly-only experimental API. (iter_array_chunks)
    Returns an iterator over N elements of the iterator at a time. Read more
    1.11.0 · source§

    fn sum<S>(self) -> S
    where\n Self: Sized,\n S: Sum<Self::Item>,

    Sums the elements of an iterator. Read more
    1.11.0 · source§

    fn product<P>(self) -> P
    where\n Self: Sized,\n P: Product<Self::Item>,

    Iterates over the entire iterator, multiplying all the elements Read more
    source§

    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn partial_cmp<I>(self, other: I) -> Option<Ordering>
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Lexicographically compares the PartialOrd elements of\nthis Iterator with those of another. The comparison works like short-circuit\nevaluation, returning a result without comparing the remaining elements.\nAs soon as an order can be determined, the evaluation stops and a result is returned. Read more
    source§

    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Lexicographically compares the elements of this Iterator with those\nof another with respect to the specified comparison function. Read more
    1.5.0 · source§

    fn eq<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are equal to those of\nanother. Read more
    source§

    fn eq_by<I, F>(self, other: I, eq: F) -> bool
    where\n Self: Sized,\n I: IntoIterator,\n F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

    🔬This is a nightly-only experimental API. (iter_order_by)
    Determines if the elements of this Iterator are equal to those of\nanother with respect to the specified equality function. Read more
    1.5.0 · source§

    fn ne<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialEq<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are not equal to those of\nanother. Read more
    1.5.0 · source§

    fn lt<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\nless than those of another. Read more
    1.5.0 · source§

    fn le<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\nless or equal to those of another. Read more
    1.5.0 · source§

    fn gt<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\ngreater than those of another. Read more
    1.5.0 · source§

    fn ge<I>(self, other: I) -> bool
    where\n I: IntoIterator,\n Self::Item: PartialOrd<<I as IntoIterator>::Item>,\n Self: Sized,

    Determines if the elements of this Iterator are lexicographically\ngreater than or equal to those of another. Read more
    source§

    fn is_sorted_by<F>(self, compare: F) -> bool
    where\n Self: Sized,\n F: FnMut(&Self::Item, &Self::Item) -> bool,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given comparator function. Read more
    source§

    fn is_sorted_by_key<F, K>(self, f: F) -> bool
    where\n Self: Sized,\n F: FnMut(Self::Item) -> K,\n K: PartialOrd,

    🔬This is a nightly-only experimental API. (is_sorted)
    Checks if the elements of this iterator are sorted using the given key extraction\nfunction. Read more
    ","Iterator","bdk_esplora::blocking_ext::Error"],["
    §

    impl<Sp> LocalSpawn for Box<Sp>
    where\n Sp: LocalSpawn + ?Sized,

    §

    fn spawn_local_obj(\n &self,\n future: LocalFutureObj<'static, ()>\n) -> Result<(), SpawnError>

    Spawns a future that will be run to completion. Read more
    §

    fn status_local(&self) -> Result<(), SpawnError>

    Determines whether the executor is able to spawn new tasks. Read more
    ","LocalSpawn","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Ord for Box<T, A>
    where\n T: Ord + ?Sized,\n A: Allocator,

    source§

    fn cmp(&self, other: &Box<T, A>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> PartialEq for Box<T, A>
    where\n T: PartialEq + ?Sized,\n A: Allocator,

    source§

    fn eq(&self, other: &Box<T, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    source§

    fn ne(&self, other: &Box<T, A>) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> PartialOrd for Box<T, A>
    where\n T: PartialOrd + ?Sized,\n A: Allocator,

    source§

    fn partial_cmp(&self, other: &Box<T, A>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    source§

    fn lt(&self, other: &Box<T, A>) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    source§

    fn le(&self, other: &Box<T, A>) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    source§

    fn ge(&self, other: &Box<T, A>) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    source§

    fn gt(&self, other: &Box<T, A>) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    ","PartialOrd","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Pointer for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    source§

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

    Formats the value using the given formatter. Read more
    ","Pointer","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<R> Read for Box<R>
    where\n R: Read + ?Sized,

    source§

    fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error>

    Pull some bytes from this source into the specified buffer, returning\nhow many bytes were read. Read more
    source§

    fn read_buf(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (read_buf)
    Pull some bytes from this source into the specified buffer. Read more
    source§

    fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

    Like read, except that it reads into a slice of buffers. Read more
    source§

    fn is_read_vectored(&self) -> bool

    🔬This is a nightly-only experimental API. (can_vector)
    Determines if this Reader has an efficient read_vectored\nimplementation. Read more
    source§

    fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error>

    Read all bytes until EOF in this source, placing them into buf. Read more
    source§

    fn read_to_string(&mut self, buf: &mut String) -> Result<usize, Error>

    Read all bytes until EOF in this source, appending them to buf. Read more
    source§

    fn read_exact(&mut self, buf: &mut [u8]) -> Result<(), Error>

    Read the exact number of bytes required to fill buf. Read more
    source§

    fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (read_buf)
    Read the exact number of bytes required to fill cursor. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Creates a “by reference” adaptor for this instance of Read. Read more
    1.0.0 · source§

    fn bytes(self) -> Bytes<Self>
    where\n Self: Sized,

    Transforms this Read instance to an Iterator over its bytes. Read more
    1.0.0 · source§

    fn chain<R>(self, next: R) -> Chain<Self, R>
    where\n R: Read,\n Self: Sized,

    Creates an adapter which will chain this stream with another. Read more
    1.0.0 · source§

    fn take(self, limit: u64) -> Take<Self>
    where\n Self: Sized,

    Creates an adapter which will read at most limit bytes from it. Read more
    ","Read","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<R> RngCore for Box<R>
    where\n R: RngCore + ?Sized,

    source§

    fn next_u32(&mut self) -> u32

    Return the next random u32. Read more
    source§

    fn next_u64(&mut self) -> u64

    Return the next random u64. Read more
    source§

    fn fill_bytes(&mut self, dest: &mut [u8])

    Fill dest with random data. Read more
    source§

    fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error>

    Fill dest entirely with random data. Read more
    ","RngCore","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<S> Seek for Box<S>
    where\n S: Seek + ?Sized,

    source§

    fn seek(&mut self, pos: SeekFrom) -> Result<u64, Error>

    Seek to an offset, in bytes, in a stream. Read more
    source§

    fn stream_position(&mut self) -> Result<u64, Error>

    Returns the current seek position from the start of the stream. Read more
    1.55.0 · source§

    fn rewind(&mut self) -> Result<(), Error>

    Rewind to the beginning of a stream. Read more
    source§

    fn stream_len(&mut self) -> Result<u64, Error>

    🔬This is a nightly-only experimental API. (seek_stream_len)
    Returns the length of this stream (in bytes). Read more
    source§

    fn seek_relative(&mut self, offset: i64) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (seek_seek_relative)
    Seeks relative to the current position. Read more
    ","Seek","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T> Serialize for Box<T>
    where\n T: Serialize + ?Sized,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S, Request> Service<Request> for Box<S>
    where\n S: Service<Request> + ?Sized,

    §

    type Response = <S as Service<Request>>::Response

    Responses given by the service.
    §

    type Error = <S as Service<Request>>::Error

    Errors produced by the service.
    §

    type Future = <S as Service<Request>>::Future

    The future response value.
    §

    fn poll_ready(\n &mut self,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <S as Service<Request>>::Error>>

    Returns Poll::Ready(Ok(())) when the service is able to process requests. Read more
    §

    fn call(&mut self, request: Request) -> <S as Service<Request>>::Future

    Process the request and return the response asynchronously. Read more
    ","Service","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S, Item> Sink<Item> for Box<S>
    where\n S: Sink<Item> + Unpin + ?Sized,

    §

    type Error = <S as Sink<Item>>::Error

    The type of value produced by the sink when an error occurs.
    §

    fn poll_ready(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Attempts to prepare the Sink to receive a value. Read more
    §

    fn start_send(\n self: Pin<&mut Box<S>>,\n item: Item\n) -> Result<(), <Box<S> as Sink<Item>>::Error>

    Begin the process of sending a value to the sink.\nEach call to this function must be preceded by a successful call to\npoll_ready which returned Poll::Ready(Ok(())). Read more
    §

    fn poll_flush(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Flush any remaining output from this sink. Read more
    §

    fn poll_close(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Result<(), <Box<S> as Sink<Item>>::Error>>

    Flush any remaining output and close this sink, if necessary. Read more
    ","Sink","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Source for Box<T>
    where\n T: Source + ?Sized,

    §

    fn register(\n &mut self,\n registry: &Registry,\n token: Token,\n interests: Interest\n) -> Result<(), Error>

    Register self with the given Registry instance. Read more
    §

    fn reregister(\n &mut self,\n registry: &Registry,\n token: Token,\n interests: Interest\n) -> Result<(), Error>

    Re-register self with the given Registry instance. Read more
    §

    fn deregister(&mut self, registry: &Registry) -> Result<(), Error>

    Deregister self from the given Registry instance. Read more
    ","Source","bdk_esplora::blocking_ext::Error"],["
    §

    impl<Sp> Spawn for Box<Sp>
    where\n Sp: Spawn + ?Sized,

    §

    fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError>

    Spawns a future that will be run to completion. Read more
    §

    fn status(&self) -> Result<(), SpawnError>

    Determines whether the executor is able to spawn new tasks. Read more
    ","Spawn","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> Stream for Box<S>
    where\n S: Stream + Unpin + ?Sized,

    §

    type Item = <S as Stream>::Item

    Values yielded by the stream.
    §

    fn poll_next(\n self: Pin<&mut Box<S>>,\n cx: &mut Context<'_>\n) -> Poll<Option<<Box<S> as Stream>::Item>>

    Attempt to pull out the next value of this stream, registering the\ncurrent task for wakeup if the value is not yet available, and returning\nNone if the stream is exhausted. Read more
    §

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the stream. Read more
    ","Stream","bdk_esplora::blocking_ext::Error"],["
    §

    impl<S> Subscriber for Box<S>
    where\n S: Subscriber + ?Sized,

    §

    fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest

    Registers a new callsite with this subscriber, returning whether or not\nthe subscriber is interested in being notified about the callsite. Read more
    §

    fn enabled(&self, metadata: &Metadata<'_>) -> bool

    Returns true if a span or event with the specified metadata would be\nrecorded. Read more
    §

    fn max_level_hint(&self) -> Option<LevelFilter>

    Returns the highest verbosity level that this Subscriber will\nenable, or None, if the subscriber does not implement level-based\nfiltering or chooses not to implement this method. Read more
    §

    fn new_span(&self, span: &Attributes<'_>) -> Id

    Visit the construction of a new span, returning a new span ID for the\nspan being constructed. Read more
    §

    fn record(&self, span: &Id, values: &Record<'_>)

    Record a set of values on a span. Read more
    §

    fn record_follows_from(&self, span: &Id, follows: &Id)

    Adds an indication that span follows from the span with the id\nfollows. Read more
    §

    fn event_enabled(&self, event: &Event<'_>) -> bool

    Determine if an [Event] should be recorded. Read more
    §

    fn event(&self, event: &Event<'_>)

    Records that an Event has occurred. Read more
    §

    fn enter(&self, span: &Id)

    Records that a span has been entered. Read more
    §

    fn exit(&self, span: &Id)

    Records that a span has been exited. Read more
    §

    fn clone_span(&self, id: &Id) -> Id

    Notifies the subscriber that a span ID has been cloned. Read more
    §

    fn try_close(&self, id: Id) -> bool

    Notifies the subscriber that a span ID has been dropped, and returns\ntrue if there are now 0 IDs that refer to that span. Read more
    §

    fn drop_span(&self, id: Id)

    👎Deprecated since 0.1.2: use Subscriber::try_close instead
    This method is deprecated. Read more
    §

    fn current_span(&self) -> Current

    Returns a type representing this subscriber’s view of the current span. Read more
    §

    unsafe fn downcast_raw(&self, id: TypeId) -> Option<*const ()>

    If self is the same type as the provided TypeId, returns an untyped\n*const pointer to that type. Otherwise, returns None. Read more
    §

    fn on_register_dispatch(&self, subscriber: &Dispatch)

    Invoked when this subscriber becomes a [Dispatch]. Read more
    ","Subscriber","bdk_esplora::blocking_ext::Error"],["
    §

    impl<'a, T, F> UnsafeFutureObj<'a, T> for Box<F>
    where\n F: Future<Output = T> + 'a,

    §

    fn into_raw(self) -> *mut dyn Future<Output = T> + 'a

    Convert an owned instance into a (conceptually owned) fat pointer. Read more
    §

    unsafe fn drop(ptr: *mut dyn Future<Output = T> + 'a)

    Drops the future represented by the given fat pointer. Read more
    ","UnsafeFutureObj<'a, T>","bdk_esplora::blocking_ext::Error"],["
    §

    impl<T> Value for Box<T>
    where\n T: Value + ?Sized,

    §

    fn record(&self, key: &Field, visitor: &mut dyn Visit)

    Visits this value with the given Visitor.
    ","Value","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<W> Write for Box<W>
    where\n W: Write + ?Sized,

    source§

    fn write(&mut self, buf: &[u8]) -> Result<usize, Error>

    Write a buffer into this writer, returning how many bytes were written. Read more
    source§

    fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

    Like write, except that it writes from a slice of buffers. Read more
    source§

    fn is_write_vectored(&self) -> bool

    🔬This is a nightly-only experimental API. (can_vector)
    Determines if this Writer has an efficient write_vectored\nimplementation. Read more
    source§

    fn flush(&mut self) -> Result<(), Error>

    Flush this output stream, ensuring that all intermediately buffered\ncontents reach their destination. Read more
    source§

    fn write_all(&mut self, buf: &[u8]) -> Result<(), Error>

    Attempts to write an entire buffer into this writer. Read more
    source§

    fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<(), Error>

    Writes a formatted string into this writer, returning any error\nencountered. Read more
    source§

    fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

    🔬This is a nightly-only experimental API. (write_all_vectored)
    Attempts to write multiple buffers into this writer. Read more
    1.0.0 · source§

    fn by_ref(&mut self) -> &mut Self
    where\n Self: Sized,

    Creates a “by reference” adapter for this instance of Write. Read more
    ","Write","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, U, A> CoerceUnsized<Box<U, A>> for Box<T, A>
    where\n T: Unsize<U> + ?Sized,\n A: Allocator,\n U: ?Sized,

    ","CoerceUnsized>","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<R> CryptoRng for Box<R>
    where\n R: CryptoRng + ?Sized,

    ","CryptoRng","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, A> DerefPure for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    ","DerefPure","bdk_esplora::blocking_ext::Error"],["
    source§

    impl<T, U> DispatchFromDyn<Box<U>> for Box<T>
    where\n T: Unsize<U> + ?Sized,\n U: ?Sized,

    ","DispatchFromDyn>","bdk_esplora::blocking_ext::Error"],["
    1.0.0 · source§

    impl<T, A> Eq for Box<T, A>
    where\n T: Eq + ?Sized,\n A: Allocator,

    ","Eq","bdk_esplora::blocking_ext::Error"],["
    1.26.0 · source§

    impl<I, A> FusedIterator for Box<I, A>
    where\n I: FusedIterator + ?Sized,\n A: Allocator,

    ","FusedIterator","bdk_esplora::blocking_ext::Error"],["
    1.33.0 · source§

    impl<T, A> Unpin for Box<T, A>
    where\n A: Allocator,\n T: ?Sized,

    ","Unpin","bdk_esplora::blocking_ext::Error"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/collections/btree/map/struct.BTreeMap.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/collections/btree/map/struct.BTreeMap.js new file mode 100644 index 0000000000..991eb30051 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/alloc/collections/btree/map/struct.BTreeMap.js @@ -0,0 +1,4 @@ +(function() {var type_impls = { +"bdk_chain":[["
    source§

    impl<K: Ord, V> Append for BTreeMap<K, V>

    source§

    fn append(&mut self, other: Self)

    Append another object of the same type onto self.
    source§

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    ","Append","bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V> BTreeMap<K, V>

    1.0.0 (const: 1.66.0) · source

    pub const fn new() -> BTreeMap<K, V>

    Makes a new, empty BTreeMap.

    \n

    Does not allocate anything on its own.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\n\n// entries can now be inserted into the empty map\nmap.insert(1, \"a\");
    \n
    ",0,"bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, K, V> ⓘ

    Gets an iterator over the entries of the map, sorted by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(3, \"c\");\nmap.insert(2, \"b\");\nmap.insert(1, \"a\");\n\nfor (key, value) in map.iter() {\n    println!(\"{key}: {value}\");\n}\n\nlet (first_key, first_value) = map.iter().next().unwrap();\nassert_eq!((*first_key, *first_value), (1, \"a\"));
    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, K, V> ⓘ

    Gets a mutable iterator over the entries of the map, sorted by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::from([\n   (\"a\", 1),\n   (\"b\", 2),\n   (\"c\", 3),\n]);\n\n// add 10 to the value if the key isn't \"a\"\nfor (key, value) in map.iter_mut() {\n    if key != &\"a\" {\n        *value += 10;\n    }\n}
    \n
    1.0.0 · source

    pub fn keys(&self) -> Keys<'_, K, V> ⓘ

    Gets an iterator over the keys of the map, in sorted order.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(2, \"b\");\na.insert(1, \"a\");\n\nlet keys: Vec<_> = a.keys().cloned().collect();\nassert_eq!(keys, [1, 2]);
    \n
    1.0.0 · source

    pub fn values(&self) -> Values<'_, K, V> ⓘ

    Gets an iterator over the values of the map, in order by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"hello\");\na.insert(2, \"goodbye\");\n\nlet values: Vec<&str> = a.values().cloned().collect();\nassert_eq!(values, [\"hello\", \"goodbye\"]);
    \n
    1.10.0 · source

    pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> ⓘ

    Gets a mutable iterator over the values of the map, in order by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, String::from(\"hello\"));\na.insert(2, String::from(\"goodbye\"));\n\nfor value in a.values_mut() {\n    value.push_str(\"!\");\n}\n\nlet values: Vec<String> = a.values().cloned().collect();\nassert_eq!(values, [String::from(\"hello!\"),\n                    String::from(\"goodbye!\")]);
    \n
    1.0.0 (const: unstable) · source

    pub fn len(&self) -> usize

    Returns the number of elements in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\nassert_eq!(a.len(), 0);\na.insert(1, \"a\");\nassert_eq!(a.len(), 1);
    \n
    1.0.0 (const: unstable) · source

    pub fn is_empty(&self) -> bool

    Returns true if the map contains no elements.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\nassert!(a.is_empty());\na.insert(1, \"a\");\nassert!(!a.is_empty());
    \n
    source

    pub fn lower_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    🔬This is a nightly-only experimental API. (btree_cursors)

    Returns a Cursor pointing at the gap before the smallest key\ngreater than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap before the smallest key greater than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap before the smallest key greater than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap before the smallest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet cursor = map.lower_bound(Bound::Included(&2));\nassert_eq!(cursor.peek_prev(), Some((&1, &\"a\")));\nassert_eq!(cursor.peek_next(), Some((&2, &\"b\")));\n\nlet cursor = map.lower_bound(Bound::Excluded(&2));\nassert_eq!(cursor.peek_prev(), Some((&2, &\"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &\"c\")));\n\nlet cursor = map.lower_bound(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), None);\nassert_eq!(cursor.peek_next(), Some((&1, &\"a\")));
    \n
    source

    pub fn lower_bound_mut<Q>(&mut self, bound: Bound<&Q>) -> CursorMut<'_, K, V, A>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    🔬This is a nightly-only experimental API. (btree_cursors)

    Returns a CursorMut pointing at the gap before the smallest key\ngreater than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap before the smallest key greater than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap before the smallest key greater than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap before the smallest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet mut map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet mut cursor = map.lower_bound_mut(Bound::Included(&2));\nassert_eq!(cursor.peek_prev(), Some((&1, &mut \"a\")));\nassert_eq!(cursor.peek_next(), Some((&2, &mut \"b\")));\n\nlet mut cursor = map.lower_bound_mut(Bound::Excluded(&2));\nassert_eq!(cursor.peek_prev(), Some((&2, &mut \"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &mut \"c\")));\n\nlet mut cursor = map.lower_bound_mut(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), None);\nassert_eq!(cursor.peek_next(), Some((&1, &mut \"a\")));
    \n
    source

    pub fn upper_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    🔬This is a nightly-only experimental API. (btree_cursors)

    Returns a Cursor pointing at the gap after the greatest key\nsmaller than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap after the greatest key smaller than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap after the greatest key smaller than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap after the greatest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet cursor = map.upper_bound(Bound::Included(&3));\nassert_eq!(cursor.peek_prev(), Some((&3, &\"c\")));\nassert_eq!(cursor.peek_next(), Some((&4, &\"d\")));\n\nlet cursor = map.upper_bound(Bound::Excluded(&3));\nassert_eq!(cursor.peek_prev(), Some((&2, &\"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &\"c\")));\n\nlet cursor = map.upper_bound(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), Some((&4, &\"d\")));\nassert_eq!(cursor.peek_next(), None);
    \n
    source

    pub fn upper_bound_mut<Q>(&mut self, bound: Bound<&Q>) -> CursorMut<'_, K, V, A>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    🔬This is a nightly-only experimental API. (btree_cursors)

    Returns a CursorMut pointing at the gap after the greatest key\nsmaller than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap after the greatest key smaller than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap after the greatest key smaller than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap after the greatest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet mut map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet mut cursor = map.upper_bound_mut(Bound::Included(&3));\nassert_eq!(cursor.peek_prev(), Some((&3, &mut \"c\")));\nassert_eq!(cursor.peek_next(), Some((&4, &mut \"d\")));\n\nlet mut cursor = map.upper_bound_mut(Bound::Excluded(&3));\nassert_eq!(cursor.peek_prev(), Some((&2, &mut \"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &mut \"c\")));\n\nlet mut cursor = map.upper_bound_mut(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), Some((&4, &mut \"d\")));\nassert_eq!(cursor.peek_next(), None);
    \n
    ",0,"bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn clear(&mut self)

    Clears the map, removing all elements.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.clear();\nassert!(a.is_empty());
    \n
    source

    pub const fn new_in(alloc: A) -> BTreeMap<K, V, A>

    🔬This is a nightly-only experimental API. (btreemap_alloc)

    Makes a new empty BTreeMap with a reasonable choice for B.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\nuse std::alloc::Global;\n\nlet mut map = BTreeMap::new_in(Global);\n\n// entries can now be inserted into the empty map\nmap.insert(1, \"a\");
    \n
    ",0,"bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn get<Q>(&self, key: &Q) -> Option<&V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns a reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get(&1), Some(&\"a\"));\nassert_eq!(map.get(&2), None);
    \n
    1.40.0 · source

    pub fn get_key_value<Q>(&self, k: &Q) -> Option<(&K, &V)>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns the key-value pair corresponding to the supplied key.

    \n

    The supplied key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get_key_value(&1), Some((&1, &\"a\")));\nassert_eq!(map.get_key_value(&2), None);
    \n
    1.66.0 · source

    pub fn first_key_value(&self) -> Option<(&K, &V)>
    where\n K: Ord,

    Returns the first key-value pair in the map.\nThe key in this pair is the minimum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.first_key_value(), None);\nmap.insert(1, \"b\");\nmap.insert(2, \"a\");\nassert_eq!(map.first_key_value(), Some((&1, &\"b\")));
    \n
    1.66.0 · source

    pub fn first_entry(&mut self) -> Option<OccupiedEntry<'_, K, V, A>>
    where\n K: Ord,

    Returns the first entry in the map for in-place manipulation.\nThe key of this entry is the minimum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nif let Some(mut entry) = map.first_entry() {\n    if *entry.key() > 0 {\n        entry.insert(\"first\");\n    }\n}\nassert_eq!(*map.get(&1).unwrap(), \"first\");\nassert_eq!(*map.get(&2).unwrap(), \"b\");
    \n
    1.66.0 · source

    pub fn pop_first(&mut self) -> Option<(K, V)>
    where\n K: Ord,

    Removes and returns the first element in the map.\nThe key of this element is the minimum key that was in the map.

    \n
    §Examples
    \n

    Draining elements in ascending order, while keeping a usable map each iteration.

    \n\n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nwhile let Some((key, _val)) = map.pop_first() {\n    assert!(map.iter().all(|(k, _v)| *k > key));\n}\nassert!(map.is_empty());
    \n
    1.66.0 · source

    pub fn last_key_value(&self) -> Option<(&K, &V)>
    where\n K: Ord,

    Returns the last key-value pair in the map.\nThe key in this pair is the maximum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"b\");\nmap.insert(2, \"a\");\nassert_eq!(map.last_key_value(), Some((&2, &\"a\")));
    \n
    1.66.0 · source

    pub fn last_entry(&mut self) -> Option<OccupiedEntry<'_, K, V, A>>
    where\n K: Ord,

    Returns the last entry in the map for in-place manipulation.\nThe key of this entry is the maximum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nif let Some(mut entry) = map.last_entry() {\n    if *entry.key() > 0 {\n        entry.insert(\"last\");\n    }\n}\nassert_eq!(*map.get(&1).unwrap(), \"a\");\nassert_eq!(*map.get(&2).unwrap(), \"last\");
    \n
    1.66.0 · source

    pub fn pop_last(&mut self) -> Option<(K, V)>
    where\n K: Ord,

    Removes and returns the last element in the map.\nThe key of this element is the maximum key that was in the map.

    \n
    §Examples
    \n

    Draining elements in descending order, while keeping a usable map each iteration.

    \n\n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nwhile let Some((key, _val)) = map.pop_last() {\n    assert!(map.iter().all(|(k, _v)| *k < key));\n}\nassert!(map.is_empty());
    \n
    1.0.0 · source

    pub fn contains_key<Q>(&self, key: &Q) -> bool
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns true if the map contains a value for the specified key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.contains_key(&1), true);\nassert_eq!(map.contains_key(&2), false);
    \n
    1.0.0 · source

    pub fn get_mut<Q>(&mut self, key: &Q) -> Option<&mut V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns a mutable reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nif let Some(x) = map.get_mut(&1) {\n    *x = \"b\";\n}\nassert_eq!(map[&1], \"b\");
    \n
    1.0.0 · source

    pub fn insert(&mut self, key: K, value: V) -> Option<V>
    where\n K: Ord,

    Inserts a key-value pair into the map.

    \n

    If the map did not have this key present, None is returned.

    \n

    If the map did have this key present, the value is updated, and the old\nvalue is returned. The key is not updated, though; this matters for\ntypes that can be == without being identical. See the module-level\ndocumentation for more.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.insert(37, \"a\"), None);\nassert_eq!(map.is_empty(), false);\n\nmap.insert(37, \"b\");\nassert_eq!(map.insert(37, \"c\"), Some(\"b\"));\nassert_eq!(map[&37], \"c\");
    \n
    source

    pub fn try_insert(\n &mut self,\n key: K,\n value: V\n) -> Result<&mut V, OccupiedError<'_, K, V, A>>
    where\n K: Ord,

    🔬This is a nightly-only experimental API. (map_try_insert)

    Tries to insert a key-value pair into the map, and returns\na mutable reference to the value in the entry.

    \n

    If the map already had this key present, nothing is updated, and\nan error containing the occupied entry and the value is returned.

    \n
    §Examples
    \n
    #![feature(map_try_insert)]\n\nuse std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.try_insert(37, \"a\").unwrap(), &\"a\");\n\nlet err = map.try_insert(37, \"b\").unwrap_err();\nassert_eq!(err.entry.key(), &37);\nassert_eq!(err.entry.get(), &\"a\");\nassert_eq!(err.value, \"b\");
    \n
    1.0.0 · source

    pub fn remove<Q>(&mut self, key: &Q) -> Option<V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Removes a key from the map, returning the value at the key if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove(&1), Some(\"a\"));\nassert_eq!(map.remove(&1), None);
    \n
    1.45.0 · source

    pub fn remove_entry<Q>(&mut self, key: &Q) -> Option<(K, V)>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Removes a key from the map, returning the stored key and value if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove_entry(&1), Some((1, \"a\")));\nassert_eq!(map.remove_entry(&1), None);
    \n
    1.53.0 · source

    pub fn retain<F>(&mut self, f: F)
    where\n K: Ord,\n F: FnMut(&K, &mut V) -> bool,

    Retains only the elements specified by the predicate.

    \n

    In other words, remove all pairs (k, v) for which f(&k, &mut v) returns false.\nThe elements are visited in ascending key order.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map: BTreeMap<i32, i32> = (0..8).map(|x| (x, x*10)).collect();\n// Keep only the elements with even-numbered keys.\nmap.retain(|&k, _| k % 2 == 0);\nassert!(map.into_iter().eq(vec![(0, 0), (2, 20), (4, 40), (6, 60)]));
    \n
    1.11.0 · source

    pub fn append(&mut self, other: &mut BTreeMap<K, V, A>)
    where\n K: Ord,\n A: Clone,

    Moves all elements from other into self, leaving other empty.

    \n

    If a key from other is already present in self, the respective\nvalue from self will be overwritten with the respective value from other.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\na.insert(3, \"c\"); // Note: Key (3) also present in b.\n\nlet mut b = BTreeMap::new();\nb.insert(3, \"d\"); // Note: Key (3) also present in a.\nb.insert(4, \"e\");\nb.insert(5, \"f\");\n\na.append(&mut b);\n\nassert_eq!(a.len(), 5);\nassert_eq!(b.len(), 0);\n\nassert_eq!(a[&1], \"a\");\nassert_eq!(a[&2], \"b\");\nassert_eq!(a[&3], \"d\"); // Note: \"c\" has been overwritten.\nassert_eq!(a[&4], \"e\");\nassert_eq!(a[&5], \"f\");
    \n
    1.17.0 · source

    pub fn range<T, R>(&self, range: R) -> Range<'_, K, V> ⓘ
    where\n T: Ord + ?Sized,\n K: Borrow<T> + Ord,\n R: RangeBounds<T>,

    Constructs a double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax min..max, thus range(min..max) will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as (Bound<T>, Bound<T>), so for example\nrange((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive\nrange from 4 to 10.

    \n
    §Panics
    \n

    Panics if range start > end.\nPanics if range start == end and both bounds are Excluded.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\nuse std::ops::Bound::Included;\n\nlet mut map = BTreeMap::new();\nmap.insert(3, \"a\");\nmap.insert(5, \"b\");\nmap.insert(8, \"c\");\nfor (&key, &value) in map.range((Included(&4), Included(&8))) {\n    println!(\"{key}: {value}\");\n}\nassert_eq!(Some((&5, &\"b\")), map.range(4..).next());
    \n
    1.17.0 · source

    pub fn range_mut<T, R>(&mut self, range: R) -> RangeMut<'_, K, V> ⓘ
    where\n T: Ord + ?Sized,\n K: Borrow<T> + Ord,\n R: RangeBounds<T>,

    Constructs a mutable double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax min..max, thus range(min..max) will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as (Bound<T>, Bound<T>), so for example\nrange((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive\nrange from 4 to 10.

    \n
    §Panics
    \n

    Panics if range start > end.\nPanics if range start == end and both bounds are Excluded.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map: BTreeMap<&str, i32> =\n    [(\"Alice\", 0), (\"Bob\", 0), (\"Carol\", 0), (\"Cheryl\", 0)].into();\nfor (_, balance) in map.range_mut(\"B\"..\"Cheryl\") {\n    *balance += 100;\n}\nfor (name, balance) in &map {\n    println!(\"{name} => {balance}\");\n}
    \n
    1.0.0 · source

    pub fn entry(&mut self, key: K) -> Entry<'_, K, V, A>
    where\n K: Ord,

    Gets the given key’s corresponding entry in the map for in-place manipulation.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut count: BTreeMap<&str, usize> = BTreeMap::new();\n\n// count the number of occurrences of letters in the vec\nfor x in [\"a\", \"b\", \"a\", \"c\", \"a\", \"b\"] {\n    count.entry(x).and_modify(|curr| *curr += 1).or_insert(1);\n}\n\nassert_eq!(count[\"a\"], 3);\nassert_eq!(count[\"b\"], 2);\nassert_eq!(count[\"c\"], 1);
    \n
    1.11.0 · source

    pub fn split_off<Q>(&mut self, key: &Q) -> BTreeMap<K, V, A>
    where\n Q: Ord + ?Sized,\n K: Borrow<Q> + Ord,\n A: Clone,

    Splits the collection into two at the given key. Returns everything after the given key,\nincluding the key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\na.insert(3, \"c\");\na.insert(17, \"d\");\na.insert(41, \"e\");\n\nlet b = a.split_off(&3);\n\nassert_eq!(a.len(), 2);\nassert_eq!(b.len(), 3);\n\nassert_eq!(a[&1], \"a\");\nassert_eq!(a[&2], \"b\");\n\nassert_eq!(b[&3], \"c\");\nassert_eq!(b[&17], \"d\");\nassert_eq!(b[&41], \"e\");
    \n
    source

    pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F, A> ⓘ
    where\n K: Ord,\n F: FnMut(&K, &mut V) -> bool,

    🔬This is a nightly-only experimental API. (btree_extract_if)

    Creates an iterator that visits all elements (key-value pairs) in\nascending key order and uses a closure to determine if an element should\nbe removed. If the closure returns true, the element is removed from\nthe map and yielded. If the closure returns false, or panics, the\nelement remains in the map and will not be yielded.

    \n

    The iterator also lets you mutate the value of each element in the\nclosure, regardless of whether you choose to keep or remove it.

    \n

    If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

    \n
    §Examples
    \n

    Splitting a map into even and odd keys, reusing the original map:

    \n\n
    #![feature(btree_extract_if)]\nuse std::collections::BTreeMap;\n\nlet mut map: BTreeMap<i32, i32> = (0..8).map(|x| (x, x)).collect();\nlet evens: BTreeMap<_, _> = map.extract_if(|k, _v| k % 2 == 0).collect();\nlet odds = map;\nassert_eq!(evens.keys().copied().collect::<Vec<_>>(), [0, 2, 4, 6]);\nassert_eq!(odds.keys().copied().collect::<Vec<_>>(), [1, 3, 5, 7]);
    \n
    1.54.0 · source

    pub fn into_keys(self) -> IntoKeys<K, V, A> ⓘ

    Creates a consuming iterator visiting all the keys, in sorted order.\nThe map cannot be used after calling this.\nThe iterator element type is K.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(2, \"b\");\na.insert(1, \"a\");\n\nlet keys: Vec<i32> = a.into_keys().collect();\nassert_eq!(keys, [1, 2]);
    \n
    1.54.0 · source

    pub fn into_values(self) -> IntoValues<K, V, A> ⓘ

    Creates a consuming iterator visiting all the values, in order by key.\nThe map cannot be used after calling this.\nThe iterator element type is V.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"hello\");\na.insert(2, \"goodbye\");\n\nlet values: Vec<&str> = a.into_values().collect();\nassert_eq!(values, [\"hello\", \"goodbye\"]);
    \n
    ",0,"bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Clone for BTreeMap<K, V, A>
    where\n K: Clone,\n V: Clone,\n A: Allocator + Clone,

    source§

    fn clone(&self) -> BTreeMap<K, V, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

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

    Performs copy-assignment from source. Read more
    ","Clone","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Debug for BTreeMap<K, V, A>
    where\n K: Debug,\n V: Debug,\n A: Allocator + Clone,

    source§

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

    Formats the value using the given formatter. Read more
    ","Debug","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V> Default for BTreeMap<K, V>

    source§

    fn default() -> BTreeMap<K, V>

    Creates an empty BTreeMap.

    \n
    ","Default","bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<'de, K, V> Deserialize<'de> for BTreeMap<K, V>
    where\n K: Deserialize<'de> + Ord,\n V: Deserialize<'de>,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<BTreeMap<K, V>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_chain::local_chain::ChangeSet"],["
    1.7.0 · source§

    impl<K, V, A> Drop for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    ","Drop","bdk_chain::local_chain::ChangeSet"],["
    1.2.0 · source§

    impl<'a, K, V, A> Extend<(&'a K, &'a V)> for BTreeMap<K, V, A>
    where\n K: Ord + Copy,\n V: Copy,\n A: Allocator + Clone,

    source§

    fn extend<I>(&mut self, iter: I)
    where\n I: IntoIterator<Item = (&'a K, &'a V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (&'a K, &'a V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(&'a K, &'a V)>","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Extend<(K, V)> for BTreeMap<K, V, A>
    where\n K: Ord,\n A: Allocator + Clone,

    source§

    fn extend<T>(&mut self, iter: T)
    where\n T: IntoIterator<Item = (K, V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (K, V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(K, V)>","bdk_chain::local_chain::ChangeSet"],["
    1.56.0 · source§

    impl<K, V, const N: usize> From<[(K, V); N]> for BTreeMap<K, V>
    where\n K: Ord,

    source§

    fn from(arr: [(K, V); N]) -> BTreeMap<K, V>

    Converts a [(K, V); N] into a BTreeMap<(K, V)>.

    \n\n
    use std::collections::BTreeMap;\n\nlet map1 = BTreeMap::from([(1, 2), (3, 4)]);\nlet map2: BTreeMap<_, _> = [(1, 2), (3, 4)].into();\nassert_eq!(map1, map2);
    \n
    ","From<[(K, V); N]>","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V> FromIterator<(K, V)> for BTreeMap<K, V>
    where\n K: Ord,

    source§

    fn from_iter<T>(iter: T) -> BTreeMap<K, V>
    where\n T: IntoIterator<Item = (K, V)>,

    Creates a value from an iterator. Read more
    ","FromIterator<(K, V)>","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Hash for BTreeMap<K, V, A>
    where\n K: Hash,\n V: Hash,\n A: Allocator + Clone,

    source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, Q, V, A> Index<&Q> for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    source§

    fn index(&self, key: &Q) -> &V

    Returns a reference to the value corresponding to the supplied key.

    \n
    §Panics
    \n

    Panics if the key is not present in the BTreeMap.

    \n
    §

    type Output = V

    The returned type after indexing.
    ","Index<&Q>","bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<'de, K, V, E> IntoDeserializer<'de, E> for BTreeMap<K, V>
    where\n K: IntoDeserializer<'de, E> + Eq + Ord,\n V: IntoDeserializer<'de, E>,\n E: Error,

    §

    type Deserializer = MapDeserializer<'de, <BTreeMap<K, V> as IntoIterator>::IntoIter, E>

    The type of the deserializer being converted into.
    source§

    fn into_deserializer(\n self\n) -> <BTreeMap<K, V> as IntoDeserializer<'de, E>>::Deserializer

    Convert this value into a deserializer.
    ","IntoDeserializer<'de, E>","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> IntoIterator for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    source§

    fn into_iter(self) -> IntoIter<K, V, A> ⓘ

    Gets an owning iterator over the entries of the map, sorted by key.

    \n
    §

    type Item = (K, V)

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<K, V, A>

    Which kind of iterator are we turning this into?
    ","IntoIterator","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Ord for BTreeMap<K, V, A>
    where\n K: Ord,\n V: Ord,\n A: Allocator + Clone,

    source§

    fn cmp(&self, other: &BTreeMap<K, V, A>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> PartialEq for BTreeMap<K, V, A>
    where\n K: PartialEq,\n V: PartialEq,\n A: Allocator + Clone,

    source§

    fn eq(&self, other: &BTreeMap<K, V, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

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

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> PartialOrd for BTreeMap<K, V, A>
    where\n K: PartialOrd,\n V: PartialOrd,\n A: Allocator + Clone,

    source§

    fn partial_cmp(&self, other: &BTreeMap<K, V, A>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

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

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","bdk_chain::local_chain::ChangeSet"],["
    source§

    impl<K, V> Serialize for BTreeMap<K, V>
    where\n K: Serialize,\n V: Serialize,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_chain::local_chain::ChangeSet"],["
    1.0.0 · source§

    impl<K, V, A> Eq for BTreeMap<K, V, A>
    where\n K: Eq,\n V: Eq,\n A: Allocator + Clone,

    ","Eq","bdk_chain::local_chain::ChangeSet"],["
    1.64.0 · source§

    impl<K, V, A> UnwindSafe for BTreeMap<K, V, A>

    ","UnwindSafe","bdk_chain::local_chain::ChangeSet"]], +"bdk_wallet":[["
    §

    impl<K, V> Append for BTreeMap<K, V>
    where\n K: Ord,

    §

    fn append(&mut self, other: BTreeMap<K, V>)

    Append another object of the same type onto self.
    §

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    ","Append","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V> BTreeMap<K, V>

    1.0.0 (const: 1.66.0) · source

    pub const fn new() -> BTreeMap<K, V>

    Makes a new, empty BTreeMap.

    \n

    Does not allocate anything on its own.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\n\n// entries can now be inserted into the empty map\nmap.insert(1, \"a\");
    \n
    ",0,"bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, K, V>

    Gets an iterator over the entries of the map, sorted by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(3, \"c\");\nmap.insert(2, \"b\");\nmap.insert(1, \"a\");\n\nfor (key, value) in map.iter() {\n    println!(\"{key}: {value}\");\n}\n\nlet (first_key, first_value) = map.iter().next().unwrap();\nassert_eq!((*first_key, *first_value), (1, \"a\"));
    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, K, V>

    Gets a mutable iterator over the entries of the map, sorted by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::from([\n   (\"a\", 1),\n   (\"b\", 2),\n   (\"c\", 3),\n]);\n\n// add 10 to the value if the key isn't \"a\"\nfor (key, value) in map.iter_mut() {\n    if key != &\"a\" {\n        *value += 10;\n    }\n}
    \n
    1.0.0 · source

    pub fn keys(&self) -> Keys<'_, K, V>

    Gets an iterator over the keys of the map, in sorted order.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(2, \"b\");\na.insert(1, \"a\");\n\nlet keys: Vec<_> = a.keys().cloned().collect();\nassert_eq!(keys, [1, 2]);
    \n
    1.0.0 · source

    pub fn values(&self) -> Values<'_, K, V>

    Gets an iterator over the values of the map, in order by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"hello\");\na.insert(2, \"goodbye\");\n\nlet values: Vec<&str> = a.values().cloned().collect();\nassert_eq!(values, [\"hello\", \"goodbye\"]);
    \n
    1.10.0 · source

    pub fn values_mut(&mut self) -> ValuesMut<'_, K, V>

    Gets a mutable iterator over the values of the map, in order by key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, String::from(\"hello\"));\na.insert(2, String::from(\"goodbye\"));\n\nfor value in a.values_mut() {\n    value.push_str(\"!\");\n}\n\nlet values: Vec<String> = a.values().cloned().collect();\nassert_eq!(values, [String::from(\"hello!\"),\n                    String::from(\"goodbye!\")]);
    \n
    1.0.0 (const: unstable) · source

    pub fn len(&self) -> usize

    Returns the number of elements in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\nassert_eq!(a.len(), 0);\na.insert(1, \"a\");\nassert_eq!(a.len(), 1);
    \n
    1.0.0 (const: unstable) · source

    pub fn is_empty(&self) -> bool

    Returns true if the map contains no elements.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\nassert!(a.is_empty());\na.insert(1, \"a\");\nassert!(!a.is_empty());
    \n
    source

    pub fn lower_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    🔬This is a nightly-only experimental API. (btree_cursors)

    Returns a Cursor pointing at the gap before the smallest key\ngreater than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap before the smallest key greater than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap before the smallest key greater than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap before the smallest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet cursor = map.lower_bound(Bound::Included(&2));\nassert_eq!(cursor.peek_prev(), Some((&1, &\"a\")));\nassert_eq!(cursor.peek_next(), Some((&2, &\"b\")));\n\nlet cursor = map.lower_bound(Bound::Excluded(&2));\nassert_eq!(cursor.peek_prev(), Some((&2, &\"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &\"c\")));\n\nlet cursor = map.lower_bound(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), None);\nassert_eq!(cursor.peek_next(), Some((&1, &\"a\")));
    \n
    source

    pub fn lower_bound_mut<Q>(&mut self, bound: Bound<&Q>) -> CursorMut<'_, K, V, A>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    🔬This is a nightly-only experimental API. (btree_cursors)

    Returns a CursorMut pointing at the gap before the smallest key\ngreater than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap before the smallest key greater than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap before the smallest key greater than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap before the smallest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet mut map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet mut cursor = map.lower_bound_mut(Bound::Included(&2));\nassert_eq!(cursor.peek_prev(), Some((&1, &mut \"a\")));\nassert_eq!(cursor.peek_next(), Some((&2, &mut \"b\")));\n\nlet mut cursor = map.lower_bound_mut(Bound::Excluded(&2));\nassert_eq!(cursor.peek_prev(), Some((&2, &mut \"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &mut \"c\")));\n\nlet mut cursor = map.lower_bound_mut(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), None);\nassert_eq!(cursor.peek_next(), Some((&1, &mut \"a\")));
    \n
    source

    pub fn upper_bound<Q>(&self, bound: Bound<&Q>) -> Cursor<'_, K, V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    🔬This is a nightly-only experimental API. (btree_cursors)

    Returns a Cursor pointing at the gap after the greatest key\nsmaller than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap after the greatest key smaller than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap after the greatest key smaller than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap after the greatest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet cursor = map.upper_bound(Bound::Included(&3));\nassert_eq!(cursor.peek_prev(), Some((&3, &\"c\")));\nassert_eq!(cursor.peek_next(), Some((&4, &\"d\")));\n\nlet cursor = map.upper_bound(Bound::Excluded(&3));\nassert_eq!(cursor.peek_prev(), Some((&2, &\"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &\"c\")));\n\nlet cursor = map.upper_bound(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), Some((&4, &\"d\")));\nassert_eq!(cursor.peek_next(), None);
    \n
    source

    pub fn upper_bound_mut<Q>(&mut self, bound: Bound<&Q>) -> CursorMut<'_, K, V, A>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    🔬This is a nightly-only experimental API. (btree_cursors)

    Returns a CursorMut pointing at the gap after the greatest key\nsmaller than the given bound.

    \n

    Passing Bound::Included(x) will return a cursor pointing to the\ngap after the greatest key smaller than or equal to x.

    \n

    Passing Bound::Excluded(x) will return a cursor pointing to the\ngap after the greatest key smaller than x.

    \n

    Passing Bound::Unbounded will return a cursor pointing to the\ngap after the greatest key in the map.

    \n
    §Examples
    \n
    #![feature(btree_cursors)]\n\nuse std::collections::BTreeMap;\nuse std::ops::Bound;\n\nlet mut map = BTreeMap::from([\n    (1, \"a\"),\n    (2, \"b\"),\n    (3, \"c\"),\n    (4, \"d\"),\n]);\n\nlet mut cursor = map.upper_bound_mut(Bound::Included(&3));\nassert_eq!(cursor.peek_prev(), Some((&3, &mut \"c\")));\nassert_eq!(cursor.peek_next(), Some((&4, &mut \"d\")));\n\nlet mut cursor = map.upper_bound_mut(Bound::Excluded(&3));\nassert_eq!(cursor.peek_prev(), Some((&2, &mut \"b\")));\nassert_eq!(cursor.peek_next(), Some((&3, &mut \"c\")));\n\nlet mut cursor = map.upper_bound_mut(Bound::Unbounded);\nassert_eq!(cursor.peek_prev(), Some((&4, &mut \"d\")));\nassert_eq!(cursor.peek_next(), None);
    \n
    ",0,"bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn clear(&mut self)

    Clears the map, removing all elements.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.clear();\nassert!(a.is_empty());
    \n
    source

    pub const fn new_in(alloc: A) -> BTreeMap<K, V, A>

    🔬This is a nightly-only experimental API. (btreemap_alloc)

    Makes a new empty BTreeMap with a reasonable choice for B.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\nuse std::alloc::Global;\n\nlet mut map = BTreeMap::new_in(Global);\n\n// entries can now be inserted into the empty map\nmap.insert(1, \"a\");
    \n
    ",0,"bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V, A> BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    1.0.0 · source

    pub fn get<Q>(&self, key: &Q) -> Option<&V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns a reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get(&1), Some(&\"a\"));\nassert_eq!(map.get(&2), None);
    \n
    1.40.0 · source

    pub fn get_key_value<Q>(&self, k: &Q) -> Option<(&K, &V)>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns the key-value pair corresponding to the supplied key.

    \n

    The supplied key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get_key_value(&1), Some((&1, &\"a\")));\nassert_eq!(map.get_key_value(&2), None);
    \n
    1.66.0 · source

    pub fn first_key_value(&self) -> Option<(&K, &V)>
    where\n K: Ord,

    Returns the first key-value pair in the map.\nThe key in this pair is the minimum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.first_key_value(), None);\nmap.insert(1, \"b\");\nmap.insert(2, \"a\");\nassert_eq!(map.first_key_value(), Some((&1, &\"b\")));
    \n
    1.66.0 · source

    pub fn first_entry(&mut self) -> Option<OccupiedEntry<'_, K, V, A>>
    where\n K: Ord,

    Returns the first entry in the map for in-place manipulation.\nThe key of this entry is the minimum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nif let Some(mut entry) = map.first_entry() {\n    if *entry.key() > 0 {\n        entry.insert(\"first\");\n    }\n}\nassert_eq!(*map.get(&1).unwrap(), \"first\");\nassert_eq!(*map.get(&2).unwrap(), \"b\");
    \n
    1.66.0 · source

    pub fn pop_first(&mut self) -> Option<(K, V)>
    where\n K: Ord,

    Removes and returns the first element in the map.\nThe key of this element is the minimum key that was in the map.

    \n
    §Examples
    \n

    Draining elements in ascending order, while keeping a usable map each iteration.

    \n\n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nwhile let Some((key, _val)) = map.pop_first() {\n    assert!(map.iter().all(|(k, _v)| *k > key));\n}\nassert!(map.is_empty());
    \n
    1.66.0 · source

    pub fn last_key_value(&self) -> Option<(&K, &V)>
    where\n K: Ord,

    Returns the last key-value pair in the map.\nThe key in this pair is the maximum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"b\");\nmap.insert(2, \"a\");\nassert_eq!(map.last_key_value(), Some((&2, &\"a\")));
    \n
    1.66.0 · source

    pub fn last_entry(&mut self) -> Option<OccupiedEntry<'_, K, V, A>>
    where\n K: Ord,

    Returns the last entry in the map for in-place manipulation.\nThe key of this entry is the maximum key in the map.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nif let Some(mut entry) = map.last_entry() {\n    if *entry.key() > 0 {\n        entry.insert(\"last\");\n    }\n}\nassert_eq!(*map.get(&1).unwrap(), \"a\");\nassert_eq!(*map.get(&2).unwrap(), \"last\");
    \n
    1.66.0 · source

    pub fn pop_last(&mut self) -> Option<(K, V)>
    where\n K: Ord,

    Removes and returns the last element in the map.\nThe key of this element is the maximum key that was in the map.

    \n
    §Examples
    \n

    Draining elements in descending order, while keeping a usable map each iteration.

    \n\n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nmap.insert(2, \"b\");\nwhile let Some((key, _val)) = map.pop_last() {\n    assert!(map.iter().all(|(k, _v)| *k < key));\n}\nassert!(map.is_empty());
    \n
    1.0.0 · source

    pub fn contains_key<Q>(&self, key: &Q) -> bool
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns true if the map contains a value for the specified key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.contains_key(&1), true);\nassert_eq!(map.contains_key(&2), false);
    \n
    1.0.0 · source

    pub fn get_mut<Q>(&mut self, key: &Q) -> Option<&mut V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Returns a mutable reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nif let Some(x) = map.get_mut(&1) {\n    *x = \"b\";\n}\nassert_eq!(map[&1], \"b\");
    \n
    1.0.0 · source

    pub fn insert(&mut self, key: K, value: V) -> Option<V>
    where\n K: Ord,

    Inserts a key-value pair into the map.

    \n

    If the map did not have this key present, None is returned.

    \n

    If the map did have this key present, the value is updated, and the old\nvalue is returned. The key is not updated, though; this matters for\ntypes that can be == without being identical. See the module-level\ndocumentation for more.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.insert(37, \"a\"), None);\nassert_eq!(map.is_empty(), false);\n\nmap.insert(37, \"b\");\nassert_eq!(map.insert(37, \"c\"), Some(\"b\"));\nassert_eq!(map[&37], \"c\");
    \n
    source

    pub fn try_insert(\n &mut self,\n key: K,\n value: V\n) -> Result<&mut V, OccupiedError<'_, K, V, A>>
    where\n K: Ord,

    🔬This is a nightly-only experimental API. (map_try_insert)

    Tries to insert a key-value pair into the map, and returns\na mutable reference to the value in the entry.

    \n

    If the map already had this key present, nothing is updated, and\nan error containing the occupied entry and the value is returned.

    \n
    §Examples
    \n
    #![feature(map_try_insert)]\n\nuse std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nassert_eq!(map.try_insert(37, \"a\").unwrap(), &\"a\");\n\nlet err = map.try_insert(37, \"b\").unwrap_err();\nassert_eq!(err.entry.key(), &37);\nassert_eq!(err.entry.get(), &\"a\");\nassert_eq!(err.value, \"b\");
    \n
    1.0.0 · source

    pub fn remove<Q>(&mut self, key: &Q) -> Option<V>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Removes a key from the map, returning the value at the key if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove(&1), Some(\"a\"));\nassert_eq!(map.remove(&1), None);
    \n
    1.45.0 · source

    pub fn remove_entry<Q>(&mut self, key: &Q) -> Option<(K, V)>
    where\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    Removes a key from the map, returning the stored key and value if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but the ordering\non the borrowed form must match the ordering on the key type.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map = BTreeMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove_entry(&1), Some((1, \"a\")));\nassert_eq!(map.remove_entry(&1), None);
    \n
    1.53.0 · source

    pub fn retain<F>(&mut self, f: F)
    where\n K: Ord,\n F: FnMut(&K, &mut V) -> bool,

    Retains only the elements specified by the predicate.

    \n

    In other words, remove all pairs (k, v) for which f(&k, &mut v) returns false.\nThe elements are visited in ascending key order.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map: BTreeMap<i32, i32> = (0..8).map(|x| (x, x*10)).collect();\n// Keep only the elements with even-numbered keys.\nmap.retain(|&k, _| k % 2 == 0);\nassert!(map.into_iter().eq(vec![(0, 0), (2, 20), (4, 40), (6, 60)]));
    \n
    1.11.0 · source

    pub fn append(&mut self, other: &mut BTreeMap<K, V, A>)
    where\n K: Ord,\n A: Clone,

    Moves all elements from other into self, leaving other empty.

    \n

    If a key from other is already present in self, the respective\nvalue from self will be overwritten with the respective value from other.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\na.insert(3, \"c\"); // Note: Key (3) also present in b.\n\nlet mut b = BTreeMap::new();\nb.insert(3, \"d\"); // Note: Key (3) also present in a.\nb.insert(4, \"e\");\nb.insert(5, \"f\");\n\na.append(&mut b);\n\nassert_eq!(a.len(), 5);\nassert_eq!(b.len(), 0);\n\nassert_eq!(a[&1], \"a\");\nassert_eq!(a[&2], \"b\");\nassert_eq!(a[&3], \"d\"); // Note: \"c\" has been overwritten.\nassert_eq!(a[&4], \"e\");\nassert_eq!(a[&5], \"f\");
    \n
    1.17.0 · source

    pub fn range<T, R>(&self, range: R) -> Range<'_, K, V>
    where\n T: Ord + ?Sized,\n K: Borrow<T> + Ord,\n R: RangeBounds<T>,

    Constructs a double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax min..max, thus range(min..max) will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as (Bound<T>, Bound<T>), so for example\nrange((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive\nrange from 4 to 10.

    \n
    §Panics
    \n

    Panics if range start > end.\nPanics if range start == end and both bounds are Excluded.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\nuse std::ops::Bound::Included;\n\nlet mut map = BTreeMap::new();\nmap.insert(3, \"a\");\nmap.insert(5, \"b\");\nmap.insert(8, \"c\");\nfor (&key, &value) in map.range((Included(&4), Included(&8))) {\n    println!(\"{key}: {value}\");\n}\nassert_eq!(Some((&5, &\"b\")), map.range(4..).next());
    \n
    1.17.0 · source

    pub fn range_mut<T, R>(&mut self, range: R) -> RangeMut<'_, K, V>
    where\n T: Ord + ?Sized,\n K: Borrow<T> + Ord,\n R: RangeBounds<T>,

    Constructs a mutable double-ended iterator over a sub-range of elements in the map.\nThe simplest way is to use the range syntax min..max, thus range(min..max) will\nyield elements from min (inclusive) to max (exclusive).\nThe range may also be entered as (Bound<T>, Bound<T>), so for example\nrange((Excluded(4), Included(10))) will yield a left-exclusive, right-inclusive\nrange from 4 to 10.

    \n
    §Panics
    \n

    Panics if range start > end.\nPanics if range start == end and both bounds are Excluded.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut map: BTreeMap<&str, i32> =\n    [(\"Alice\", 0), (\"Bob\", 0), (\"Carol\", 0), (\"Cheryl\", 0)].into();\nfor (_, balance) in map.range_mut(\"B\"..\"Cheryl\") {\n    *balance += 100;\n}\nfor (name, balance) in &map {\n    println!(\"{name} => {balance}\");\n}
    \n
    1.0.0 · source

    pub fn entry(&mut self, key: K) -> Entry<'_, K, V, A>
    where\n K: Ord,

    Gets the given key’s corresponding entry in the map for in-place manipulation.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut count: BTreeMap<&str, usize> = BTreeMap::new();\n\n// count the number of occurrences of letters in the vec\nfor x in [\"a\", \"b\", \"a\", \"c\", \"a\", \"b\"] {\n    count.entry(x).and_modify(|curr| *curr += 1).or_insert(1);\n}\n\nassert_eq!(count[\"a\"], 3);\nassert_eq!(count[\"b\"], 2);\nassert_eq!(count[\"c\"], 1);
    \n
    1.11.0 · source

    pub fn split_off<Q>(&mut self, key: &Q) -> BTreeMap<K, V, A>
    where\n Q: Ord + ?Sized,\n K: Borrow<Q> + Ord,\n A: Clone,

    Splits the collection into two at the given key. Returns everything after the given key,\nincluding the key.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\na.insert(3, \"c\");\na.insert(17, \"d\");\na.insert(41, \"e\");\n\nlet b = a.split_off(&3);\n\nassert_eq!(a.len(), 2);\nassert_eq!(b.len(), 3);\n\nassert_eq!(a[&1], \"a\");\nassert_eq!(a[&2], \"b\");\n\nassert_eq!(b[&3], \"c\");\nassert_eq!(b[&17], \"d\");\nassert_eq!(b[&41], \"e\");
    \n
    source

    pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F, A>
    where\n K: Ord,\n F: FnMut(&K, &mut V) -> bool,

    🔬This is a nightly-only experimental API. (btree_extract_if)

    Creates an iterator that visits all elements (key-value pairs) in\nascending key order and uses a closure to determine if an element should\nbe removed. If the closure returns true, the element is removed from\nthe map and yielded. If the closure returns false, or panics, the\nelement remains in the map and will not be yielded.

    \n

    The iterator also lets you mutate the value of each element in the\nclosure, regardless of whether you choose to keep or remove it.

    \n

    If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

    \n
    §Examples
    \n

    Splitting a map into even and odd keys, reusing the original map:

    \n\n
    #![feature(btree_extract_if)]\nuse std::collections::BTreeMap;\n\nlet mut map: BTreeMap<i32, i32> = (0..8).map(|x| (x, x)).collect();\nlet evens: BTreeMap<_, _> = map.extract_if(|k, _v| k % 2 == 0).collect();\nlet odds = map;\nassert_eq!(evens.keys().copied().collect::<Vec<_>>(), [0, 2, 4, 6]);\nassert_eq!(odds.keys().copied().collect::<Vec<_>>(), [1, 3, 5, 7]);
    \n
    1.54.0 · source

    pub fn into_keys(self) -> IntoKeys<K, V, A>

    Creates a consuming iterator visiting all the keys, in sorted order.\nThe map cannot be used after calling this.\nThe iterator element type is K.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(2, \"b\");\na.insert(1, \"a\");\n\nlet keys: Vec<i32> = a.into_keys().collect();\nassert_eq!(keys, [1, 2]);
    \n
    1.54.0 · source

    pub fn into_values(self) -> IntoValues<K, V, A>

    Creates a consuming iterator visiting all the values, in order by key.\nThe map cannot be used after calling this.\nThe iterator element type is V.

    \n
    §Examples
    \n
    use std::collections::BTreeMap;\n\nlet mut a = BTreeMap::new();\na.insert(1, \"hello\");\na.insert(2, \"goodbye\");\n\nlet values: Vec<&str> = a.into_values().collect();\nassert_eq!(values, [\"hello\", \"goodbye\"]);
    \n
    ",0,"bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Clone for BTreeMap<K, V, A>
    where\n K: Clone,\n V: Clone,\n A: Allocator + Clone,

    source§

    fn clone(&self) -> BTreeMap<K, V, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Debug for BTreeMap<K, V, A>
    where\n K: Debug,\n V: Debug,\n A: Allocator + Clone,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V> Default for BTreeMap<K, V>

    source§

    fn default() -> BTreeMap<K, V>

    Creates an empty BTreeMap.

    \n
    ","Default","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<'de, K, V> Deserialize<'de> for BTreeMap<K, V>
    where\n K: Deserialize<'de> + Ord,\n V: Deserialize<'de>,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<BTreeMap<K, V>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.7.0 · source§

    impl<K, V, A> Drop for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more
    ","Drop","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.2.0 · source§

    impl<'a, K, V, A> Extend<(&'a K, &'a V)> for BTreeMap<K, V, A>
    where\n K: Ord + Copy,\n V: Copy,\n A: Allocator + Clone,

    source§

    fn extend<I>(&mut self, iter: I)
    where\n I: IntoIterator<Item = (&'a K, &'a V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (&'a K, &'a V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(&'a K, &'a V)>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Extend<(K, V)> for BTreeMap<K, V, A>
    where\n K: Ord,\n A: Allocator + Clone,

    source§

    fn extend<T>(&mut self, iter: T)
    where\n T: IntoIterator<Item = (K, V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (K, V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(K, V)>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.56.0 · source§

    impl<K, V, const N: usize> From<[(K, V); N]> for BTreeMap<K, V>
    where\n K: Ord,

    source§

    fn from(arr: [(K, V); N]) -> BTreeMap<K, V>

    Converts a [(K, V); N] into a BTreeMap<(K, V)>.

    \n\n
    use std::collections::BTreeMap;\n\nlet map1 = BTreeMap::from([(1, 2), (3, 4)]);\nlet map2: BTreeMap<_, _> = [(1, 2), (3, 4)].into();\nassert_eq!(map1, map2);
    \n
    ","From<[(K, V); N]>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V> FromIterator<(K, V)> for BTreeMap<K, V>
    where\n K: Ord,

    source§

    fn from_iter<T>(iter: T) -> BTreeMap<K, V>
    where\n T: IntoIterator<Item = (K, V)>,

    Creates a value from an iterator. Read more
    ","FromIterator<(K, V)>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Hash for BTreeMap<K, V, A>
    where\n K: Hash,\n V: Hash,\n A: Allocator + Clone,

    source§

    fn hash<H>(&self, state: &mut H)
    where\n H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, Q, V, A> Index<&Q> for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,\n K: Borrow<Q> + Ord,\n Q: Ord + ?Sized,

    source§

    fn index(&self, key: &Q) -> &V

    Returns a reference to the value corresponding to the supplied key.

    \n
    §Panics
    \n

    Panics if the key is not present in the BTreeMap.

    \n
    §

    type Output = V

    The returned type after indexing.
    ","Index<&Q>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    §

    impl IntoAssets for BTreeMap<DescriptorPublicKey, DescriptorSecretKey>

    §

    fn into_assets(self) -> Assets

    Convert self into a Assets struct
    ","IntoAssets","bdk_wallet::keys::KeyMap"],["
    source§

    impl<'de, K, V, E> IntoDeserializer<'de, E> for BTreeMap<K, V>
    where\n K: IntoDeserializer<'de, E> + Eq + Ord,\n V: IntoDeserializer<'de, E>,\n E: Error,

    §

    type Deserializer = MapDeserializer<'de, <BTreeMap<K, V> as IntoIterator>::IntoIter, E>

    The type of the deserializer being converted into.
    source§

    fn into_deserializer(\n self\n) -> <BTreeMap<K, V> as IntoDeserializer<'de, E>>::Deserializer

    Convert this value into a deserializer.
    ","IntoDeserializer<'de, E>","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> IntoIterator for BTreeMap<K, V, A>
    where\n A: Allocator + Clone,

    source§

    fn into_iter(self) -> IntoIter<K, V, A>

    Gets an owning iterator over the entries of the map, sorted by key.

    \n
    §

    type Item = (K, V)

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<K, V, A>

    Which kind of iterator are we turning this into?
    ","IntoIterator","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Ord for BTreeMap<K, V, A>
    where\n K: Ord,\n V: Ord,\n A: Allocator + Clone,

    source§

    fn cmp(&self, other: &BTreeMap<K, V, A>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> PartialEq for BTreeMap<K, V, A>
    where\n K: PartialEq,\n V: PartialEq,\n A: Allocator + Clone,

    source§

    fn eq(&self, other: &BTreeMap<K, V, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> PartialOrd for BTreeMap<K, V, A>
    where\n K: PartialOrd,\n V: PartialOrd,\n A: Allocator + Clone,

    source§

    fn partial_cmp(&self, other: &BTreeMap<K, V, A>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    source§

    impl<K, V> Serialize for BTreeMap<K, V>
    where\n K: Serialize,\n V: Serialize,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.0.0 · source§

    impl<K, V, A> Eq for BTreeMap<K, V, A>
    where\n K: Eq,\n V: Eq,\n A: Allocator + Clone,

    ","Eq","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"],["
    1.64.0 · source§

    impl<K, V, A> UnwindSafe for BTreeMap<K, V, A>

    ","UnwindSafe","bdk_wallet::descriptor::policy::ConditionMap","bdk_wallet::descriptor::policy::FoldedConditionMap","bdk_wallet::descriptor::HdKeyPaths","bdk_wallet::descriptor::TapKeyOrigins","bdk_wallet::keys::KeyMap"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.js new file mode 100644 index 0000000000..56f5f74f04 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_chain/indexed_tx_graph/struct.IndexedTxGraph.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"example_cli":[["
    §

    impl<A, I> Debug for IndexedTxGraph<A, I>
    where\n A: Debug,\n I: Debug,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","example_cli::KeychainTxGraph"],["
    §

    impl<A, I> Default for IndexedTxGraph<A, I>
    where\n I: Default,

    §

    fn default() -> IndexedTxGraph<A, I>

    Returns the “default value” for a type. Read more
    ","Default","example_cli::KeychainTxGraph"],["
    §

    impl<A, I> IndexedTxGraph<A, I>

    pub fn new(index: I) -> IndexedTxGraph<A, I>

    Construct a new [IndexedTxGraph] with a given index.

    \n

    pub fn graph(&self) -> &TxGraph<A>

    Get a reference of the internal transaction graph.

    \n
    ",0,"example_cli::KeychainTxGraph"],["
    §

    impl<A, I> IndexedTxGraph<A, I>
    where\n A: Anchor + AnchorFromBlockPosition,\n I: Indexer,\n <I as Indexer>::ChangeSet: Default + Append,

    Methods are available if the anchor (A) implements [AnchorFromBlockPosition].

    \n

    pub fn apply_block_relevant(\n &mut self,\n block: &Block,\n height: u32\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Batch insert all transactions of the given block of height, filtering out those that are\nirrelevant.

    \n

    Each inserted transaction’s anchor will be constructed from\n[AnchorFromBlockPosition::from_block_position].

    \n

    Relevancy is determined by the internal [Indexer::is_tx_relevant] implementation of I.\nIrrelevant transactions in txs will be ignored.

    \n

    pub fn apply_block(\n &mut self,\n block: Block,\n height: u32\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Batch insert all transactions of the given block of height.

    \n

    Each inserted transaction’s anchor will be constructed from\n[AnchorFromBlockPosition::from_block_position].

    \n

    To only insert relevant transactions, use apply_block_relevant instead.

    \n
    ",0,"example_cli::KeychainTxGraph"],["
    §

    impl<A, I> IndexedTxGraph<A, I>
    where\n A: Anchor,\n I: Indexer,

    pub fn apply_changeset(\n &mut self,\n changeset: ChangeSet<A, <I as Indexer>::ChangeSet>\n)

    Applies the [ChangeSet] to the [IndexedTxGraph].

    \n

    pub fn initial_changeset(&self) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Determines the [ChangeSet] between self and an empty [IndexedTxGraph].

    \n
    ",0,"example_cli::KeychainTxGraph"],["
    §

    impl<A, I> IndexedTxGraph<A, I>
    where\n A: Anchor,\n I: Indexer,\n <I as Indexer>::ChangeSet: Default + Append,

    pub fn apply_update(\n &mut self,\n update: TxGraph<A>\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Apply an update directly.

    \n

    update is a [TxGraph<A>] and the resultant changes is returned as [ChangeSet].

    \n

    pub fn insert_txout(\n &mut self,\n outpoint: OutPoint,\n txout: TxOut\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Insert a floating txout of given outpoint.

    \n

    pub fn insert_tx(\n &mut self,\n tx: Transaction\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Insert and index a transaction into the graph.

    \n

    pub fn insert_anchor(\n &mut self,\n txid: Txid,\n anchor: A\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Insert an anchor for a given transaction.

    \n

    pub fn insert_seen_at(\n &mut self,\n txid: Txid,\n seen_at: u64\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Insert a unix timestamp of when a transaction is seen in the mempool.

    \n

    This is used for transaction conflict resolution in [TxGraph] where the transaction with\nthe later last-seen is prioritized.

    \n

    pub fn batch_insert_relevant<'t>(\n &mut self,\n txs: impl IntoIterator<Item = (&'t Transaction, impl IntoIterator<Item = A>)>\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Batch insert transactions, filtering out those that are irrelevant.

    \n

    Relevancy is determined by the [Indexer::is_tx_relevant] implementation of I. Irrelevant\ntransactions in txs will be ignored. txs do not need to be in topological order.

    \n

    pub fn batch_insert_relevant_unconfirmed<'t>(\n &mut self,\n unconfirmed_txs: impl IntoIterator<Item = (&'t Transaction, u64)>\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Batch insert unconfirmed transactions, filtering out those that are irrelevant.

    \n

    Relevancy is determined by the internal [Indexer::is_tx_relevant] implementation of I.\nIrrelevant transactions in txs will be ignored.

    \n

    Items of txs are tuples containing the transaction and a last seen timestamp. The\nlast seen communicates when the transaction is last seen in the mempool which is used for\nconflict-resolution in [TxGraph] (refer to [TxGraph::insert_seen_at] for details).

    \n

    pub fn batch_insert_unconfirmed(\n &mut self,\n txs: impl IntoIterator<Item = (Transaction, u64)>\n) -> ChangeSet<A, <I as Indexer>::ChangeSet>

    Batch insert unconfirmed transactions.

    \n

    Items of txs are tuples containing the transaction and a last seen timestamp. The\nlast seen communicates when the transaction is last seen in the mempool which is used for\nconflict-resolution in [TxGraph] (refer to [TxGraph::insert_seen_at] for details).

    \n

    To filter out irrelevant transactions, use batch_insert_relevant_unconfirmed instead.

    \n
    ",0,"example_cli::KeychainTxGraph"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_persist/changeset/struct.CombinedChangeSet.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_persist/changeset/struct.CombinedChangeSet.js new file mode 100644 index 0000000000..1147a475c6 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_persist/changeset/struct.CombinedChangeSet.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_wallet":[["
    §

    impl<K, A> Append for CombinedChangeSet<K, A>
    where\n K: Ord,\n A: Anchor,

    §

    fn append(&mut self, other: CombinedChangeSet<K, A>)

    Append another object of the same type onto self.
    §

    fn is_empty(&self) -> bool

    Returns whether the structure is considered empty.
    ","Append","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> Clone for CombinedChangeSet<K, A>
    where\n K: Clone,\n A: Clone,

    §

    fn clone(&self) -> CombinedChangeSet<K, A>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> Debug for CombinedChangeSet<K, A>
    where\n K: Debug,\n A: Debug,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> Default for CombinedChangeSet<K, A>

    §

    fn default() -> CombinedChangeSet<K, A>

    Returns the “default value” for a type. Read more
    ","Default","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<'de, K, A> Deserialize<'de> for CombinedChangeSet<K, A>
    where\n A: Ord + Deserialize<'de>,\n K: Ord + Deserialize<'de>,

    §

    fn deserialize<__D>(\n __deserializer: __D\n) -> Result<CombinedChangeSet<K, A>, <__D as Deserializer<'de>>::Error>
    where\n __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> From<BTreeMap<u32, Option<BlockHash>>> for CombinedChangeSet<K, A>

    §

    fn from(chain: BTreeMap<u32, Option<BlockHash>>) -> CombinedChangeSet<K, A>

    Converts to this type from the input type.
    ","From>>","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> From<ChangeSet<A, ChangeSet<K>>> for CombinedChangeSet<K, A>

    §

    fn from(indexed_tx_graph: ChangeSet<A, ChangeSet<K>>) -> CombinedChangeSet<K, A>

    Converts to this type from the input type.
    ","From>>","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> PartialEq for CombinedChangeSet<K, A>
    where\n K: PartialEq,\n A: PartialEq,

    §

    fn eq(&self, other: &CombinedChangeSet<K, A>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> Serialize for CombinedChangeSet<K, A>
    where\n A: Ord + Serialize,\n K: Ord + Serialize,

    §

    fn serialize<__S>(\n &self,\n __serializer: __S\n) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
    where\n __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::wallet::ChangeSet"],["
    §

    impl<K, A> StructuralPartialEq for CombinedChangeSet<K, A>

    ","StructuralPartialEq","bdk_wallet::wallet::ChangeSet"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/descriptor/enum.Descriptor.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/descriptor/enum.Descriptor.js new file mode 100644 index 0000000000..b2de6a042d --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/descriptor/enum.Descriptor.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_wallet":[["
    §

    impl<Pk> Clone for Descriptor<Pk>
    where\n Pk: Clone + MiniscriptKey,

    §

    fn clone(&self) -> Descriptor<Pk>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Debug for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DefiniteDescriptorKey>

    pub fn derived_descriptor<C>(\n &self,\n secp: &Secp256k1<C>\n) -> Result<Descriptor<PublicKey>, ConversionError>
    where\n C: Verification,

    Convert all the public keys in the descriptor to [bitcoin::PublicKey] by deriving them or\notherwise converting them. All [bitcoin::secp256k1::XOnlyPublicKey]s are converted to by adding a\ndefault(0x02) y-coordinate.

    \n
    §Examples
    \n
    use miniscript::descriptor::{Descriptor, DescriptorPublicKey};\nuse miniscript::bitcoin::secp256k1;\nuse std::str::FromStr;\n\n// test from bip 86\nlet secp = secp256k1::Secp256k1::verification_only();\nlet descriptor = Descriptor::<DescriptorPublicKey>::from_str(\"tr(xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/*)\")\n    .expect(\"Valid ranged descriptor\");\nlet result = descriptor.at_derivation_index(0).unwrap().derived_descriptor(&secp).expect(\"Non-hardened derivation\");\nassert_eq!(result.to_string(), \"tr(03cc8a4bc64d897bddc5fbc2f670f7a8ba0b386779106cf1223c6fc5d7cd6fc115)#6qm9h8ym\");
    \n
    §Errors
    \n

    This function will return an error if hardened derivation is attempted.

    \n
    ",0,"bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DefiniteDescriptorKey>

    pub fn plan<P>(\n self,\n provider: &P\n) -> Result<Plan, Descriptor<DefiniteDescriptorKey>>
    where\n P: AssetProvider<DefiniteDescriptorKey>,

    Returns a plan if the provided assets are sufficient to produce a non-malleable satisfaction

    \n

    If the assets aren’t sufficient for generating a Plan, the descriptor is returned

    \n

    pub fn plan_mall<P>(\n self,\n provider: &P\n) -> Result<Plan, Descriptor<DefiniteDescriptorKey>>
    where\n P: AssetProvider<DefiniteDescriptorKey>,

    Returns a plan if the provided assets are sufficient to produce a malleable satisfaction

    \n

    If the assets aren’t sufficient for generating a Plan, the descriptor is returned

    \n
    ",0,"bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl Descriptor<DescriptorPublicKey>

    pub fn is_deriveable(&self) -> bool

    👎Deprecated: use has_wildcards instead

    Whether or not the descriptor has any wildcards

    \n

    pub fn has_wildcard(&self) -> bool

    Whether or not the descriptor has any wildcards i.e. /*.

    \n

    pub fn at_derivation_index(\n &self,\n index: u32\n) -> Result<Descriptor<DefiniteDescriptorKey>, ConversionError>

    Replaces all wildcards (i.e. /*) in the descriptor with a particular derivation index,\nturning it into a definite descriptor.

    \n
    §Errors
    \n
      \n
    • If index ≥ 2^31
    • \n
    \n

    pub fn derive(\n &self,\n index: u32\n) -> Result<Descriptor<DefiniteDescriptorKey>, ConversionError>

    👎Deprecated: use at_derivation_index instead

    Deprecated name for Self::at_derivation_index.

    \n

    pub fn derived_descriptor<C>(\n &self,\n secp: &Secp256k1<C>,\n index: u32\n) -> Result<Descriptor<PublicKey>, ConversionError>
    where\n C: Verification,

    Convert all the public keys in the descriptor to [bitcoin::PublicKey] by deriving them or\notherwise converting them. All [bitcoin::secp256k1::XOnlyPublicKey]s are converted to by adding a\ndefault(0x02) y-coordinate.

    \n

    This is a shorthand for:

    \n\n
        .expect(\"Valid ranged descriptor\");\nlet derived_descriptor = descriptor.at_derivation_index(index).unwrap().derived_descriptor(&secp).unwrap();
    \n

    and is only here really here for backwards compatbility.\nSee at_derivation_index and [derived_descriptor] for more documentation.

    \n
    §Errors
    \n

    This function will return an error if hardened derivation is attempted.

    \n

    pub fn parse_descriptor<C>(\n secp: &Secp256k1<C>,\n s: &str\n) -> Result<(Descriptor<DescriptorPublicKey>, BTreeMap<DescriptorPublicKey, DescriptorSecretKey>), Error>
    where\n C: Signing,

    Parse a descriptor that may contain secret keys

    \n

    Internally turns every secret key found into the corresponding public key and then returns a\na descriptor that only contains public keys and a map to lookup the secret key given a public key.

    \n

    pub fn to_string_with_secret(\n &self,\n key_map: &BTreeMap<DescriptorPublicKey, DescriptorSecretKey>\n) -> String

    Serialize a descriptor to string with its secret keys

    \n

    pub fn find_derivation_index_for_spk<C>(\n &self,\n secp: &Secp256k1<C>,\n script_pubkey: &Script,\n range: Range<u32>\n) -> Result<Option<(u32, Descriptor<PublicKey>)>, ConversionError>
    where\n C: Verification,

    Utility method for deriving the descriptor at each index in a range to find one matching\nscript_pubkey.

    \n

    If it finds a match then it returns the index it was derived at and the concrete\ndescriptor at that index. If the descriptor is non-derivable then it will simply check the\nscript pubkey against the descriptor and return it if it matches (in this case the index\nreturned will be meaningless).

    \n

    pub fn is_multipath(&self) -> bool

    Whether this descriptor contains a key that has multiple derivation paths.

    \n

    pub fn into_single_descriptors(\n self\n) -> Result<Vec<Descriptor<DescriptorPublicKey>>, Error>

    Get as many descriptors as different paths in this descriptor.

    \n

    For multipath descriptors it will return as many descriptors as there is\n“parallel” paths. For regular descriptors it will just return itself.

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<Pk> Descriptor<Pk>
    where\n Pk: MiniscriptKey + ToPublicKey,

    pub fn address(&self, network: Network) -> Result<Address, Error>

    Computes the Bitcoin address of the descriptor, if one exists

    \n

    Some descriptors like pk() don’t have an address.

    \n
    §Errors
    \n

    For raw/bare descriptors that don’t have an address.

    \n

    pub fn script_pubkey(&self) -> ScriptBuf

    Computes the scriptpubkey of the descriptor.

    \n

    pub fn unsigned_script_sig(&self) -> ScriptBuf

    Computes the scriptSig that will be in place for an unsigned input\nspending an output with this descriptor. For pre-segwit descriptors,\nwhich use the scriptSig for signatures, this returns the empty script.

    \n

    This is used in Segwit transactions to produce an unsigned transaction\nwhose txid will not change during signing (since only the witness data\nwill change).

    \n

    pub fn explicit_script(&self) -> Result<ScriptBuf, Error>

    Computes the the underlying script before any hashing is done. For\nBare, Pkh and Wpkh this is the scriptPubkey; for ShWpkh and Sh\nthis is the redeemScript; for the others it is the witness script.

    \n
    §Errors
    \n

    If the descriptor is a taproot descriptor.

    \n

    pub fn script_code(&self) -> Result<ScriptBuf, Error>

    Computes the scriptCode of a transaction output.

    \n

    The scriptCode is the Script of the previous transaction output being\nserialized in the sighash when evaluating a CHECKSIG & co. OP code.

    \n
    §Errors
    \n

    If the descriptor is a taproot descriptor.

    \n

    pub fn get_satisfaction<S>(\n &self,\n satisfier: S\n) -> Result<(Vec<Vec<u8>>, ScriptBuf), Error>
    where\n S: Satisfier<Pk>,

    Returns satisfying non-malleable witness and scriptSig to spend an\noutput controlled by the given descriptor if it possible to\nconstruct one using the satisfier S.

    \n

    pub fn get_satisfaction_mall<S>(\n &self,\n satisfier: S\n) -> Result<(Vec<Vec<u8>>, ScriptBuf), Error>
    where\n S: Satisfier<Pk>,

    Returns a possilbly mallable satisfying non-malleable witness and scriptSig to spend an\noutput controlled by the given descriptor if it possible to\nconstruct one using the satisfier S.

    \n

    pub fn satisfy<S>(&self, txin: &mut TxIn, satisfier: S) -> Result<(), Error>
    where\n S: Satisfier<Pk>,

    Attempts to produce a non-malleable satisfying witness and scriptSig to spend an\noutput controlled by the given descriptor; add the data to a given\nTxIn output.

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    pub fn new_pk(pk: Pk) -> Descriptor<Pk>

    Create a new pk descriptor

    \n

    pub fn new_pkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new PkH descriptor

    \n

    pub fn new_wpkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new Wpkh descriptor\nWill return Err if uncompressed key is used

    \n

    pub fn new_sh_wpkh(pk: Pk) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wpkh from Pk.\nErrors when uncompressed keys are supplied

    \n

    pub fn new_sh(ms: Miniscript<Pk, Legacy>) -> Result<Descriptor<Pk>, Error>

    Create a new sh for a given redeem script\nErrors when miniscript exceeds resource limits under p2sh context\nor does not type check at the top level

    \n

    pub fn new_wsh(ms: Miniscript<Pk, Segwitv0>) -> Result<Descriptor<Pk>, Error>

    Create a new wsh descriptor from witness script\nErrors when miniscript exceeds resource limits under p2sh context\nor does not type check at the top level

    \n

    pub fn new_sh_wsh(ms: Miniscript<Pk, Segwitv0>) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wsh descriptor with witness script\nErrors when miniscript exceeds resource limits under wsh context\nor does not type check at the top level

    \n

    pub fn new_bare(ms: Miniscript<Pk, BareCtx>) -> Result<Descriptor<Pk>, Error>

    Create a new bare descriptor from witness script\nErrors when miniscript exceeds resource limits under bare context\nor does not type check at the top level

    \n

    pub fn new_sh_with_wpkh(wpkh: Wpkh<Pk>) -> Descriptor<Pk>

    Create a new sh wrapper for the given wpkh descriptor

    \n

    pub fn new_sh_with_wsh(wsh: Wsh<Pk>) -> Descriptor<Pk>

    Create a new sh wrapper for the given wsh descriptor

    \n

    pub fn new_sh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

    Create a new sh sortedmulti descriptor with threshold k\nand Vec of pks.\nErrors when miniscript exceeds resource limits under p2sh context

    \n

    pub fn new_sh_wsh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

    Create a new sh wrapped wsh sortedmulti descriptor from threshold\nk and Vec of pks\nErrors when miniscript exceeds resource limits under segwit context

    \n

    pub fn new_wsh_sortedmulti(\n k: usize,\n pks: Vec<Pk>\n) -> Result<Descriptor<Pk>, Error>

    Create a new wsh sorted multi descriptor\nErrors when miniscript exceeds resource limits under p2sh context

    \n

    pub fn new_tr(\n key: Pk,\n script: Option<TapTree<Pk>>\n) -> Result<Descriptor<Pk>, Error>

    Create new tr descriptor\nErrors when miniscript exceeds resource limits under Tap context

    \n

    pub fn desc_type(&self) -> DescriptorType

    Get the [DescriptorType] of Descriptor

    \n

    pub fn sanity_check(&self) -> Result<(), Error>

    Checks whether the descriptor is safe.

    \n

    Checks whether all the spend paths in the descriptor are possible on the\nbitcoin network under the current standardness and consensus rules. Also\nchecks whether the descriptor requires signatures on all spend paths and\nwhether the script is malleable.

    \n

    In general, all the guarantees of miniscript hold only for safe scripts.\nThe signer may not be able to find satisfactions even if one exists.

    \n

    pub fn max_weight_to_satisfy(&self) -> Result<usize, Error>

    Computes an upper bound on the difference between a non-satisfied\nTxIn’s segwit_weight and a satisfied TxIn’s segwit_weight

    \n

    Since this method uses segwit_weight instead of legacy_weight,\nif you want to include only legacy inputs in your transaction,\nyou should remove 1WU from each input’s max_weight_to_satisfy\nfor a more accurate estimate.

    \n

    In other words, for segwit inputs or legacy inputs included in\nsegwit transactions, the following will hold for each input if\nthat input was satisfied with the largest possible witness:

    \n\n
    ⓘ
    for i in 0..transaction.input.len() {\n    assert_eq!(\n        descriptor_for_input[i].max_weight_to_satisfy(),\n        transaction.input[i].segwit_weight() - TxIn::default().segwit_weight()\n    );\n}
    \n

    Instead, for legacy transactions, the following will hold for each input\nif that input was satisfied with the largest possible witness:

    \n\n
    ⓘ
    for i in 0..transaction.input.len() {\n    assert_eq!(\n        descriptor_for_input[i].max_weight_to_satisfy(),\n        transaction.input[i].legacy_weight() - TxIn::default().legacy_weight()\n    );\n}
    \n

    Assumes all ECDSA signatures are 73 bytes, including push opcode and\nsighash suffix.\nAssumes all Schnorr signatures are 66 bytes, including push opcode and\nsighash suffix.

    \n
    §Errors
    \n

    When the descriptor is impossible to safisfy (ex: sh(OP_FALSE)).

    \n

    pub fn max_satisfaction_weight(&self) -> Result<usize, Error>

    👎Deprecated: use max_weight_to_satisfy instead

    Computes an upper bound on the weight of a satisfying witness to the\ntransaction.

    \n

    Assumes all ec-signatures are 73 bytes, including push opcode and\nsighash suffix. Includes the weight of the VarInts encoding the\nscriptSig and witness stack length.

    \n
    §Errors
    \n

    When the descriptor is impossible to safisfy (ex: sh(OP_FALSE)).

    \n
    ",0,"bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl DescriptorExt for Descriptor<DescriptorPublicKey>

    §

    fn dust_value(&self) -> u64

    Returns the minimum value (in satoshis) at which an output is broadcastable.\nPanics if the descriptor wildcard is hardened.
    §

    fn descriptor_id(&self) -> DescriptorId

    Returns the descriptor id, calculated as the sha256 of the descriptor, checksum not\nincluded.
    ","DescriptorExt","bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<'de, Pk> Deserialize<'de> for Descriptor<Pk>
    where\n Pk: MiniscriptKey + FromStr,\n <Pk as MiniscriptKey>::Sha256: FromStr,\n <Pk as MiniscriptKey>::Hash256: FromStr,\n <Pk as MiniscriptKey>::Ripemd160: FromStr,\n <Pk as MiniscriptKey>::Hash160: FromStr,\n <Pk as FromStr>::Err: Display,\n <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: Display,\n <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: Display,\n <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: Display,\n <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: Display,

    §

    fn deserialize<D>(\n deserializer: D\n) -> Result<Descriptor<Pk>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Display for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Display","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    source§

    impl ExtractPolicy for Descriptor<DescriptorPublicKey>

    source§

    fn extract_policy(\n &self,\n signers: &SignersContainer,\n build_sat: BuildSatisfaction<'_>,\n secp: &Secp256k1<All>\n) -> Result<Option<Policy>, Error>

    Extract the spending policy
    ","ExtractPolicy","bdk_wallet::descriptor::ExtendedDescriptor"],["
    §

    impl<Pk> ForEachKey<Pk> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn for_each_key<'a, F>(&'a self, pred: F) -> bool
    where\n F: FnMut(&'a Pk) -> bool,

    Run a predicate on every key in the descriptor, returning whether\nthe predicate returned true for every key
    §

    fn for_any_key<'a, F>(&'a self, pred: F) -> bool
    where\n F: FnMut(&'a Pk) -> bool,\n Pk: 'a,

    Run a predicate on every key in the descriptor, returning whether\nthe predicate returned true for any key
    ","ForEachKey","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Bare<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Bare<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Pkh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Pkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Sh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Sh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Tr<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Tr<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Wpkh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Wpkh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> From<Wsh<Pk>> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn from(inner: Wsh<Pk>) -> Descriptor<Pk>

    Converts to this type from the input type.
    ","From>","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> FromStr for Descriptor<Pk>
    where\n Pk: MiniscriptKey + FromStr,\n <Pk as MiniscriptKey>::Sha256: FromStr,\n <Pk as MiniscriptKey>::Hash256: FromStr,\n <Pk as MiniscriptKey>::Ripemd160: FromStr,\n <Pk as MiniscriptKey>::Hash160: FromStr,\n <Pk as FromStr>::Err: ToString,\n <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: ToString,\n <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: ToString,\n <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: ToString,\n <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: ToString,

    §

    type Err = Error

    The associated error which can be returned from parsing.
    §

    fn from_str(s: &str) -> Result<Descriptor<Pk>, Error>

    Parses a string s to return a value of this type. Read more
    ","FromStr","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> FromTree for Descriptor<Pk>
    where\n Pk: MiniscriptKey + FromStr,\n <Pk as MiniscriptKey>::Sha256: FromStr,\n <Pk as MiniscriptKey>::Hash256: FromStr,\n <Pk as MiniscriptKey>::Ripemd160: FromStr,\n <Pk as MiniscriptKey>::Hash160: FromStr,\n <Pk as FromStr>::Err: ToString,\n <<Pk as MiniscriptKey>::Sha256 as FromStr>::Err: ToString,\n <<Pk as MiniscriptKey>::Hash256 as FromStr>::Err: ToString,\n <<Pk as MiniscriptKey>::Ripemd160 as FromStr>::Err: ToString,\n <<Pk as MiniscriptKey>::Hash160 as FromStr>::Err: ToString,

    §

    fn from_tree(top: &Tree<'_>) -> Result<Descriptor<Pk>, Error>

    Parse an expression tree into a descriptor.

    \n
    ","FromTree","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Hash for Descriptor<Pk>
    where\n Pk: Hash + MiniscriptKey,

    §

    fn hash<__H>(&self, state: &mut __H)
    where\n __H: Hasher,

    Feeds this value into the given Hasher. Read more
    1.3.0 · source§

    fn hash_slice<H>(data: &[Self], state: &mut H)
    where\n H: Hasher,\n Self: Sized,

    Feeds a slice of this type into the given Hasher. Read more
    ","Hash","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Liftable<Pk> for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn lift(&self) -> Result<Policy<Pk>, Error>

    Converts this object into an abstract policy.
    ","Liftable","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Ord for Descriptor<Pk>
    where\n Pk: Ord + MiniscriptKey,

    §

    fn cmp(&self, other: &Descriptor<Pk>) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where\n Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where\n Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    ","Ord","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> PartialEq for Descriptor<Pk>
    where\n Pk: PartialEq + MiniscriptKey,

    §

    fn eq(&self, other: &Descriptor<Pk>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> PartialOrd for Descriptor<Pk>
    where\n Pk: PartialOrd + MiniscriptKey,

    §

    fn partial_cmp(&self, other: &Descriptor<Pk>) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
    ","PartialOrd","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<'de, Pk> Serialize for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    §

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<P, Q> TranslatePk<P, Q> for Descriptor<P>
    where\n P: MiniscriptKey,\n Q: MiniscriptKey,

    §

    fn translate_pk<T, E>(\n &self,\n t: &mut T\n) -> Result<<Descriptor<P> as TranslatePk<P, Q>>::Output, TranslateErr<E>>
    where\n T: Translator<P, Q, E>,

    Converts a descriptor using abstract keys to one using specific keys.

    \n
    §

    type Output = Descriptor<Q>

    The associated output type. This must be Self<Q>.
    ","TranslatePk","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> Eq for Descriptor<Pk>
    where\n Pk: Eq + MiniscriptKey,

    ","Eq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"],["
    §

    impl<Pk> StructuralPartialEq for Descriptor<Pk>
    where\n Pk: MiniscriptKey,

    ","StructuralPartialEq","bdk_wallet::descriptor::ExtendedDescriptor","bdk_wallet::descriptor::DerivedDescriptor"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.js new file mode 100644 index 0000000000..33eb80efb7 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/coin_selection/struct.BranchAndBoundCoinSelection.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_wallet":[["
    source§

    impl BranchAndBoundCoinSelection

    source

    pub fn new(size_of_change: u64) -> Self

    Create new instance with target size for change output

    \n
    ",0,"bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Clone for BranchAndBoundCoinSelection

    source§

    fn clone(&self) -> BranchAndBoundCoinSelection

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl CoinSelectionAlgorithm for BranchAndBoundCoinSelection

    source§

    fn coin_select(\n &self,\n required_utxos: Vec<WeightedUtxo>,\n optional_utxos: Vec<WeightedUtxo>,\n fee_rate: FeeRate,\n target_amount: u64,\n drain_script: &Script\n) -> Result<CoinSelectionResult, Error>

    Perform the coin selection Read more
    ","CoinSelectionAlgorithm","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Debug for BranchAndBoundCoinSelection

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"],["
    source§

    impl Default for BranchAndBoundCoinSelection

    source§

    fn default() -> Self

    Returns the “default value” for a type. Read more
    ","Default","bdk_wallet::wallet::coin_selection::DefaultCoinSelectionAlgorithm"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/export/struct.FullyNodedExport.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/export/struct.FullyNodedExport.js new file mode 100644 index 0000000000..e0a2afe26c --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/bdk_wallet/wallet/export/struct.FullyNodedExport.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_wallet":[["
    source§

    impl Debug for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl<'de> Deserialize<'de> for FullyNodedExport

    source§

    fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
    where\n __D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl Display for FullyNodedExport

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    ","Display","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl FromStr for FullyNodedExport

    §

    type Err = Error

    The associated error which can be returned from parsing.
    source§

    fn from_str(s: &str) -> Result<Self, Self::Err>

    Parses a string s to return a value of this type. Read more
    ","FromStr","bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl FullyNodedExport

    source

    pub fn export_wallet(\n wallet: &Wallet,\n label: &str,\n include_blockheight: bool\n) -> Result<Self, &'static str>

    Export a wallet

    \n

    This function returns an error if it determines that the wallet’s descriptor(s) are not\nsupported by Bitcoin Core or don’t follow the standard derivation paths defined by BIP44\nand others.

    \n

    If include_blockheight is true, this function will look into the wallet’s database\nfor the oldest transaction it knows and use that as the earliest block to rescan.

    \n

    If the database is empty or include_blockheight is false, the blockheight field\nreturned will be 0.

    \n
    source

    pub fn descriptor(&self) -> String

    Return the external descriptor

    \n
    source

    pub fn change_descriptor(&self) -> Option<String>

    Return the internal descriptor, if present

    \n
    ",0,"bdk_wallet::wallet::export::WalletExport"],["
    source§

    impl Serialize for FullyNodedExport

    source§

    fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
    where\n __S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::wallet::export::WalletExport"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/core/ops/function/trait.Fn.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/core/ops/function/trait.Fn.js new file mode 100644 index 0000000000..200ec660d5 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/core/ops/function/trait.Fn.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_coin_select":[] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/collections/hash/map/struct.HashMap.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/collections/hash/map/struct.HashMap.js new file mode 100644 index 0000000000..8e6a1ce5e0 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/collections/hash/map/struct.HashMap.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_chain":[["
    1.0.0 · source§

    impl<K, V, S> Clone for HashMap<K, V, S>
    where\n K: Clone,\n V: Clone,\n S: Clone,

    source§

    fn clone(&self) -> HashMap<K, V, S>

    Returns a copy of the value. Read more
    source§

    fn clone_from(&mut self, source: &HashMap<K, V, S>)

    Performs copy-assignment from source. Read more
    ","Clone","bdk_chain::spk_client::TxCache"],["
    1.0.0 · source§

    impl<K, V, S> Debug for HashMap<K, V, S>
    where\n K: Debug,\n V: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_chain::spk_client::TxCache"],["
    1.0.0 · source§

    impl<K, V, S> Default for HashMap<K, V, S>
    where\n S: Default,

    source§

    fn default() -> HashMap<K, V, S>

    Creates an empty HashMap<K, V, S>, with the Default value for the hasher.

    \n
    ","Default","bdk_chain::spk_client::TxCache"],["
    source§

    impl<'de, K, V, S> Deserialize<'de> for HashMap<K, V, S>
    where\n K: Deserialize<'de> + Eq + Hash,\n V: Deserialize<'de>,\n S: BuildHasher + Default,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<HashMap<K, V, S>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_chain::spk_client::TxCache"],["
    1.4.0 · source§

    impl<'a, K, V, S> Extend<(&'a K, &'a V)> for HashMap<K, V, S>
    where\n K: Eq + Hash + Copy,\n V: Copy,\n S: BuildHasher,

    source§

    fn extend<T>(&mut self, iter: T)
    where\n T: IntoIterator<Item = (&'a K, &'a V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (&'a K, &'a V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(&'a K, &'a V)>","bdk_chain::spk_client::TxCache"],["
    1.0.0 · source§

    impl<K, V, S> Extend<(K, V)> for HashMap<K, V, S>
    where\n K: Eq + Hash,\n S: BuildHasher,

    Inserts all new key-values from the iterator and replaces values with existing\nkeys with new values returned from the iterator.

    \n
    source§

    fn extend<T>(&mut self, iter: T)
    where\n T: IntoIterator<Item = (K, V)>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: (K, V))

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<(K, V)>","bdk_chain::spk_client::TxCache"],["
    1.56.0 · source§

    impl<K, V, const N: usize> From<[(K, V); N]> for HashMap<K, V>
    where\n K: Eq + Hash,

    source§

    fn from(arr: [(K, V); N]) -> HashMap<K, V>

    §Examples
    \n
    use std::collections::HashMap;\n\nlet map1 = HashMap::from([(1, 2), (3, 4)]);\nlet map2: HashMap<_, _> = [(1, 2), (3, 4)].into();\nassert_eq!(map1, map2);
    \n
    ","From<[(K, V); N]>","bdk_chain::spk_client::TxCache"],["
    1.0.0 · source§

    impl<K, V, S> FromIterator<(K, V)> for HashMap<K, V, S>
    where\n K: Eq + Hash,\n S: BuildHasher + Default,

    source§

    fn from_iter<T>(iter: T) -> HashMap<K, V, S>
    where\n T: IntoIterator<Item = (K, V)>,

    Creates a value from an iterator. Read more
    ","FromIterator<(K, V)>","bdk_chain::spk_client::TxCache"],["
    source§

    impl<K, V> HashMap<K, V>

    1.0.0 · source

    pub fn new() -> HashMap<K, V>

    Creates an empty HashMap.

    \n

    The hash map is initially created with a capacity of 0, so it will not allocate until it\nis first inserted into.

    \n
    §Examples
    \n
    use std::collections::HashMap;\nlet mut map: HashMap<&str, i32> = HashMap::new();
    \n
    1.0.0 · source

    pub fn with_capacity(capacity: usize) -> HashMap<K, V>

    Creates an empty HashMap with at least the specified capacity.

    \n

    The hash map will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the hash map will not allocate.

    \n
    §Examples
    \n
    use std::collections::HashMap;\nlet mut map: HashMap<&str, i32> = HashMap::with_capacity(10);
    \n
    ",0,"bdk_chain::spk_client::TxCache"],["
    source§

    impl<K, V, S> HashMap<K, V, S>
    where\n S: BuildHasher,

    source

    pub fn raw_entry_mut(&mut self) -> RawEntryBuilderMut<'_, K, V, S>

    🔬This is a nightly-only experimental API. (hash_raw_entry)

    Creates a raw entry builder for the HashMap.

    \n

    Raw entries provide the lowest level of control for searching and\nmanipulating a map. They must be manually initialized with a hash and\nthen manually searched. After this, insertions into a vacant entry\nstill require an owned key to be provided.

    \n

    Raw entries are useful for such exotic situations as:

    \n
      \n
    • Hash memoization
    • \n
    • Deferring the creation of an owned key until it is known to be required
    • \n
    • Using a search key that doesn’t work with the Borrow trait
    • \n
    • Using custom comparison logic without newtype wrappers
    • \n
    \n

    Because raw entries provide much more low-level control, it’s much easier\nto put the HashMap into an inconsistent state which, while memory-safe,\nwill cause the map to produce seemingly random results. Higher-level and\nmore foolproof APIs like entry should be preferred when possible.

    \n

    In particular, the hash used to initialized the raw entry must still be\nconsistent with the hash of the key that is ultimately stored in the entry.\nThis is because implementations of HashMap may need to recompute hashes\nwhen resizing, at which point only the keys are available.

    \n

    Raw entries give mutable access to the keys. This must not be used\nto modify how the key would compare or hash, as the map will not re-evaluate\nwhere the key should go, meaning the keys may become “lost” if their\nlocation does not reflect their state. For instance, if you change a key\nso that the map now contains keys which compare equal, search may start\nacting erratically, with two keys randomly masking each other. Implementations\nare free to assume this doesn’t happen (within the limits of memory-safety).

    \n
    source

    pub fn raw_entry(&self) -> RawEntryBuilder<'_, K, V, S>

    🔬This is a nightly-only experimental API. (hash_raw_entry)

    Creates a raw immutable entry builder for the HashMap.

    \n

    Raw entries provide the lowest level of control for searching and\nmanipulating a map. They must be manually initialized with a hash and\nthen manually searched.

    \n

    This is useful for

    \n
      \n
    • Hash memoization
    • \n
    • Using a search key that doesn’t work with the Borrow trait
    • \n
    • Using custom comparison logic without newtype wrappers
    • \n
    \n

    Unless you are in such a situation, higher-level and more foolproof APIs like\nget should be preferred.

    \n

    Immutable raw entries have very limited use; you might instead want raw_entry_mut.

    \n
    ",0,"bdk_chain::spk_client::TxCache"],["
    source§

    impl<K, V, S> HashMap<K, V, S>

    1.7.0 (const: unstable) · source

    pub fn with_hasher(hash_builder: S) -> HashMap<K, V, S>

    Creates an empty HashMap which will use the given hash builder to hash\nkeys.

    \n

    The created map has the default initial capacity.

    \n

    Warning: hash_builder is normally randomly generated, and\nis designed to allow HashMaps to be resistant to attacks that\ncause many collisions and very poor performance. Setting it\nmanually using this function can expose a DoS attack vector.

    \n

    The hash_builder passed should implement the BuildHasher trait for\nthe HashMap to be useful, see its documentation for details.

    \n
    §Examples
    \n
    use std::collections::HashMap;\nuse std::hash::RandomState;\n\nlet s = RandomState::new();\nlet mut map = HashMap::with_hasher(s);\nmap.insert(1, 2);
    \n
    1.7.0 · source

    pub fn with_capacity_and_hasher(capacity: usize, hasher: S) -> HashMap<K, V, S>

    Creates an empty HashMap with at least the specified capacity, using\nhasher to hash the keys.

    \n

    The hash map will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the hash map will not allocate.

    \n

    Warning: hasher is normally randomly generated, and\nis designed to allow HashMaps to be resistant to attacks that\ncause many collisions and very poor performance. Setting it\nmanually using this function can expose a DoS attack vector.

    \n

    The hasher passed should implement the BuildHasher trait for\nthe HashMap to be useful, see its documentation for details.

    \n
    §Examples
    \n
    use std::collections::HashMap;\nuse std::hash::RandomState;\n\nlet s = RandomState::new();\nlet mut map = HashMap::with_capacity_and_hasher(10, s);\nmap.insert(1, 2);
    \n
    1.0.0 · source

    pub fn capacity(&self) -> usize

    Returns the number of elements the map can hold without reallocating.

    \n

    This number is a lower bound; the HashMap<K, V> might be able to hold\nmore, but is guaranteed to be able to hold at least this many.

    \n
    §Examples
    \n
    use std::collections::HashMap;\nlet map: HashMap<i32, i32> = HashMap::with_capacity(100);\nassert!(map.capacity() >= 100);
    \n
    1.0.0 · source

    pub fn keys(&self) -> Keys<'_, K, V> ⓘ

    An iterator visiting all keys in arbitrary order.\nThe iterator element type is &'a K.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nfor key in map.keys() {\n    println!(\"{key}\");\n}
    \n
    §Performance
    \n

    In the current implementation, iterating over keys takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.54.0 · source

    pub fn into_keys(self) -> IntoKeys<K, V> ⓘ

    Creates a consuming iterator visiting all the keys in arbitrary order.\nThe map cannot be used after calling this.\nThe iterator element type is K.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nlet mut vec: Vec<&str> = map.into_keys().collect();\n// The `IntoKeys` iterator produces keys in arbitrary order, so the\n// keys must be sorted to test them against a sorted array.\nvec.sort_unstable();\nassert_eq!(vec, [\"a\", \"b\", \"c\"]);
    \n
    §Performance
    \n

    In the current implementation, iterating over keys takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn values(&self) -> Values<'_, K, V> ⓘ

    An iterator visiting all values in arbitrary order.\nThe iterator element type is &'a V.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nfor val in map.values() {\n    println!(\"{val}\");\n}
    \n
    §Performance
    \n

    In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.10.0 · source

    pub fn values_mut(&mut self) -> ValuesMut<'_, K, V> ⓘ

    An iterator visiting all values mutably in arbitrary order.\nThe iterator element type is &'a mut V.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nfor val in map.values_mut() {\n    *val = *val + 10;\n}\n\nfor val in map.values() {\n    println!(\"{val}\");\n}
    \n
    §Performance
    \n

    In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.54.0 · source

    pub fn into_values(self) -> IntoValues<K, V> ⓘ

    Creates a consuming iterator visiting all the values in arbitrary order.\nThe map cannot be used after calling this.\nThe iterator element type is V.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nlet mut vec: Vec<i32> = map.into_values().collect();\n// The `IntoValues` iterator produces values in arbitrary order, so\n// the values must be sorted to test them against a sorted array.\nvec.sort_unstable();\nassert_eq!(vec, [1, 2, 3]);
    \n
    §Performance
    \n

    In the current implementation, iterating over values takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, K, V> ⓘ

    An iterator visiting all key-value pairs in arbitrary order.\nThe iterator element type is (&'a K, &'a V).

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\nfor (key, val) in map.iter() {\n    println!(\"key: {key} val: {val}\");\n}
    \n
    §Performance
    \n

    In the current implementation, iterating over map takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn iter_mut(&mut self) -> IterMut<'_, K, V> ⓘ

    An iterator visiting all key-value pairs in arbitrary order,\nwith mutable references to the values.\nThe iterator element type is (&'a K, &'a mut V).

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\n// Update all values\nfor (_, val) in map.iter_mut() {\n    *val *= 2;\n}\n\nfor (key, val) in &map {\n    println!(\"key: {key} val: {val}\");\n}
    \n
    §Performance
    \n

    In the current implementation, iterating over map takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn len(&self) -> usize

    Returns the number of elements in the map.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut a = HashMap::new();\nassert_eq!(a.len(), 0);\na.insert(1, \"a\");\nassert_eq!(a.len(), 1);
    \n
    1.0.0 · source

    pub fn is_empty(&self) -> bool

    Returns true if the map contains no elements.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut a = HashMap::new();\nassert!(a.is_empty());\na.insert(1, \"a\");\nassert!(!a.is_empty());
    \n
    1.6.0 · source

    pub fn drain(&mut self) -> Drain<'_, K, V> ⓘ

    Clears the map, returning all key-value pairs as an iterator. Keeps the\nallocated memory for reuse.

    \n

    If the returned iterator is dropped before being fully consumed, it\ndrops the remaining key-value pairs. The returned iterator keeps a\nmutable borrow on the map to optimize its implementation.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut a = HashMap::new();\na.insert(1, \"a\");\na.insert(2, \"b\");\n\nfor (k, v) in a.drain().take(1) {\n    assert!(k == 1 || k == 2);\n    assert!(v == \"a\" || v == \"b\");\n}\n\nassert!(a.is_empty());
    \n
    source

    pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, K, V, F> ⓘ
    where\n F: FnMut(&K, &mut V) -> bool,

    🔬This is a nightly-only experimental API. (hash_extract_if)

    Creates an iterator which uses a closure to determine if an element should be removed.

    \n

    If the closure returns true, the element is removed from the map and yielded.\nIf the closure returns false, or panics, the element remains in the map and will not be\nyielded.

    \n

    Note that extract_if lets you mutate every value in the filter closure, regardless of\nwhether you choose to keep or remove it.

    \n

    If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

    \n
    §Examples
    \n

    Splitting a map into even and odd keys, reusing the original map:

    \n\n
    #![feature(hash_extract_if)]\nuse std::collections::HashMap;\n\nlet mut map: HashMap<i32, i32> = (0..8).map(|x| (x, x)).collect();\nlet extracted: HashMap<i32, i32> = map.extract_if(|k, _v| k % 2 == 0).collect();\n\nlet mut evens = extracted.keys().copied().collect::<Vec<_>>();\nlet mut odds = map.keys().copied().collect::<Vec<_>>();\nevens.sort();\nodds.sort();\n\nassert_eq!(evens, vec![0, 2, 4, 6]);\nassert_eq!(odds, vec![1, 3, 5, 7]);
    \n
    1.18.0 · source

    pub fn retain<F>(&mut self, f: F)
    where\n F: FnMut(&K, &mut V) -> bool,

    Retains only the elements specified by the predicate.

    \n

    In other words, remove all pairs (k, v) for which f(&k, &mut v) returns false.\nThe elements are visited in unsorted (and unspecified) order.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map: HashMap<i32, i32> = (0..8).map(|x| (x, x*10)).collect();\nmap.retain(|&k, _| k % 2 == 0);\nassert_eq!(map.len(), 4);
    \n
    §Performance
    \n

    In the current implementation, this operation takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn clear(&mut self)

    Clears the map, removing all key-value pairs. Keeps the allocated memory\nfor reuse.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut a = HashMap::new();\na.insert(1, \"a\");\na.clear();\nassert!(a.is_empty());
    \n
    1.9.0 · source

    pub fn hasher(&self) -> &S

    Returns a reference to the map’s BuildHasher.

    \n
    §Examples
    \n
    use std::collections::HashMap;\nuse std::hash::RandomState;\n\nlet hasher = RandomState::new();\nlet map: HashMap<i32, i32> = HashMap::with_hasher(hasher);\nlet hasher: &RandomState = map.hasher();
    \n
    ",0,"bdk_chain::spk_client::TxCache"],["
    source§

    impl<K, V, S> HashMap<K, V, S>
    where\n K: Eq + Hash,\n S: BuildHasher,

    1.0.0 · source

    pub fn reserve(&mut self, additional: usize)

    Reserves capacity for at least additional more elements to be inserted\nin the HashMap. The collection may reserve more space to speculatively\navoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

    \n
    §Panics
    \n

    Panics if the new allocation size overflows usize.

    \n
    §Examples
    \n
    use std::collections::HashMap;\nlet mut map: HashMap<&str, i32> = HashMap::new();\nmap.reserve(10);
    \n
    1.57.0 · source

    pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

    Tries to reserve capacity for at least additional more elements to be inserted\nin the HashMap. The collection may reserve more space to speculatively\navoid frequent reallocations. After calling try_reserve,\ncapacity will be greater than or equal to self.len() + additional if\nit returns Ok(()).\nDoes nothing if capacity is already sufficient.

    \n
    §Errors
    \n

    If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map: HashMap<&str, isize> = HashMap::new();\nmap.try_reserve(10).expect(\"why is the test harness OOMing on a handful of bytes?\");
    \n
    1.0.0 · source

    pub fn shrink_to_fit(&mut self)

    Shrinks the capacity of the map as much as possible. It will drop\ndown as much as possible while maintaining the internal rules\nand possibly leaving some space in accordance with the resize policy.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map: HashMap<i32, i32> = HashMap::with_capacity(100);\nmap.insert(1, 2);\nmap.insert(3, 4);\nassert!(map.capacity() >= 100);\nmap.shrink_to_fit();\nassert!(map.capacity() >= 2);
    \n
    1.56.0 · source

    pub fn shrink_to(&mut self, min_capacity: usize)

    Shrinks the capacity of the map with a lower limit. It will drop\ndown no lower than the supplied limit while maintaining the internal rules\nand possibly leaving some space in accordance with the resize policy.

    \n

    If the current capacity is less than the lower limit, this is a no-op.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map: HashMap<i32, i32> = HashMap::with_capacity(100);\nmap.insert(1, 2);\nmap.insert(3, 4);\nassert!(map.capacity() >= 100);\nmap.shrink_to(10);\nassert!(map.capacity() >= 10);\nmap.shrink_to(0);\nassert!(map.capacity() >= 2);
    \n
    1.0.0 · source

    pub fn entry(&mut self, key: K) -> Entry<'_, K, V>

    Gets the given key’s corresponding entry in the map for in-place manipulation.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut letters = HashMap::new();\n\nfor ch in \"a short treatise on fungi\".chars() {\n    letters.entry(ch).and_modify(|counter| *counter += 1).or_insert(1);\n}\n\nassert_eq!(letters[&'s'], 2);\nassert_eq!(letters[&'t'], 3);\nassert_eq!(letters[&'u'], 1);\nassert_eq!(letters.get(&'y'), None);
    \n
    1.0.0 · source

    pub fn get<Q>(&self, k: &Q) -> Option<&V>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns a reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get(&1), Some(&\"a\"));\nassert_eq!(map.get(&2), None);
    \n
    1.40.0 · source

    pub fn get_key_value<Q>(&self, k: &Q) -> Option<(&K, &V)>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns the key-value pair corresponding to the supplied key.

    \n

    The supplied key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.get_key_value(&1), Some((&1, &\"a\")));\nassert_eq!(map.get_key_value(&2), None);
    \n
    source

    pub fn get_many_mut<Q, const N: usize>(\n &mut self,\n ks: [&Q; N]\n) -> Option<[&mut V; N]>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    🔬This is a nightly-only experimental API. (map_many_mut)

    Attempts to get mutable references to N values in the map at once.

    \n

    Returns an array of length N with the results of each query. For soundness, at most one\nmutable reference will be returned to any value. None will be returned if any of the\nkeys are duplicates or missing.

    \n
    §Examples
    \n
    #![feature(map_many_mut)]\nuse std::collections::HashMap;\n\nlet mut libraries = HashMap::new();\nlibraries.insert(\"Bodleian Library\".to_string(), 1602);\nlibraries.insert(\"Athenæum\".to_string(), 1807);\nlibraries.insert(\"Herzogin-Anna-Amalia-Bibliothek\".to_string(), 1691);\nlibraries.insert(\"Library of Congress\".to_string(), 1800);\n\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"Library of Congress\",\n]);\nassert_eq!(\n    got,\n    Some([\n        &mut 1807,\n        &mut 1800,\n    ]),\n);\n\n// Missing keys result in None\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"New York Public Library\",\n]);\nassert_eq!(got, None);\n\n// Duplicate keys result in None\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"Athenæum\",\n]);\nassert_eq!(got, None);
    \n
    source

    pub unsafe fn get_many_unchecked_mut<Q, const N: usize>(\n &mut self,\n ks: [&Q; N]\n) -> Option<[&mut V; N]>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    🔬This is a nightly-only experimental API. (map_many_mut)

    Attempts to get mutable references to N values in the map at once, without validating that\nthe values are unique.

    \n

    Returns an array of length N with the results of each query. None will be returned if\nany of the keys are missing.

    \n

    For a safe alternative see get_many_mut.

    \n
    §Safety
    \n

    Calling this method with overlapping keys is undefined behavior even if the resulting\nreferences are not used.

    \n
    §Examples
    \n
    #![feature(map_many_mut)]\nuse std::collections::HashMap;\n\nlet mut libraries = HashMap::new();\nlibraries.insert(\"Bodleian Library\".to_string(), 1602);\nlibraries.insert(\"Athenæum\".to_string(), 1807);\nlibraries.insert(\"Herzogin-Anna-Amalia-Bibliothek\".to_string(), 1691);\nlibraries.insert(\"Library of Congress\".to_string(), 1800);\n\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"Library of Congress\",\n]);\nassert_eq!(\n    got,\n    Some([\n        &mut 1807,\n        &mut 1800,\n    ]),\n);\n\n// Missing keys result in None\nlet got = libraries.get_many_mut([\n    \"Athenæum\",\n    \"New York Public Library\",\n]);\nassert_eq!(got, None);
    \n
    1.0.0 · source

    pub fn contains_key<Q>(&self, k: &Q) -> bool
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns true if the map contains a value for the specified key.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.contains_key(&1), true);\nassert_eq!(map.contains_key(&2), false);
    \n
    1.0.0 · source

    pub fn get_mut<Q>(&mut self, k: &Q) -> Option<&mut V>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns a mutable reference to the value corresponding to the key.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nif let Some(x) = map.get_mut(&1) {\n    *x = \"b\";\n}\nassert_eq!(map[&1], \"b\");
    \n
    1.0.0 · source

    pub fn insert(&mut self, k: K, v: V) -> Option<V>

    Inserts a key-value pair into the map.

    \n

    If the map did not have this key present, None is returned.

    \n

    If the map did have this key present, the value is updated, and the old\nvalue is returned. The key is not updated, though; this matters for\ntypes that can be == without being identical. See the module-level\ndocumentation for more.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nassert_eq!(map.insert(37, \"a\"), None);\nassert_eq!(map.is_empty(), false);\n\nmap.insert(37, \"b\");\nassert_eq!(map.insert(37, \"c\"), Some(\"b\"));\nassert_eq!(map[&37], \"c\");
    \n
    source

    pub fn try_insert(\n &mut self,\n key: K,\n value: V\n) -> Result<&mut V, OccupiedError<'_, K, V>>

    🔬This is a nightly-only experimental API. (map_try_insert)

    Tries to insert a key-value pair into the map, and returns\na mutable reference to the value in the entry.

    \n

    If the map already had this key present, nothing is updated, and\nan error containing the occupied entry and the value is returned.

    \n
    §Examples
    \n

    Basic usage:

    \n\n
    #![feature(map_try_insert)]\n\nuse std::collections::HashMap;\n\nlet mut map = HashMap::new();\nassert_eq!(map.try_insert(37, \"a\").unwrap(), &\"a\");\n\nlet err = map.try_insert(37, \"b\").unwrap_err();\nassert_eq!(err.entry.key(), &37);\nassert_eq!(err.entry.get(), &\"a\");\nassert_eq!(err.value, \"b\");
    \n
    1.0.0 · source

    pub fn remove<Q>(&mut self, k: &Q) -> Option<V>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Removes a key from the map, returning the value at the key if the key\nwas previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove(&1), Some(\"a\"));\nassert_eq!(map.remove(&1), None);
    \n
    1.27.0 · source

    pub fn remove_entry<Q>(&mut self, k: &Q) -> Option<(K, V)>
    where\n K: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Removes a key from the map, returning the stored key and value if the\nkey was previously in the map.

    \n

    The key may be any borrowed form of the map’s key type, but\nHash and Eq on the borrowed form must match those for\nthe key type.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet mut map = HashMap::new();\nmap.insert(1, \"a\");\nassert_eq!(map.remove_entry(&1), Some((1, \"a\")));\nassert_eq!(map.remove(&1), None);
    \n
    ",0,"bdk_chain::spk_client::TxCache"],["
    1.0.0 · source§

    impl<K, Q, V, S> Index<&Q> for HashMap<K, V, S>
    where\n K: Eq + Hash + Borrow<Q>,\n Q: Eq + Hash + ?Sized,\n S: BuildHasher,

    source§

    fn index(&self, key: &Q) -> &V

    Returns a reference to the value corresponding to the supplied key.

    \n
    §Panics
    \n

    Panics if the key is not present in the HashMap.

    \n
    §

    type Output = V

    The returned type after indexing.
    ","Index<&Q>","bdk_chain::spk_client::TxCache"],["
    source§

    impl<'de, K, V, S, E> IntoDeserializer<'de, E> for HashMap<K, V, S>
    where\n K: IntoDeserializer<'de, E> + Eq + Hash,\n V: IntoDeserializer<'de, E>,\n S: BuildHasher,\n E: Error,

    §

    type Deserializer = MapDeserializer<'de, <HashMap<K, V, S> as IntoIterator>::IntoIter, E>

    The type of the deserializer being converted into.
    source§

    fn into_deserializer(\n self\n) -> <HashMap<K, V, S> as IntoDeserializer<'de, E>>::Deserializer

    Convert this value into a deserializer.
    ","IntoDeserializer<'de, E>","bdk_chain::spk_client::TxCache"],["
    1.0.0 · source§

    impl<K, V, S> IntoIterator for HashMap<K, V, S>

    source§

    fn into_iter(self) -> IntoIter<K, V> ⓘ

    Creates a consuming iterator, that is, one that moves each key-value\npair out of the map in arbitrary order. The map cannot be used after\ncalling this.

    \n
    §Examples
    \n
    use std::collections::HashMap;\n\nlet map = HashMap::from([\n    (\"a\", 1),\n    (\"b\", 2),\n    (\"c\", 3),\n]);\n\n// Not possible with .iter()\nlet vec: Vec<(&str, i32)> = map.into_iter().collect();
    \n
    §

    type Item = (K, V)

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<K, V>

    Which kind of iterator are we turning this into?
    ","IntoIterator","bdk_chain::spk_client::TxCache"],["
    1.0.0 · source§

    impl<K, V, S> PartialEq for HashMap<K, V, S>
    where\n K: Eq + Hash,\n V: PartialEq,\n S: BuildHasher,

    source§

    fn eq(&self, other: &HashMap<K, V, S>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_chain::spk_client::TxCache"],["
    source§

    impl<K, V, H> Serialize for HashMap<K, V, H>
    where\n K: Serialize,\n V: Serialize,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_chain::spk_client::TxCache"],["
    1.0.0 · source§

    impl<K, V, S> Eq for HashMap<K, V, S>
    where\n K: Eq + Hash,\n V: Eq,\n S: BuildHasher,

    ","Eq","bdk_chain::spk_client::TxCache"],["
    1.36.0 · source§

    impl<K, V, S> UnwindSafe for HashMap<K, V, S>
    where\n K: UnwindSafe,\n V: UnwindSafe,\n S: UnwindSafe,

    ","UnwindSafe","bdk_chain::spk_client::TxCache"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/collections/hash/set/struct.HashSet.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/collections/hash/set/struct.HashSet.js new file mode 100644 index 0000000000..8c1d02f866 --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/collections/hash/set/struct.HashSet.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"bdk_wallet":[["
    1.0.0 · source§

    impl<T, S> Clone for HashSet<T, S>
    where\n T: Clone,\n S: Clone,

    source§

    fn clone_from(&mut self, other: &HashSet<T, S>)

    Overwrites the contents of self with a clone of the contents of source.

    \n

    This method is preferred over simply assigning source.clone() to self,\nas it avoids reallocation if possible.

    \n
    source§

    fn clone(&self) -> HashSet<T, S>

    Returns a copy of the value. Read more
    ","Clone","bdk_wallet::keys::ValidNetworks"],["
    1.0.0 · source§

    impl<T, S> Debug for HashSet<T, S>
    where\n T: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

    Formats the value using the given formatter. Read more
    ","Debug","bdk_wallet::keys::ValidNetworks"],["
    1.0.0 · source§

    impl<T, S> Default for HashSet<T, S>
    where\n S: Default,

    source§

    fn default() -> HashSet<T, S>

    Creates an empty HashSet<T, S> with the Default value for the hasher.

    \n
    ","Default","bdk_wallet::keys::ValidNetworks"],["
    source§

    impl<'de, T, S> Deserialize<'de> for HashSet<T, S>
    where\n T: Deserialize<'de> + Eq + Hash,\n S: BuildHasher + Default,

    source§

    fn deserialize<D>(\n deserializer: D\n) -> Result<HashSet<T, S>, <D as Deserializer<'de>>::Error>
    where\n D: Deserializer<'de>,

    Deserialize this value from the given Serde deserializer. Read more
    ","Deserialize<'de>","bdk_wallet::keys::ValidNetworks"],["
    1.4.0 · source§

    impl<'a, T, S> Extend<&'a T> for HashSet<T, S>
    where\n T: 'a + Eq + Hash + Copy,\n S: BuildHasher,

    source§

    fn extend<I>(&mut self, iter: I)
    where\n I: IntoIterator<Item = &'a T>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, _: &'a T)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend<&'a T>","bdk_wallet::keys::ValidNetworks"],["
    1.0.0 · source§

    impl<T, S> Extend<T> for HashSet<T, S>
    where\n T: Eq + Hash,\n S: BuildHasher,

    source§

    fn extend<I>(&mut self, iter: I)
    where\n I: IntoIterator<Item = T>,

    Extends a collection with the contents of an iterator. Read more
    source§

    fn extend_one(&mut self, item: T)

    🔬This is a nightly-only experimental API. (extend_one)
    Extends a collection with exactly one element.
    source§

    fn extend_reserve(&mut self, additional: usize)

    🔬This is a nightly-only experimental API. (extend_one)
    Reserves capacity in a collection for the given number of additional elements. Read more
    ","Extend","bdk_wallet::keys::ValidNetworks"],["
    1.56.0 · source§

    impl<T, const N: usize> From<[T; N]> for HashSet<T>
    where\n T: Eq + Hash,

    source§

    fn from(arr: [T; N]) -> HashSet<T>

    §Examples
    \n
    use std::collections::HashSet;\n\nlet set1 = HashSet::from([1, 2, 3, 4]);\nlet set2: HashSet<_> = [1, 2, 3, 4].into();\nassert_eq!(set1, set2);
    \n
    ","From<[T; N]>","bdk_wallet::keys::ValidNetworks"],["
    1.0.0 · source§

    impl<T, S> FromIterator<T> for HashSet<T, S>
    where\n T: Eq + Hash,\n S: BuildHasher + Default,

    source§

    fn from_iter<I>(iter: I) -> HashSet<T, S>
    where\n I: IntoIterator<Item = T>,

    Creates a value from an iterator. Read more
    ","FromIterator","bdk_wallet::keys::ValidNetworks"],["
    source§

    impl<T> HashSet<T>

    1.0.0 · source

    pub fn new() -> HashSet<T>

    Creates an empty HashSet.

    \n

    The hash set is initially created with a capacity of 0, so it will not allocate until it\nis first inserted into.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet set: HashSet<i32> = HashSet::new();
    \n
    1.0.0 · source

    pub fn with_capacity(capacity: usize) -> HashSet<T>

    Creates an empty HashSet with at least the specified capacity.

    \n

    The hash set will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the hash set will not allocate.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet set: HashSet<i32> = HashSet::with_capacity(10);\nassert!(set.capacity() >= 10);
    \n
    ",0,"bdk_wallet::keys::ValidNetworks"],["
    source§

    impl<T, S> HashSet<T, S>

    1.0.0 · source

    pub fn capacity(&self) -> usize

    Returns the number of elements the set can hold without reallocating.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet set: HashSet<i32> = HashSet::with_capacity(100);\nassert!(set.capacity() >= 100);
    \n
    1.0.0 · source

    pub fn iter(&self) -> Iter<'_, T>

    An iterator visiting all elements in arbitrary order.\nThe iterator element type is &'a T.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet mut set = HashSet::new();\nset.insert(\"a\");\nset.insert(\"b\");\n\n// Will print in an arbitrary order.\nfor x in set.iter() {\n    println!(\"{x}\");\n}
    \n
    §Performance
    \n

    In the current implementation, iterating over set takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn len(&self) -> usize

    Returns the number of elements in the set.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut v = HashSet::new();\nassert_eq!(v.len(), 0);\nv.insert(1);\nassert_eq!(v.len(), 1);
    \n
    1.0.0 · source

    pub fn is_empty(&self) -> bool

    Returns true if the set contains no elements.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut v = HashSet::new();\nassert!(v.is_empty());\nv.insert(1);\nassert!(!v.is_empty());
    \n
    1.6.0 · source

    pub fn drain(&mut self) -> Drain<'_, T>

    Clears the set, returning all elements as an iterator. Keeps the\nallocated memory for reuse.

    \n

    If the returned iterator is dropped before being fully consumed, it\ndrops the remaining elements. The returned iterator keeps a mutable\nborrow on the set to optimize its implementation.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut set = HashSet::from([1, 2, 3]);\nassert!(!set.is_empty());\n\n// print 1, 2, 3 in an arbitrary order\nfor i in set.drain() {\n    println!(\"{i}\");\n}\n\nassert!(set.is_empty());
    \n
    source

    pub fn extract_if<F>(&mut self, pred: F) -> ExtractIf<'_, T, F>
    where\n F: FnMut(&T) -> bool,

    🔬This is a nightly-only experimental API. (hash_extract_if)

    Creates an iterator which uses a closure to determine if a value should be removed.

    \n

    If the closure returns true, then the value is removed and yielded.\nIf the closure returns false, the value will remain in the list and will not be yielded\nby the iterator.

    \n

    If the returned ExtractIf is not exhausted, e.g. because it is dropped without iterating\nor the iteration short-circuits, then the remaining elements will be retained.\nUse retain with a negated predicate if you do not need the returned iterator.

    \n
    §Examples
    \n

    Splitting a set into even and odd values, reusing the original set:

    \n\n
    #![feature(hash_extract_if)]\nuse std::collections::HashSet;\n\nlet mut set: HashSet<i32> = (0..8).collect();\nlet extracted: HashSet<i32> = set.extract_if(|v| v % 2 == 0).collect();\n\nlet mut evens = extracted.into_iter().collect::<Vec<_>>();\nlet mut odds = set.into_iter().collect::<Vec<_>>();\nevens.sort();\nodds.sort();\n\nassert_eq!(evens, vec![0, 2, 4, 6]);\nassert_eq!(odds, vec![1, 3, 5, 7]);
    \n
    1.18.0 · source

    pub fn retain<F>(&mut self, f: F)
    where\n F: FnMut(&T) -> bool,

    Retains only the elements specified by the predicate.

    \n

    In other words, remove all elements e for which f(&e) returns false.\nThe elements are visited in unsorted (and unspecified) order.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut set = HashSet::from([1, 2, 3, 4, 5, 6]);\nset.retain(|&k| k % 2 == 0);\nassert_eq!(set, HashSet::from([2, 4, 6]));
    \n
    §Performance
    \n

    In the current implementation, this operation takes O(capacity) time\ninstead of O(len) because it internally visits empty buckets too.

    \n
    1.0.0 · source

    pub fn clear(&mut self)

    Clears the set, removing all values.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut v = HashSet::new();\nv.insert(1);\nv.clear();\nassert!(v.is_empty());
    \n
    1.7.0 (const: unstable) · source

    pub fn with_hasher(hasher: S) -> HashSet<T, S>

    Creates a new empty hash set which will use the given hasher to hash\nkeys.

    \n

    The hash set is also created with the default initial capacity.

    \n

    Warning: hasher is normally randomly generated, and\nis designed to allow HashSets to be resistant to attacks that\ncause many collisions and very poor performance. Setting it\nmanually using this function can expose a DoS attack vector.

    \n

    The hash_builder passed should implement the BuildHasher trait for\nthe HashMap to be useful, see its documentation for details.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nuse std::hash::RandomState;\n\nlet s = RandomState::new();\nlet mut set = HashSet::with_hasher(s);\nset.insert(2);
    \n
    1.7.0 · source

    pub fn with_capacity_and_hasher(capacity: usize, hasher: S) -> HashSet<T, S>

    Creates an empty HashSet with at least the specified capacity, using\nhasher to hash the keys.

    \n

    The hash set will be able to hold at least capacity elements without\nreallocating. This method is allowed to allocate for more elements than\ncapacity. If capacity is 0, the hash set will not allocate.

    \n

    Warning: hasher is normally randomly generated, and\nis designed to allow HashSets to be resistant to attacks that\ncause many collisions and very poor performance. Setting it\nmanually using this function can expose a DoS attack vector.

    \n

    The hash_builder passed should implement the BuildHasher trait for\nthe HashMap to be useful, see its documentation for details.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nuse std::hash::RandomState;\n\nlet s = RandomState::new();\nlet mut set = HashSet::with_capacity_and_hasher(10, s);\nset.insert(1);
    \n
    1.9.0 · source

    pub fn hasher(&self) -> &S

    Returns a reference to the set’s BuildHasher.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nuse std::hash::RandomState;\n\nlet hasher = RandomState::new();\nlet set: HashSet<i32> = HashSet::with_hasher(hasher);\nlet hasher: &RandomState = set.hasher();
    \n
    ",0,"bdk_wallet::keys::ValidNetworks"],["
    source§

    impl<T, S> HashSet<T, S>
    where\n T: Eq + Hash,\n S: BuildHasher,

    1.0.0 · source

    pub fn reserve(&mut self, additional: usize)

    Reserves capacity for at least additional more elements to be inserted\nin the HashSet. The collection may reserve more space to speculatively\navoid frequent reallocations. After calling reserve,\ncapacity will be greater than or equal to self.len() + additional.\nDoes nothing if capacity is already sufficient.

    \n
    §Panics
    \n

    Panics if the new allocation size overflows usize.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet mut set: HashSet<i32> = HashSet::new();\nset.reserve(10);\nassert!(set.capacity() >= 10);
    \n
    1.57.0 · source

    pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError>

    Tries to reserve capacity for at least additional more elements to be inserted\nin the HashSet. The collection may reserve more space to speculatively\navoid frequent reallocations. After calling try_reserve,\ncapacity will be greater than or equal to self.len() + additional if\nit returns Ok(()).\nDoes nothing if capacity is already sufficient.

    \n
    §Errors
    \n

    If the capacity overflows, or the allocator reports a failure, then an error\nis returned.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet mut set: HashSet<i32> = HashSet::new();\nset.try_reserve(10).expect(\"why is the test harness OOMing on a handful of bytes?\");
    \n
    1.0.0 · source

    pub fn shrink_to_fit(&mut self)

    Shrinks the capacity of the set as much as possible. It will drop\ndown as much as possible while maintaining the internal rules\nand possibly leaving some space in accordance with the resize policy.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut set = HashSet::with_capacity(100);\nset.insert(1);\nset.insert(2);\nassert!(set.capacity() >= 100);\nset.shrink_to_fit();\nassert!(set.capacity() >= 2);
    \n
    1.56.0 · source

    pub fn shrink_to(&mut self, min_capacity: usize)

    Shrinks the capacity of the set with a lower limit. It will drop\ndown no lower than the supplied limit while maintaining the internal rules\nand possibly leaving some space in accordance with the resize policy.

    \n

    If the current capacity is less than the lower limit, this is a no-op.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut set = HashSet::with_capacity(100);\nset.insert(1);\nset.insert(2);\nassert!(set.capacity() >= 100);\nset.shrink_to(10);\nassert!(set.capacity() >= 10);\nset.shrink_to(0);\nassert!(set.capacity() >= 2);
    \n
    1.0.0 · source

    pub fn difference<'a>(\n &'a self,\n other: &'a HashSet<T, S>\n) -> Difference<'a, T, S>

    Visits the values representing the difference,\ni.e., the values that are in self but not in other.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet a = HashSet::from([1, 2, 3]);\nlet b = HashSet::from([4, 2, 3, 4]);\n\n// Can be seen as `a - b`.\nfor x in a.difference(&b) {\n    println!(\"{x}\"); // Print 1\n}\n\nlet diff: HashSet<_> = a.difference(&b).collect();\nassert_eq!(diff, [1].iter().collect());\n\n// Note that difference is not symmetric,\n// and `b - a` means something else:\nlet diff: HashSet<_> = b.difference(&a).collect();\nassert_eq!(diff, [4].iter().collect());
    \n
    1.0.0 · source

    pub fn symmetric_difference<'a>(\n &'a self,\n other: &'a HashSet<T, S>\n) -> SymmetricDifference<'a, T, S>

    Visits the values representing the symmetric difference,\ni.e., the values that are in self or in other but not in both.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet a = HashSet::from([1, 2, 3]);\nlet b = HashSet::from([4, 2, 3, 4]);\n\n// Print 1, 4 in arbitrary order.\nfor x in a.symmetric_difference(&b) {\n    println!(\"{x}\");\n}\n\nlet diff1: HashSet<_> = a.symmetric_difference(&b).collect();\nlet diff2: HashSet<_> = b.symmetric_difference(&a).collect();\n\nassert_eq!(diff1, diff2);\nassert_eq!(diff1, [1, 4].iter().collect());
    \n
    1.0.0 · source

    pub fn intersection<'a>(\n &'a self,\n other: &'a HashSet<T, S>\n) -> Intersection<'a, T, S>

    Visits the values representing the intersection,\ni.e., the values that are both in self and other.

    \n

    When an equal element is present in self and other\nthen the resulting Intersection may yield references to\none or the other. This can be relevant if T contains fields which\nare not compared by its Eq implementation, and may hold different\nvalue between the two equal copies of T in the two sets.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet a = HashSet::from([1, 2, 3]);\nlet b = HashSet::from([4, 2, 3, 4]);\n\n// Print 2, 3 in arbitrary order.\nfor x in a.intersection(&b) {\n    println!(\"{x}\");\n}\n\nlet intersection: HashSet<_> = a.intersection(&b).collect();\nassert_eq!(intersection, [2, 3].iter().collect());
    \n
    1.0.0 · source

    pub fn union<'a>(&'a self, other: &'a HashSet<T, S>) -> Union<'a, T, S>

    Visits the values representing the union,\ni.e., all the values in self or other, without duplicates.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet a = HashSet::from([1, 2, 3]);\nlet b = HashSet::from([4, 2, 3, 4]);\n\n// Print 1, 2, 3, 4 in arbitrary order.\nfor x in a.union(&b) {\n    println!(\"{x}\");\n}\n\nlet union: HashSet<_> = a.union(&b).collect();\nassert_eq!(union, [1, 2, 3, 4].iter().collect());
    \n
    1.0.0 · source

    pub fn contains<Q>(&self, value: &Q) -> bool
    where\n T: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns true if the set contains a value.

    \n

    The value may be any borrowed form of the set’s value type, but\nHash and Eq on the borrowed form must match those for\nthe value type.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet set = HashSet::from([1, 2, 3]);\nassert_eq!(set.contains(&1), true);\nassert_eq!(set.contains(&4), false);
    \n
    1.9.0 · source

    pub fn get<Q>(&self, value: &Q) -> Option<&T>
    where\n T: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Returns a reference to the value in the set, if any, that is equal to the given value.

    \n

    The value may be any borrowed form of the set’s value type, but\nHash and Eq on the borrowed form must match those for\nthe value type.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet set = HashSet::from([1, 2, 3]);\nassert_eq!(set.get(&2), Some(&2));\nassert_eq!(set.get(&4), None);
    \n
    source

    pub fn get_or_insert(&mut self, value: T) -> &T

    🔬This is a nightly-only experimental API. (hash_set_entry)

    Inserts the given value into the set if it is not present, then\nreturns a reference to the value in the set.

    \n
    §Examples
    \n
    #![feature(hash_set_entry)]\n\nuse std::collections::HashSet;\n\nlet mut set = HashSet::from([1, 2, 3]);\nassert_eq!(set.len(), 3);\nassert_eq!(set.get_or_insert(2), &2);\nassert_eq!(set.get_or_insert(100), &100);\nassert_eq!(set.len(), 4); // 100 was inserted
    \n
    source

    pub fn get_or_insert_owned<Q>(&mut self, value: &Q) -> &T
    where\n T: Borrow<Q>,\n Q: Hash + Eq + ToOwned<Owned = T> + ?Sized,

    🔬This is a nightly-only experimental API. (hash_set_entry)

    Inserts an owned copy of the given value into the set if it is not\npresent, then returns a reference to the value in the set.

    \n
    §Examples
    \n
    #![feature(hash_set_entry)]\n\nuse std::collections::HashSet;\n\nlet mut set: HashSet<String> = [\"cat\", \"dog\", \"horse\"]\n    .iter().map(|&pet| pet.to_owned()).collect();\n\nassert_eq!(set.len(), 3);\nfor &pet in &[\"cat\", \"dog\", \"fish\"] {\n    let value = set.get_or_insert_owned(pet);\n    assert_eq!(value, pet);\n}\nassert_eq!(set.len(), 4); // a new \"fish\" was inserted
    \n
    source

    pub fn get_or_insert_with<Q, F>(&mut self, value: &Q, f: F) -> &T
    where\n T: Borrow<Q>,\n Q: Hash + Eq + ?Sized,\n F: FnOnce(&Q) -> T,

    🔬This is a nightly-only experimental API. (hash_set_entry)

    Inserts a value computed from f into the set if the given value is\nnot present, then returns a reference to the value in the set.

    \n
    §Examples
    \n
    #![feature(hash_set_entry)]\n\nuse std::collections::HashSet;\n\nlet mut set: HashSet<String> = [\"cat\", \"dog\", \"horse\"]\n    .iter().map(|&pet| pet.to_owned()).collect();\n\nassert_eq!(set.len(), 3);\nfor &pet in &[\"cat\", \"dog\", \"fish\"] {\n    let value = set.get_or_insert_with(pet, str::to_owned);\n    assert_eq!(value, pet);\n}\nassert_eq!(set.len(), 4); // a new \"fish\" was inserted
    \n
    1.0.0 · source

    pub fn is_disjoint(&self, other: &HashSet<T, S>) -> bool

    Returns true if self has no elements in common with other.\nThis is equivalent to checking for an empty intersection.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet a = HashSet::from([1, 2, 3]);\nlet mut b = HashSet::new();\n\nassert_eq!(a.is_disjoint(&b), true);\nb.insert(4);\nassert_eq!(a.is_disjoint(&b), true);\nb.insert(1);\nassert_eq!(a.is_disjoint(&b), false);
    \n
    1.0.0 · source

    pub fn is_subset(&self, other: &HashSet<T, S>) -> bool

    Returns true if the set is a subset of another,\ni.e., other contains at least all the values in self.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet sup = HashSet::from([1, 2, 3]);\nlet mut set = HashSet::new();\n\nassert_eq!(set.is_subset(&sup), true);\nset.insert(2);\nassert_eq!(set.is_subset(&sup), true);\nset.insert(4);\nassert_eq!(set.is_subset(&sup), false);
    \n
    1.0.0 · source

    pub fn is_superset(&self, other: &HashSet<T, S>) -> bool

    Returns true if the set is a superset of another,\ni.e., self contains at least all the values in other.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet sub = HashSet::from([1, 2]);\nlet mut set = HashSet::new();\n\nassert_eq!(set.is_superset(&sub), false);\n\nset.insert(0);\nset.insert(1);\nassert_eq!(set.is_superset(&sub), false);\n\nset.insert(2);\nassert_eq!(set.is_superset(&sub), true);
    \n
    1.0.0 · source

    pub fn insert(&mut self, value: T) -> bool

    Adds a value to the set.

    \n

    Returns whether the value was newly inserted. That is:

    \n
      \n
    • If the set did not previously contain this value, true is returned.
    • \n
    • If the set already contained this value, false is returned,\nand the set is not modified: original value is not replaced,\nand the value passed as argument is dropped.
    • \n
    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut set = HashSet::new();\n\nassert_eq!(set.insert(2), true);\nassert_eq!(set.insert(2), false);\nassert_eq!(set.len(), 1);
    \n
    1.9.0 · source

    pub fn replace(&mut self, value: T) -> Option<T>

    Adds a value to the set, replacing the existing value, if any, that is equal to the given\none. Returns the replaced value.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut set = HashSet::new();\nset.insert(Vec::<i32>::new());\n\nassert_eq!(set.get(&[][..]).unwrap().capacity(), 0);\nset.replace(Vec::with_capacity(10));\nassert_eq!(set.get(&[][..]).unwrap().capacity(), 10);
    \n
    1.0.0 · source

    pub fn remove<Q>(&mut self, value: &Q) -> bool
    where\n T: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Removes a value from the set. Returns whether the value was\npresent in the set.

    \n

    The value may be any borrowed form of the set’s value type, but\nHash and Eq on the borrowed form must match those for\nthe value type.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut set = HashSet::new();\n\nset.insert(2);\nassert_eq!(set.remove(&2), true);\nassert_eq!(set.remove(&2), false);
    \n
    1.9.0 · source

    pub fn take<Q>(&mut self, value: &Q) -> Option<T>
    where\n T: Borrow<Q>,\n Q: Hash + Eq + ?Sized,

    Removes and returns the value in the set, if any, that is equal to the given one.

    \n

    The value may be any borrowed form of the set’s value type, but\nHash and Eq on the borrowed form must match those for\nthe value type.

    \n
    §Examples
    \n
    use std::collections::HashSet;\n\nlet mut set = HashSet::from([1, 2, 3]);\nassert_eq!(set.take(&2), Some(2));\nassert_eq!(set.take(&2), None);
    \n
    ",0,"bdk_wallet::keys::ValidNetworks"],["
    source§

    impl<'de, T, S, E> IntoDeserializer<'de, E> for HashSet<T, S>
    where\n T: IntoDeserializer<'de, E> + Eq + Hash,\n S: BuildHasher,\n E: Error,

    §

    type Deserializer = SeqDeserializer<<HashSet<T, S> as IntoIterator>::IntoIter, E>

    The type of the deserializer being converted into.
    source§

    fn into_deserializer(\n self\n) -> <HashSet<T, S> as IntoDeserializer<'de, E>>::Deserializer

    Convert this value into a deserializer.
    ","IntoDeserializer<'de, E>","bdk_wallet::keys::ValidNetworks"],["
    1.0.0 · source§

    impl<T, S> IntoIterator for HashSet<T, S>

    source§

    fn into_iter(self) -> IntoIter<T>

    Creates a consuming iterator, that is, one that moves each value out\nof the set in arbitrary order. The set cannot be used after calling\nthis.

    \n
    §Examples
    \n
    use std::collections::HashSet;\nlet mut set = HashSet::new();\nset.insert(\"a\".to_string());\nset.insert(\"b\".to_string());\n\n// Not possible to collect to a Vec<String> with a regular `.iter()`.\nlet v: Vec<String> = set.into_iter().collect();\n\n// Will print in an arbitrary order.\nfor x in &v {\n    println!(\"{x}\");\n}
    \n
    §

    type Item = T

    The type of the elements being iterated over.
    §

    type IntoIter = IntoIter<T>

    Which kind of iterator are we turning this into?
    ","IntoIterator","bdk_wallet::keys::ValidNetworks"],["
    1.0.0 · source§

    impl<T, S> PartialEq for HashSet<T, S>
    where\n T: Eq + Hash,\n S: BuildHasher,

    source§

    fn eq(&self, other: &HashSet<T, S>) -> bool

    This method tests for self and other values to be equal, and is used\nby ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
    ","PartialEq","bdk_wallet::keys::ValidNetworks"],["
    source§

    impl<T, H> Serialize for HashSet<T, H>
    where\n T: Serialize,

    source§

    fn serialize<S>(\n &self,\n serializer: S\n) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
    where\n S: Serializer,

    Serialize this value into the given Serde serializer. Read more
    ","Serialize","bdk_wallet::keys::ValidNetworks"],["
    1.0.0 · source§

    impl<T, S> Eq for HashSet<T, S>
    where\n T: Eq + Hash,\n S: BuildHasher,

    ","Eq","bdk_wallet::keys::ValidNetworks"]] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/primitive.tuple.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/primitive.tuple.js new file mode 100644 index 0000000000..4e383dc59d --- /dev/null +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/type.impl/std/primitive.tuple.js @@ -0,0 +1,7 @@ +(function() {var type_impls = { +"bdk_wallet":[], +"example_bitcoind_rpc_polling":[], +"example_cli":[], +"example_electrum":[], +"example_esplora":[] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/all.html index 09535c45cd..1433982623 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file +List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.BATCH_SIZE.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.BATCH_SIZE.html index c506256ef3..b7a430c617 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.BATCH_SIZE.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.BATCH_SIZE.html @@ -1 +1 @@ -BATCH_SIZE in wallet_electrum_example - Rust
    pub(crate) const BATCH_SIZE: usize = 5;
    \ No newline at end of file +BATCH_SIZE in wallet_electrum_example - Rust

    Constant wallet_electrum_example::BATCH_SIZE

    source ·
    pub(crate) const BATCH_SIZE: usize = 5;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.DB_MAGIC.html index 72c43a4398..1542f54501 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.DB_MAGIC.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.DB_MAGIC.html @@ -1 +1 @@ -DB_MAGIC in wallet_electrum_example - Rust
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_electrum_example";
    \ No newline at end of file +DB_MAGIC in wallet_electrum_example - Rust

    Constant wallet_electrum_example::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_electrum_example";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.SEND_AMOUNT.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.SEND_AMOUNT.html index dcd09b50c5..417ac538d2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.SEND_AMOUNT.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.SEND_AMOUNT.html @@ -1 +1 @@ -SEND_AMOUNT in wallet_electrum_example - Rust
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file +SEND_AMOUNT in wallet_electrum_example - Rust

    Constant wallet_electrum_example::SEND_AMOUNT

    source ·
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.STOP_GAP.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.STOP_GAP.html index ea64fdade3..2e5d4f371e 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.STOP_GAP.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/constant.STOP_GAP.html @@ -1 +1 @@ -STOP_GAP in wallet_electrum_example - Rust
    pub(crate) const STOP_GAP: usize = 50;
    \ No newline at end of file +STOP_GAP in wallet_electrum_example - Rust

    Constant wallet_electrum_example::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 50;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/fn.main.html index d7035bcdc9..227c07dbea 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/fn.main.html @@ -1 +1 @@ -main in wallet_electrum_example - Rust

    Function wallet_electrum_example::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file +main in wallet_electrum_example - Rust

    Function wallet_electrum_example::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/index.html index 197bb90194..e5b471f663 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/index.html @@ -1 +1 @@ -wallet_electrum_example - Rust

    Constants

    BATCH_SIZE ðŸ”’
    DB_MAGIC ðŸ”’
    SEND_AMOUNT ðŸ”’
    STOP_GAP ðŸ”’

    Functions

    main ðŸ”’
    \ No newline at end of file +wallet_electrum_example - Rust

    Crate wallet_electrum_example

    source ·

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/sidebar-items.js index 1f51f99cf3..b2ef211c58 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_electrum_example/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["BATCH_SIZE",""],["DB_MAGIC",""],["SEND_AMOUNT",""],["STOP_GAP",""]],"fn":[["main",""]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["BATCH_SIZE","DB_MAGIC","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/all.html index 1845365458..d4fd65f1f1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file +List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.DB_MAGIC.html deleted file mode 100644 index ed4374360f..0000000000 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.DB_MAGIC.html +++ /dev/null @@ -1 +0,0 @@ -DB_MAGIC in wallet_esplora_async - Rust
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_esplora_async_example";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.PARALLEL_REQUESTS.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.PARALLEL_REQUESTS.html index 67ef1a001d..6ad3bf0efc 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.PARALLEL_REQUESTS.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.PARALLEL_REQUESTS.html @@ -1 +1 @@ -PARALLEL_REQUESTS in wallet_esplora_async - Rust
    pub(crate) const PARALLEL_REQUESTS: usize = 5;
    \ No newline at end of file +PARALLEL_REQUESTS in wallet_esplora_async - Rust

    Constant wallet_esplora_async::PARALLEL_REQUESTS

    source ·
    pub(crate) const PARALLEL_REQUESTS: usize = 5;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.SEND_AMOUNT.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.SEND_AMOUNT.html index 8f22c9902d..c06e864fd1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.SEND_AMOUNT.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.SEND_AMOUNT.html @@ -1 +1 @@ -SEND_AMOUNT in wallet_esplora_async - Rust
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file +SEND_AMOUNT in wallet_esplora_async - Rust

    Constant wallet_esplora_async::SEND_AMOUNT

    source ·
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.STOP_GAP.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.STOP_GAP.html index 36afeec8d7..cc92fbaf81 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.STOP_GAP.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/constant.STOP_GAP.html @@ -1 +1 @@ -STOP_GAP in wallet_esplora_async - Rust
    pub(crate) const STOP_GAP: usize = 50;
    \ No newline at end of file +STOP_GAP in wallet_esplora_async - Rust

    Constant wallet_esplora_async::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 50;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/fn.main.html index c19b13eb48..b4bf97f675 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/fn.main.html @@ -1 +1 @@ -main in wallet_esplora_async - Rust

    Function wallet_esplora_async::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file +main in wallet_esplora_async - Rust

    Function wallet_esplora_async::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/index.html index e288042426..cff01f8456 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/index.html @@ -1 +1 @@ -wallet_esplora_async - Rust

    Constants

    DB_MAGIC ðŸ”’
    SEND_AMOUNT ðŸ”’
    STOP_GAP ðŸ”’

    Functions

    main ðŸ”’
    \ No newline at end of file +wallet_esplora_async - Rust

    Crate wallet_esplora_async

    source ·

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/sidebar-items.js index 2c754b0761..7b24e5e6e1 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_async/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["DB_MAGIC",""],["PARALLEL_REQUESTS",""],["SEND_AMOUNT",""],["STOP_GAP",""]],"fn":[["main",""]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/all.html index ccd720a200..832ed58fd2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file +List of all items in this crate

    List of all items

    Functions

    Constants

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_MAGIC.html index d6dfc8aae2..33b27acc8a 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_MAGIC.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.DB_MAGIC.html @@ -1 +1 @@ -DB_MAGIC in wallet_esplora_blocking - Rust
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_esplora_example";
    \ No newline at end of file +DB_MAGIC in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &str = "bdk_wallet_esplora_example";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.PARALLEL_REQUESTS.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.PARALLEL_REQUESTS.html index c0c7a47ddb..59669f316b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.PARALLEL_REQUESTS.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.PARALLEL_REQUESTS.html @@ -1 +1 @@ -PARALLEL_REQUESTS in wallet_esplora_blocking - Rust
    pub(crate) const PARALLEL_REQUESTS: usize = 1;
    \ No newline at end of file +PARALLEL_REQUESTS in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::PARALLEL_REQUESTS

    source ·
    pub(crate) const PARALLEL_REQUESTS: usize = 1;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.SEND_AMOUNT.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.SEND_AMOUNT.html index bf3260e421..c269c5927b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.SEND_AMOUNT.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.SEND_AMOUNT.html @@ -1 +1 @@ -SEND_AMOUNT in wallet_esplora_blocking - Rust
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file +SEND_AMOUNT in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::SEND_AMOUNT

    source ·
    pub(crate) const SEND_AMOUNT: Amount;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.STOP_GAP.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.STOP_GAP.html index 965000edf1..a8d8d7711b 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.STOP_GAP.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/constant.STOP_GAP.html @@ -1 +1 @@ -STOP_GAP in wallet_esplora_blocking - Rust
    pub(crate) const STOP_GAP: usize = 5;
    \ No newline at end of file +STOP_GAP in wallet_esplora_blocking - Rust

    Constant wallet_esplora_blocking::STOP_GAP

    source ·
    pub(crate) const STOP_GAP: usize = 5;
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/fn.main.html index d10e425e3a..834203816f 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/fn.main.html @@ -1 +1 @@ -main in wallet_esplora_blocking - Rust

    Function wallet_esplora_blocking::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file +main in wallet_esplora_blocking - Rust

    Function wallet_esplora_blocking::main

    source ·
    pub(crate) fn main() -> Result<(), Error>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/index.html index 99745e1a0a..f034169fa5 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/index.html @@ -1 +1 @@ -wallet_esplora_blocking - Rust

    Constants

    DB_MAGIC ðŸ”’
    SEND_AMOUNT ðŸ”’
    STOP_GAP ðŸ”’

    Functions

    main ðŸ”’
    \ No newline at end of file +wallet_esplora_blocking - Rust

    Crate wallet_esplora_blocking

    source ·

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/sidebar-items.js index 2c754b0761..f91618f926 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_esplora_blocking/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["DB_MAGIC",""],["PARALLEL_REQUESTS",""],["SEND_AMOUNT",""],["STOP_GAP",""]],"fn":[["main",""]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DB_MAGIC","PARALLEL_REQUESTS","SEND_AMOUNT","STOP_GAP"],"fn":["main"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/all.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/all.html index a902abf7be..40a547f47c 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/all.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/all.html @@ -1 +1 @@ -List of all items in this crate

    List of all items

    Structs

    Enums

    Functions

    Constants

    \ No newline at end of file +List of all items in this crate

    List of all items

    Structs

    Enums

    Functions

    Constants

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/constant.DB_MAGIC.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/constant.DB_MAGIC.html index 70041c411e..12b62e5c2d 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/constant.DB_MAGIC.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/constant.DB_MAGIC.html @@ -1 +1 @@ -DB_MAGIC in wallet_rpc - Rust

    Constant wallet_rpc::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &str = "bdk-rpc-wallet-example";
    \ No newline at end of file +DB_MAGIC in wallet_rpc - Rust

    Constant wallet_rpc::DB_MAGIC

    source ·
    pub(crate) const DB_MAGIC: &str = "bdk-rpc-wallet-example";
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/enum.Emission.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/enum.Emission.html index 9d931b48ad..6929340578 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/enum.Emission.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/enum.Emission.html @@ -1,9 +1,16 @@ -Emission in wallet_rpc - Rust

    Enum wallet_rpc::Emission

    source ·
    pub(crate) enum Emission {
    +Emission in wallet_rpc - Rust

    Enum wallet_rpc::Emission

    source ·
    pub(crate) enum Emission {
         SigTerm,
         Block(BlockEvent<Block>),
         Mempool(Vec<(Transaction, u64)>),
    -}

    Variants§

    §

    SigTerm

    §

    Block(BlockEvent<Block>)

    §

    Mempool(Vec<(Transaction, u64)>)

    Trait Implementations§

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +}

    Variants§

    §

    SigTerm

    §

    Block(BlockEvent<Block>)

    §

    Mempool(Vec<(Transaction, u64)>)

    Trait Implementations§

    source§

    impl Debug for Emission

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/fn.main.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/fn.main.html index 6abf69b4ff..aa49621d12 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/fn.main.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/fn.main.html @@ -1 +1 @@ -main in wallet_rpc - Rust

    Function wallet_rpc::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file +main in wallet_rpc - Rust

    Function wallet_rpc::main

    source ·
    pub(crate) fn main() -> Result<()>
    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/index.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/index.html index 5a17eb49ec..1dfcf18e68 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/index.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/index.html @@ -1 +1 @@ -wallet_rpc - Rust

    Crate wallet_rpc

    source ·

    Structs

    Bitcoind RPC example using bdk_wallet::Wallet.

    Enums

    Emission ðŸ”’

    Constants

    DB_MAGIC ðŸ”’

    Functions

    main ðŸ”’
    \ No newline at end of file +wallet_rpc - Rust

    Crate wallet_rpc

    source ·

    Structs§

    • Bitcoind RPC example using bdk_wallet::Wallet.

    Enums§

    Constants§

    Functions§

    \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/sidebar-items.js b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/sidebar-items.js index 48d556c0ce..c874a3c3d4 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/sidebar-items.js +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":[["DB_MAGIC",""]],"enum":[["Emission",""]],"fn":[["main",""]],"struct":[["Args","Bitcoind RPC example using `bdk_wallet::Wallet`."]]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["DB_MAGIC"],"enum":["Emission"],"fn":["main"],"struct":["Args"]}; \ No newline at end of file diff --git a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/struct.Args.html b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/struct.Args.html index 80b84edf2b..ad5c843bc2 100644 --- a/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/struct.Args.html +++ b/docs/.vuepress/public/docs-rs/bdk/nightly/latest/wallet_rpc/struct.Args.html @@ -1,4 +1,4 @@ -Args in wallet_rpc - Rust

    Struct wallet_rpc::Args

    source ·
    pub struct Args {
    +Args in wallet_rpc - Rust

    Struct wallet_rpc::Args

    source ·
    pub struct Args {
         pub descriptor: String,
         pub change_descriptor: Option<String>,
         pub start_height: u32,
    @@ -8,20 +8,43 @@
         pub rpc_cookie: Option<PathBuf>,
         pub rpc_user: Option<String>,
         pub rpc_pass: Option<String>,
    -}
    Expand description

    Bitcoind RPC example using bdk_wallet::Wallet.

    +}
    Expand description

    Bitcoind RPC example using bdk_wallet::Wallet.

    This syncs the chain block-by-block and prints the current balance, transaction count and UTXO count.

    -

    Fields§

    §descriptor: String

    Wallet descriptor

    -
    §change_descriptor: Option<String>

    Wallet change descriptor

    -
    §start_height: u32

    Earliest block height to start sync from

    -
    §network: Network

    Bitcoin network to connect to

    -
    §db_path: PathBuf

    Where to store wallet data

    -
    §url: String

    RPC URL

    -
    §rpc_cookie: Option<PathBuf>

    RPC auth cookie file

    -
    §rpc_user: Option<String>

    RPC auth username

    -
    §rpc_pass: Option<String>

    RPC auth password

    -

    Implementations§

    Trait Implementations§

    Append to [Command] so it can instantiate Self. Read more
    Append to [Command] so it can update self. Read more
    Deprecated, replaced with CommandFactory::command
    Deprecated, replaced with CommandFactory::command_for_update
    Build a [Command] that can instantiate Self. Read more
    Build a [Command] that can update self. Read more
    Formats the value using the given formatter. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    Assign values from ArgMatches to self.
    Assign values from ArgMatches to self.
    Parse from std::env::args_os(), exit on error
    Parse from std::env::args_os(), return Err on error.
    Parse from iterator, exit on error
    Parse from iterator, return Err on error.
    Update from iterator, exit on error
    Update from iterator, return Err on error.

    Auto Trait Implementations§

    Blanket Implementations§

    Gets the TypeId of self. Read more
    Immutably borrows from an owned value. Read more
    Mutably borrows from an owned value. Read more

    Returns the argument unchanged.

    -

    Calls U::from(self).

    +

    Fields§

    §descriptor: String

    Wallet descriptor

    +
    §change_descriptor: Option<String>

    Wallet change descriptor

    +
    §start_height: u32

    Earliest block height to start sync from

    +
    §network: Network

    Bitcoin network to connect to

    +
    §db_path: PathBuf

    Where to store wallet data

    +
    §url: String

    RPC URL

    +
    §rpc_cookie: Option<PathBuf>

    RPC auth cookie file

    +
    §rpc_user: Option<String>

    RPC auth username

    +
    §rpc_pass: Option<String>

    RPC auth password

    +

    Implementations§

    source§

    impl Args

    source

    pub(crate) fn client(&self) -> Result<Client>

    Trait Implementations§

    source§

    impl Args for Args

    source§

    fn augment_args<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can instantiate Self. Read more
    source§

    fn augment_args_for_update<'b>(__clap_app: Command<'b>) -> Command<'b>

    Append to [Command] so it can update self. Read more
    source§

    impl CommandFactory for Args

    source§

    fn into_app<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command
    source§

    fn into_app_for_update<'b>() -> Command<'b>

    Deprecated, replaced with CommandFactory::command_for_update
    §

    fn command<'help>() -> App<'help>

    Build a [Command] that can instantiate Self. Read more
    §

    fn command_for_update<'help>() -> App<'help>

    Build a [Command] that can update self. Read more
    source§

    impl Debug for Args

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl FromArgMatches for Args

    source§

    fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn from_arg_matches_mut( + __clap_arg_matches: &mut ArgMatches +) -> Result<Self, Error>

    Instantiate Self from [ArgMatches], parsing the arguments as needed. Read more
    source§

    fn update_from_arg_matches( + &mut self, + __clap_arg_matches: &ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    fn update_from_arg_matches_mut( + &mut self, + __clap_arg_matches: &mut ArgMatches +) -> Result<(), Error>

    Assign values from ArgMatches to self.
    source§

    impl Parser for Args

    §

    fn parse() -> Self

    Parse from std::env::args_os(), exit on error
    §

    fn try_parse() -> Result<Self, Error>

    Parse from std::env::args_os(), return Err on error.
    §

    fn parse_from<I, T>(itr: I) -> Self
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, exit on error
    §

    fn try_parse_from<I, T>(itr: I) -> Result<Self, Error>
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Parse from iterator, return Err on error.
    §

    fn update_from<I, T>(&mut self, itr: I)
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, exit on error
    §

    fn try_update_from<I, T>(&mut self, itr: I) -> Result<(), Error>
    where + I: IntoIterator<Item = T>, + T: Into<OsString> + Clone,

    Update from iterator, return Err on error.

    Auto Trait Implementations§

    §

    impl Freeze for Args

    §

    impl RefUnwindSafe for Args

    §

    impl Send for Args

    §

    impl Sync for Args

    §

    impl Unpin for Args

    §

    impl UnwindSafe for Args

    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> 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.

    -
    The type returned in the event of a conversion error.
    Performs the conversion.
    The type returned in the event of a conversion error.
    Performs the conversion.
    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    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>,

    §

    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.
    §

    impl<V, T> VZip<V> for T
    where + V: MultiLane<T>,

    §

    fn vzip(self) -> V

    \ No newline at end of file