From 0a02d26835a41556cf0f6899f97fdb42bf4d0f9d Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BF=97=E5=AE=87?= Date: Thu, 1 May 2025 10:28:42 +1000 Subject: [PATCH] feat(chain): Add convenience conversions for `CanonicalTx` * `From for Txid` * `From for Arc` Also added a convenience method `ChainPosition::is_unconfirmed`. These are intended to simplify the calls needed to populate the `expected_mempool_txids` field of `Emitter::new`. --- crates/chain/src/chain_data.rs | 5 +++++ crates/chain/src/tx_graph.rs | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/crates/chain/src/chain_data.rs b/crates/chain/src/chain_data.rs index a4d764c0..4890b08a 100644 --- a/crates/chain/src/chain_data.rs +++ b/crates/chain/src/chain_data.rs @@ -40,6 +40,11 @@ impl ChainPosition { pub fn is_confirmed(&self) -> bool { matches!(self, Self::Confirmed { .. }) } + + /// Returns whether [`ChainPosition`] is unconfirmed or not. + pub fn is_unconfirmed(&self) -> bool { + matches!(self, Self::Unconfirmed { .. }) + } } impl ChainPosition<&A> { diff --git a/crates/chain/src/tx_graph.rs b/crates/chain/src/tx_graph.rs index a10f3e75..7916bf95 100644 --- a/crates/chain/src/tx_graph.rs +++ b/crates/chain/src/tx_graph.rs @@ -251,6 +251,18 @@ pub struct CanonicalTx<'a, T, A> { pub tx_node: TxNode<'a, T, A>, } +impl<'a, T, A> From> for Txid { + fn from(tx: CanonicalTx<'a, T, A>) -> Self { + tx.tx_node.txid + } +} + +impl<'a, A> From, A>> for Arc { + fn from(tx: CanonicalTx<'a, Arc, A>) -> Self { + tx.tx_node.tx + } +} + /// Errors returned by `TxGraph::calculate_fee`. #[derive(Debug, PartialEq, Eq)] pub enum CalculateFeeError { -- 2.49.0