Skip to content

Commit 728ae8f

Browse files
committed
Add CoinSelectionResult constructor
1 parent b0ef4e7 commit 728ae8f

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

src/wallet/coin_selection.rs

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,9 @@
4646
//! let mut selected_amount = 0;
4747
//! let mut additional_weight = 0;
4848
//! let all_utxos_selected = required_utxos
49+
//! .clone()
4950
//! .into_iter()
50-
//! .chain(optional_utxos)
51+
//! .chain(optional_utxos.clone())
5152
//! .scan(
5253
//! (&mut selected_amount, &mut additional_weight),
5354
//! |(selected_amount, additional_weight), weighted_utxo| {
@@ -66,10 +67,21 @@
6667
//! });
6768
//! }
6869
//!
69-
//! Ok(CoinSelectionResult {
70-
//! selected: all_utxos_selected,
71-
//! fee_amount: fee_amount + additional_fees,
72-
//! })
70+
//! let calculated_waste = Some(
71+
//! calculate_waste(
72+
//! required_utxos.into_iter().chain(optional_utxos).collect::<Vec<WeightedUtxo>>(),
73+
//! None,
74+
//! amount_needed,
75+
//! fee_rate,
76+
//! FeeRate::from_sat_per_vb(10.0),
77+
//! ).unwrap()
78+
//! );
79+
//!
80+
//! Ok(CoinSelectionResult::new(
81+
//! all_utxos_selected,
82+
//! fee_amount + additional_fees,
83+
//! calculated_waste,
84+
//! ))
7385
//! }
7486
//! }
7587
//!
@@ -123,6 +135,15 @@ pub struct CoinSelectionResult {
123135
}
124136

125137
impl CoinSelectionResult {
138+
/// Create new CoinSelectionResult
139+
pub fn new(selected_utxos: Vec<Utxo>, fee_amount: u64, selection_waste: Option<Waste>) -> Self {
140+
CoinSelectionResult {
141+
selected: selected_utxos,
142+
fee_amount,
143+
waste: selection_waste,
144+
}
145+
}
146+
126147
/// The total value of the inputs selected.
127148
pub fn selected_amount(&self) -> u64 {
128149
self.selected.iter().map(|u| u.txout().value).sum()
@@ -306,10 +327,7 @@ impl<D: Database> CoinSelectionAlgorithm<D> for LargestFirstCoinSelection {
306327
});
307328
}
308329

309-
Ok(CoinSelectionResult {
310-
selected,
311-
fee_amount,
312-
})
330+
Ok(CoinSelectionResult::new(selected, fee_amount, None))
313331
}
314332
}
315333

@@ -598,10 +616,7 @@ impl BranchAndBoundCoinSelection {
598616
.map(|u| u.weighted_utxo.utxo)
599617
.collect::<Vec<_>>();
600618

601-
CoinSelectionResult {
602-
selected,
603-
fee_amount,
604-
}
619+
CoinSelectionResult::new(selected, fee_amount, None)
605620
}
606621
}
607622

0 commit comments

Comments
 (0)