&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
// 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))
//! ```
use std::collections::BTreeMap;
+use std::collections::HashSet;
use std::default::Default;
use std::marker::PhantomData;
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>,
/// [`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
}
/// [`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
}