|
46 | 46 | //! let mut selected_amount = 0;
|
47 | 47 | //! let mut additional_weight = 0;
|
48 | 48 | //! let all_utxos_selected = required_utxos
|
| 49 | +//! .clone() |
49 | 50 | //! .into_iter()
|
50 |
| -//! .chain(optional_utxos) |
| 51 | +//! .chain(optional_utxos.clone()) |
51 | 52 | //! .scan(
|
52 | 53 | //! (&mut selected_amount, &mut additional_weight),
|
53 | 54 | //! |(selected_amount, additional_weight), weighted_utxo| {
|
|
66 | 67 | //! });
|
67 | 68 | //! }
|
68 | 69 | //!
|
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 | +//! )) |
73 | 85 | //! }
|
74 | 86 | //! }
|
75 | 87 | //!
|
@@ -123,6 +135,15 @@ pub struct CoinSelectionResult {
|
123 | 135 | }
|
124 | 136 |
|
125 | 137 | 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 | + |
126 | 147 | /// The total value of the inputs selected.
|
127 | 148 | pub fn selected_amount(&self) -> u64 {
|
128 | 149 | self.selected.iter().map(|u| u.txout().value).sum()
|
@@ -306,10 +327,7 @@ impl<D: Database> CoinSelectionAlgorithm<D> for LargestFirstCoinSelection {
|
306 | 327 | });
|
307 | 328 | }
|
308 | 329 |
|
309 |
| - Ok(CoinSelectionResult { |
310 |
| - selected, |
311 |
| - fee_amount, |
312 |
| - }) |
| 330 | + Ok(CoinSelectionResult::new(selected, fee_amount, None)) |
313 | 331 | }
|
314 | 332 | }
|
315 | 333 |
|
@@ -598,10 +616,7 @@ impl BranchAndBoundCoinSelection {
|
598 | 616 | .map(|u| u.weighted_utxo.utxo)
|
599 | 617 | .collect::<Vec<_>>();
|
600 | 618 |
|
601 |
| - CoinSelectionResult { |
602 |
| - selected, |
603 |
| - fee_amount, |
604 |
| - } |
| 619 | + CoinSelectionResult::new(selected, fee_amount, None) |
605 | 620 | }
|
606 | 621 | }
|
607 | 622 |
|
|
0 commit comments