Merge bitcoindevkit/bdk-ffi#153: Simplify using struct update syntax and clone

e5cd7cb3a200ba6e907b4f0ec9fdfd2f621ffd6f Simplify using struct update syntax and clone (Sudarsan Balaji)

Pull request description:

ACKs for top commit:
  notmandatory:
    ACK e5cd7cb3a200ba6e907b4f0ec9fdfd2f621ffd6f

Tree-SHA512: 643013f6b0e131a56d9819598c99e7ac4ed008e121bd22d0e3d7dcff61bcb0826c8f1295bf2317580865e2b014f12b56bf4b538f0461a120ad3222b35b7cb933
This commit is contained in:
Steve Myers 2022-05-13 10:13:15 -07:00
commit ff260edb3c
No known key found for this signature in database
GPG Key ID: 8105A46B22C2D051

View File

@ -325,6 +325,7 @@ enum RbfValue {
Value(u32),
}
#[derive(Clone)]
struct TxBuilder {
recipients: Vec<(String, u64)>,
fee_rate: Option<f32>,
@ -349,60 +350,42 @@ impl TxBuilder {
recipients.append(&mut vec![(recipient, amount)]);
Arc::new(TxBuilder {
recipients,
fee_rate: self.fee_rate,
drain_wallet: self.drain_wallet,
drain_to: self.drain_to.clone(),
rbf: self.rbf.clone(),
..self.clone()
})
}
fn fee_rate(&self, sat_per_vb: f32) -> Arc<Self> {
Arc::new(TxBuilder {
recipients: self.recipients.to_vec(),
fee_rate: Some(sat_per_vb),
drain_wallet: self.drain_wallet,
drain_to: self.drain_to.clone(),
rbf: self.rbf.clone(),
..self.clone()
})
}
fn drain_wallet(&self) -> Arc<Self> {
Arc::new(TxBuilder {
recipients: self.recipients.to_vec(),
fee_rate: self.fee_rate,
drain_wallet: true,
drain_to: self.drain_to.clone(),
rbf: self.rbf.clone(),
..self.clone()
})
}
fn drain_to(&self, address: String) -> Arc<Self> {
Arc::new(TxBuilder {
recipients: self.recipients.to_vec(),
fee_rate: self.fee_rate,
drain_wallet: self.drain_wallet,
drain_to: Some(address),
rbf: self.rbf.clone(),
..self.clone()
})
}
fn enable_rbf(&self) -> Arc<Self> {
Arc::new(TxBuilder {
recipients: self.recipients.to_vec(),
fee_rate: self.fee_rate,
drain_wallet: self.drain_wallet,
drain_to: self.drain_to.clone(),
rbf: Some(RbfValue::Default),
..self.clone()
})
}
fn enable_rbf_with_sequence(&self, nsequence: u32) -> Arc<Self> {
Arc::new(TxBuilder {
recipients: self.recipients.to_vec(),
fee_rate: self.fee_rate,
drain_wallet: self.drain_wallet,
drain_to: self.drain_to.clone(),
rbf: Some(RbfValue::Value(nsequence)),
..self.clone()
})
}
@ -440,6 +423,7 @@ impl TxBuilder {
}
}
#[derive(Clone)]
struct BumpFeeTxBuilder {
txid: String,
fee_rate: f32,
@ -459,28 +443,22 @@ impl BumpFeeTxBuilder {
fn allow_shrinking(&self, address: String) -> Arc<Self> {
Arc::new(Self {
txid: self.txid.clone(),
fee_rate: self.fee_rate,
allow_shrinking: Some(address),
rbf: self.rbf.clone(),
..self.clone()
})
}
fn enable_rbf(&self) -> Arc<Self> {
Arc::new(Self {
txid: self.txid.clone(),
fee_rate: self.fee_rate,
allow_shrinking: self.allow_shrinking.clone(),
rbf: Some(RbfValue::Default),
..self.clone()
})
}
fn enable_rbf_with_sequence(&self, nsequence: u32) -> Arc<Self> {
Arc::new(Self {
txid: self.txid.clone(),
fee_rate: self.fee_rate,
allow_shrinking: self.allow_shrinking.clone(),
rbf: Some(RbfValue::Value(nsequence)),
..self.clone()
})
}