[wallet] Make 'unspendable' into a HashSet
to avoid awkwardly later on.
This commit is contained in:
parent
c549281ace
commit
b87c7c5dc7
@ -969,14 +969,9 @@ where
|
||||
&self,
|
||||
change_policy: tx_builder::ChangeSpendPolicy,
|
||||
utxo: &Option<Vec<OutPoint>>,
|
||||
unspendable: &Option<Vec<OutPoint>>,
|
||||
unspendable: &HashSet<OutPoint>,
|
||||
send_all: bool,
|
||||
) -> Result<(Vec<(UTXO, usize)>, bool), Error> {
|
||||
let unspendable_set = match unspendable {
|
||||
None => HashSet::new(),
|
||||
Some(vec) => vec.iter().collect(),
|
||||
};
|
||||
|
||||
let external_weight = self
|
||||
.get_descriptor_for_script_type(ScriptType::External)
|
||||
.0
|
||||
@ -1016,7 +1011,7 @@ where
|
||||
// otherwise limit ourselves to the spendable utxos for the selected policy, and the `send_all` setting
|
||||
None => {
|
||||
let utxos = self.list_unspent()?.into_iter().filter(|u| {
|
||||
change_policy.is_satisfied_by(u) && !unspendable_set.contains(&u.outpoint)
|
||||
change_policy.is_satisfied_by(u) && !unspendable.contains(&u.outpoint)
|
||||
});
|
||||
|
||||
Ok((utxos.map(add_weight).collect(), send_all))
|
||||
|
@ -42,6 +42,7 @@
|
||||
//! ```
|
||||
|
||||
use std::collections::BTreeMap;
|
||||
use std::collections::HashSet;
|
||||
use std::default::Default;
|
||||
use std::marker::PhantomData;
|
||||
|
||||
@ -63,7 +64,7 @@ pub struct TxBuilder<D: Database, Cs: CoinSelectionAlgorithm<D>> {
|
||||
pub(crate) fee_policy: Option<FeePolicy>,
|
||||
pub(crate) policy_path: Option<BTreeMap<String, Vec<usize>>>,
|
||||
pub(crate) utxos: Option<Vec<OutPoint>>,
|
||||
pub(crate) unspendable: Option<Vec<OutPoint>>,
|
||||
pub(crate) unspendable: HashSet<OutPoint>,
|
||||
pub(crate) sighash: Option<SigHashType>,
|
||||
pub(crate) ordering: TxOrdering,
|
||||
pub(crate) locktime: Option<u32>,
|
||||
@ -197,7 +198,7 @@ impl<D: Database, Cs: CoinSelectionAlgorithm<D>> TxBuilder<D, Cs> {
|
||||
/// [`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>) -> Self {
|
||||
self.unspendable = Some(unspendable);
|
||||
self.unspendable = unspendable.into_iter().collect();
|
||||
self
|
||||
}
|
||||
|
||||
@ -207,7 +208,7 @@ impl<D: Database, Cs: CoinSelectionAlgorithm<D>> TxBuilder<D, Cs> {
|
||||
/// [`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) -> Self {
|
||||
self.unspendable.get_or_insert(vec![]).push(unspendable);
|
||||
self.unspendable.insert(unspendable);
|
||||
self
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user