Skip to content

Commit 18b1b30

Browse files
committed
Merge #640: Clippy lints MSRV 1.56.1
e2636f3 Clippy lints MSRV 1.56.1 (Jose Storopoli) Pull request description: Nothing out of the ordinary. The most alarming was the non-inclusive range in `test_utils.rs`. In some test functions I allowed myself to use `#[allow(clippy::type_complexity)]` because clippy was asking to create a type instead of using the big tuple. Since these were used just once, I thought it was overkill. Note, depends on: - #639 (we can also merge this into it instead of `master`) - #638 (has some allows on dead_code) ACKs for top commit: apoelstra: ACK e2636f3 Tree-SHA512: d1f38d1e2a1415da816898806377c90986072fe0bc9a9dbc3e5476026c05c53743453cbd0a237a70aa27762f1be86e44c19422575b7e62f686140accc412177c
2 parents 3426ca5 + e2636f3 commit 18b1b30

File tree

9 files changed

+57
-60
lines changed

9 files changed

+57
-60
lines changed

examples/verify_tx.rs

+13-15
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,14 @@ fn main() {
4646

4747
for elem in interpreter.iter_assume_sigs() {
4848
// Don't bother checking signatures.
49-
match elem.expect("no evaluation error") {
50-
miniscript::interpreter::SatisfiedConstraint::PublicKey { key_sig } => {
51-
let (key, sig) = key_sig
52-
.as_ecdsa()
53-
.expect("expected ecdsa sig, found schnorr sig");
54-
55-
println!("Signed with:\n key: {}\n sig: {}", key, sig);
56-
}
57-
_ => {}
49+
if let miniscript::interpreter::SatisfiedConstraint::PublicKey { key_sig } =
50+
elem.expect("no evaluation error")
51+
{
52+
let (key, sig) = key_sig
53+
.as_ecdsa()
54+
.expect("expected ecdsa sig, found schnorr sig");
55+
56+
println!("Signed with:\n key: {}\n sig: {}", key, sig);
5857
}
5958
}
6059

@@ -71,12 +70,11 @@ fn main() {
7170
let prevouts = sighash::Prevouts::All::<bitcoin::TxOut>(&[]);
7271

7372
for elem in interpreter.iter(&secp, &tx, 0, &prevouts) {
74-
match elem.expect("no evaluation error") {
75-
miniscript::interpreter::SatisfiedConstraint::PublicKey { key_sig } => {
76-
let (key, sig) = key_sig.as_ecdsa().unwrap();
77-
println!("Signed with:\n key: {}\n sig: {}", key, sig);
78-
}
79-
_ => {}
73+
if let miniscript::interpreter::SatisfiedConstraint::PublicKey { key_sig } =
74+
elem.expect("no evaluation error")
75+
{
76+
let (key, sig) = key_sig.as_ecdsa().unwrap();
77+
println!("Signed with:\n key: {}\n sig: {}", key, sig);
8078
}
8179
}
8280

examples/xpub_descriptors.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ fn p2wsh<C: Verification>(secp: &Secp256k1<C>) -> Address {
3030

3131
let address = Descriptor::<DefiniteDescriptorKey>::from_str(&s)
3232
.unwrap()
33-
.derived_descriptor(&secp)
33+
.derived_descriptor(secp)
3434
.unwrap()
3535
.address(Network::Bitcoin)
3636
.unwrap();
@@ -53,7 +53,7 @@ fn p2sh_p2wsh<C: Verification>(secp: &Secp256k1<C>) -> Address {
5353

5454
let address = Descriptor::<DescriptorPublicKey>::from_str(&s)
5555
.unwrap()
56-
.derived_descriptor(&secp, 5)
56+
.derived_descriptor(secp, 5)
5757
.unwrap()
5858
.address(Network::Bitcoin)
5959
.unwrap();

src/descriptor/mod.rs

+12-12
Original file line numberDiff line numberDiff line change
@@ -809,7 +809,7 @@ impl Descriptor<DescriptorPublicKey> {
809809
///
810810
/// For multipath descriptors it will return as many descriptors as there is
811811
/// "parallel" paths. For regular descriptors it will just return itself.
812-
#[allow(clippy::blocks_in_if_conditions)]
812+
#[allow(clippy::blocks_in_conditions)]
813813
pub fn into_single_descriptors(self) -> Result<Vec<Descriptor<DescriptorPublicKey>>, Error> {
814814
// All single-path descriptors contained in this descriptor.
815815
let mut descriptors = Vec::new();
@@ -1114,7 +1114,7 @@ mod tests {
11141114
.push_opcode(opcodes::all::OP_DUP)
11151115
.push_opcode(opcodes::all::OP_HASH160)
11161116
.push_slice(
1117-
&hash160::Hash::from_str("84e9ed95a38613f0527ff685a9928abe2d4754d4",)
1117+
hash160::Hash::from_str("84e9ed95a38613f0527ff685a9928abe2d4754d4",)
11181118
.unwrap()
11191119
.to_byte_array()
11201120
)
@@ -1138,7 +1138,7 @@ mod tests {
11381138
script::Builder::new()
11391139
.push_opcode(opcodes::all::OP_PUSHBYTES_0)
11401140
.push_slice(
1141-
&hash160::Hash::from_str("84e9ed95a38613f0527ff685a9928abe2d4754d4",)
1141+
hash160::Hash::from_str("84e9ed95a38613f0527ff685a9928abe2d4754d4",)
11421142
.unwrap()
11431143
.to_byte_array()
11441144
)
@@ -1160,7 +1160,7 @@ mod tests {
11601160
script::Builder::new()
11611161
.push_opcode(opcodes::all::OP_HASH160)
11621162
.push_slice(
1163-
&hash160::Hash::from_str("f1c3b9a431134cb90a500ec06e0067cfa9b8bba7",)
1163+
hash160::Hash::from_str("f1c3b9a431134cb90a500ec06e0067cfa9b8bba7",)
11641164
.unwrap()
11651165
.to_byte_array()
11661166
)
@@ -1183,7 +1183,7 @@ mod tests {
11831183
script::Builder::new()
11841184
.push_opcode(opcodes::all::OP_HASH160)
11851185
.push_slice(
1186-
&hash160::Hash::from_str("aa5282151694d3f2f32ace7d00ad38f927a33ac8",)
1186+
hash160::Hash::from_str("aa5282151694d3f2f32ace7d00ad38f927a33ac8",)
11871187
.unwrap()
11881188
.to_byte_array()
11891189
)
@@ -1206,7 +1206,7 @@ mod tests {
12061206
script::Builder::new()
12071207
.push_opcode(opcodes::all::OP_PUSHBYTES_0)
12081208
.push_slice(
1209-
&sha256::Hash::from_str(
1209+
sha256::Hash::from_str(
12101210
"\
12111211
f9379edc8983152dc781747830075bd5\
12121212
3896e4b0ce5bff73777fd77d124ba085\
@@ -1233,7 +1233,7 @@ mod tests {
12331233
script::Builder::new()
12341234
.push_opcode(opcodes::all::OP_HASH160)
12351235
.push_slice(
1236-
&hash160::Hash::from_str("4bec5d7feeed99e1d0a23fe32a4afe126a7ff07e",)
1236+
hash160::Hash::from_str("4bec5d7feeed99e1d0a23fe32a4afe126a7ff07e",)
12371237
.unwrap()
12381238
.to_byte_array()
12391239
)
@@ -1328,7 +1328,7 @@ mod tests {
13281328
previous_output: bitcoin::OutPoint::default(),
13291329
script_sig: bitcoin::ScriptBuf::new(),
13301330
sequence: Sequence::from_height(100),
1331-
witness: Witness::from_slice(&vec![sigser.clone(), pk.to_bytes(),]),
1331+
witness: Witness::from_slice(&[sigser.clone(), pk.to_bytes()]),
13321332
}
13331333
);
13341334
assert_eq!(wpkh.unsigned_script_sig(), bitcoin::ScriptBuf::new());
@@ -1338,7 +1338,7 @@ mod tests {
13381338
let redeem_script = script::Builder::new()
13391339
.push_opcode(opcodes::all::OP_PUSHBYTES_0)
13401340
.push_slice(
1341-
&hash160::Hash::from_str("d1b2a1faf62e73460af885c687dee3b7189cd8ab")
1341+
hash160::Hash::from_str("d1b2a1faf62e73460af885c687dee3b7189cd8ab")
13421342
.unwrap()
13431343
.to_byte_array(),
13441344
)
@@ -1351,7 +1351,7 @@ mod tests {
13511351
.push_slice(<&PushBytes>::try_from(redeem_script.as_bytes()).unwrap())
13521352
.into_script(),
13531353
sequence: Sequence::from_height(100),
1354-
witness: Witness::from_slice(&vec![sigser.clone(), pk.to_bytes(),]),
1354+
witness: Witness::from_slice(&[sigser.clone(), pk.to_bytes()]),
13551355
}
13561356
);
13571357
assert_eq!(
@@ -1388,7 +1388,7 @@ mod tests {
13881388
previous_output: bitcoin::OutPoint::default(),
13891389
script_sig: bitcoin::ScriptBuf::new(),
13901390
sequence: Sequence::from_height(100),
1391-
witness: Witness::from_slice(&vec![sigser.clone(), ms.encode().into_bytes(),]),
1391+
witness: Witness::from_slice(&[sigser.clone(), ms.encode().into_bytes()]),
13921392
}
13931393
);
13941394
assert_eq!(wsh.unsigned_script_sig(), bitcoin::ScriptBuf::new());
@@ -1403,7 +1403,7 @@ mod tests {
14031403
.push_slice(<&PushBytes>::try_from(ms.encode().to_p2wsh().as_bytes()).unwrap())
14041404
.into_script(),
14051405
sequence: Sequence::from_height(100),
1406-
witness: Witness::from_slice(&vec![sigser.clone(), ms.encode().into_bytes(),]),
1406+
witness: Witness::from_slice(&[sigser.clone(), ms.encode().into_bytes()]),
14071407
}
14081408
);
14091409
assert_eq!(

src/interpreter/inner.rs

+14-14
Original file line numberDiff line numberDiff line change
@@ -441,21 +441,21 @@ mod tests {
441441
KeyTestData {
442442
pk_spk: bitcoin::ScriptBuf::new_p2pk(&key),
443443
pkh_spk: bitcoin::ScriptBuf::new_p2pkh(&pkhash),
444-
pk_sig: script::Builder::new().push_slice(&dummy_sig).into_script(),
444+
pk_sig: script::Builder::new().push_slice(dummy_sig).into_script(),
445445
pkh_sig: script::Builder::new()
446-
.push_slice(&dummy_sig)
446+
.push_slice(dummy_sig)
447447
.push_key(&key)
448448
.into_script(),
449449
pkh_sig_justkey: script::Builder::new().push_key(&key).into_script(),
450450
wpkh_spk: wpkh_spk.clone(),
451-
wpkh_stack: Witness::from_slice(&vec![dummy_sig_vec.clone(), key.to_bytes()]),
452-
wpkh_stack_justkey: Witness::from_slice(&vec![key.to_bytes()]),
451+
wpkh_stack: Witness::from_slice(&[dummy_sig_vec.clone(), key.to_bytes()]),
452+
wpkh_stack_justkey: Witness::from_slice(&[key.to_bytes()]),
453453
sh_wpkh_spk: bitcoin::ScriptBuf::new_p2sh(&wpkh_scripthash),
454454
sh_wpkh_sig: script::Builder::new()
455455
.push_slice(<&PushBytes>::try_from(wpkh_spk[..].as_bytes()).unwrap())
456456
.into_script(),
457-
sh_wpkh_stack: Witness::from_slice(&vec![dummy_sig_vec, key.to_bytes()]),
458-
sh_wpkh_stack_justkey: Witness::from_slice(&vec![key.to_bytes()]),
457+
sh_wpkh_stack: Witness::from_slice(&[dummy_sig_vec, key.to_bytes()]),
458+
sh_wpkh_stack_justkey: Witness::from_slice(&[key.to_bytes()]),
459459
}
460460
}
461461
}
@@ -534,7 +534,7 @@ mod tests {
534534
assert_eq!(&err.to_string()[0..12], "parse error:");
535535

536536
// Witness is nonempty
537-
let wit = Witness::from_slice(&vec![vec![]]);
537+
let wit = Witness::from_slice(&[vec![]]);
538538
let err = from_txdata(&comp.pk_spk, &comp.pk_sig, &wit).unwrap_err();
539539
assert_eq!(err.to_string(), "legacy spend had nonempty witness");
540540
}
@@ -583,7 +583,7 @@ mod tests {
583583
assert_eq!(script_code, Some(uncomp.pkh_spk.clone()));
584584

585585
// Witness is nonempty
586-
let wit = Witness::from_slice(&vec![vec![]]);
586+
let wit = Witness::from_slice(&[vec![]]);
587587
let err = from_txdata(&comp.pkh_spk, &comp.pkh_sig, &wit).unwrap_err();
588588
assert_eq!(err.to_string(), "legacy spend had nonempty witness");
589589
}
@@ -706,7 +706,7 @@ mod tests {
706706
assert_eq!(&err.to_string()[0..12], "parse error:");
707707

708708
// nonempty witness
709-
let wit = Witness::from_slice(&vec![vec![]]);
709+
let wit = Witness::from_slice(&[vec![]]);
710710
let err = from_txdata(&spk, &blank_script, &wit).unwrap_err();
711711
assert_eq!(&err.to_string(), "legacy spend had nonempty witness");
712712
}
@@ -742,7 +742,7 @@ mod tests {
742742
assert_eq!(script_code, Some(redeem_script));
743743

744744
// nonempty witness
745-
let wit = Witness::from_slice(&vec![vec![]]);
745+
let wit = Witness::from_slice(&[vec![]]);
746746
let err = from_txdata(&spk, &script_sig, &wit).unwrap_err();
747747
assert_eq!(&err.to_string(), "legacy spend had nonempty witness");
748748
}
@@ -753,7 +753,7 @@ mod tests {
753753
let hash = hash160::Hash::hash(&preimage[..]);
754754
let (miniscript, witness_script) = ms_inner_script(&format!("hash160({})", hash));
755755
let wit_hash = sha256::Hash::hash(witness_script.as_bytes()).into();
756-
let wit_stack = Witness::from_slice(&vec![witness_script.to_bytes()]);
756+
let wit_stack = Witness::from_slice(&[witness_script.to_bytes()]);
757757

758758
let spk = ScriptBuf::new_p2wsh(&wit_hash);
759759
let blank_script = bitcoin::ScriptBuf::new();
@@ -763,7 +763,7 @@ mod tests {
763763
assert_eq!(&err.to_string(), "unexpected end of stack");
764764

765765
// with incorrect witness
766-
let wit = Witness::from_slice(&vec![spk.to_bytes()]);
766+
let wit = Witness::from_slice(&[spk.to_bytes()]);
767767
let err = from_txdata(&spk, &blank_script, &wit).unwrap_err();
768768
assert_eq!(&err.to_string()[0..12], "parse error:");
769769

@@ -788,7 +788,7 @@ mod tests {
788788
let hash = hash160::Hash::hash(&preimage[..]);
789789
let (miniscript, witness_script) = ms_inner_script(&format!("hash160({})", hash));
790790
let wit_hash = sha256::Hash::hash(witness_script.as_bytes()).into();
791-
let wit_stack = Witness::from_slice(&vec![witness_script.to_bytes()]);
791+
let wit_stack = Witness::from_slice(&[witness_script.to_bytes()]);
792792

793793
let redeem_script = ScriptBuf::new_p2wsh(&wit_hash);
794794
let script_sig = script::Builder::new()
@@ -808,7 +808,7 @@ mod tests {
808808
assert_eq!(&err.to_string(), "unexpected end of stack");
809809

810810
// with incorrect witness
811-
let wit = Witness::from_slice(&vec![spk.to_bytes()]);
811+
let wit = Witness::from_slice(&[spk.to_bytes()]);
812812
let err = from_txdata(&spk, &script_sig, &wit).unwrap_err();
813813
assert_eq!(&err.to_string()[0..12], "parse error:");
814814

src/interpreter/mod.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,7 @@ mod tests {
10331033
use crate::miniscript::context::NoChecks;
10341034
use crate::{Miniscript, ToPublicKey};
10351035

1036+
#[allow(clippy::type_complexity)]
10361037
fn setup_keys_sigs(
10371038
n: usize,
10381039
) -> (

src/plan.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -742,14 +742,15 @@ mod test {
742742
use super::*;
743743
use crate::*;
744744

745+
#[allow(clippy::type_complexity)]
745746
fn test_inner(
746747
desc: &str,
747748
keys: Vec<DescriptorPublicKey>,
748749
hashes: Vec<hash160::Hash>,
749750
// [ (key_indexes, hash_indexes, older, after, expected) ]
750751
tests: Vec<(Vec<usize>, Vec<usize>, Option<Sequence>, Option<LockTime>, Option<usize>)>,
751752
) {
752-
let desc = Descriptor::<DefiniteDescriptorKey>::from_str(&desc).unwrap();
753+
let desc = Descriptor::<DefiniteDescriptorKey>::from_str(desc).unwrap();
753754

754755
for (key_indexes, hash_indexes, older, after, expected) in tests {
755756
let mut assets = Assets::new();
@@ -763,7 +764,7 @@ mod test {
763764
assets = assets.add(keys[ki].clone());
764765
}
765766
for hi in hash_indexes {
766-
assets = assets.add(hashes[hi].clone());
767+
assets = assets.add(hashes[hi]);
767768
}
768769

769770
let result = desc.clone().plan(&assets);
@@ -1027,7 +1028,7 @@ mod test {
10271028
"02c2fd50ceae468857bb7eb32ae9cd4083e6c7e42fbbec179d81134b3e3830586c",
10281029
)
10291030
.unwrap()];
1030-
let hashes = vec![hash160::Hash::from_slice(&vec![0; 20]).unwrap()];
1031+
let hashes = vec![hash160::Hash::from_slice(&[0; 20]).unwrap()];
10311032
let desc = format!("wsh(and_v(v:pk({}),hash160({})))", keys[0], hashes[0]);
10321033

10331034
let tests = vec![

src/policy/semantic.rs

+3-6
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ impl<Pk: MiniscriptKey> Policy<Pk> {
420420
.count();
421421

422422
let n = subs.len() - unsatisfied_count - trivial_count; // remove all true/false
423-
let m = k.checked_sub(trivial_count).unwrap_or(0); // satisfy all trivial
423+
let m = k.saturating_sub(trivial_count); // satisfy all trivial
424424

425425
let is_and = m == n;
426426
let is_or = m == 1;
@@ -597,10 +597,7 @@ impl<Pk: MiniscriptKey> Policy<Pk> {
597597
/// Duplicate keys will be double-counted.
598598
pub fn n_keys(&self) -> usize {
599599
self.pre_order_iter()
600-
.filter(|policy| match policy {
601-
Policy::Key(..) => true,
602-
_ => false,
603-
})
600+
.filter(|policy| matches!(policy, Policy::Key(..)))
604601
.count()
605602
}
606603

@@ -687,7 +684,7 @@ impl<'a, Pk: MiniscriptKey> TreeLike for &'a Policy<Pk> {
687684
}
688685
}
689686

690-
impl<'a, Pk: MiniscriptKey> TreeLike for Arc<Policy<Pk>> {
687+
impl<Pk: MiniscriptKey> TreeLike for Arc<Policy<Pk>> {
691688
fn as_node(&self) -> Tree<Self> {
692689
use Policy::*;
693690

src/psbt/mod.rs

+7-7
Original file line numberDiff line numberDiff line change
@@ -343,32 +343,32 @@ impl<'psbt, Pk: MiniscriptKey + ToPublicKey> Satisfier<Pk> for PsbtInputSatisfie
343343
self.psbt.inputs[self.index]
344344
.hash160_preimages
345345
.get(&Pk::to_hash160(h))
346-
.and_then(try_vec_as_preimage32)
346+
.and_then(|x: &Vec<u8>| try_vec_as_preimage32(x))
347347
}
348348

349349
fn lookup_sha256(&self, h: &Pk::Sha256) -> Option<Preimage32> {
350350
self.psbt.inputs[self.index]
351351
.sha256_preimages
352352
.get(&Pk::to_sha256(h))
353-
.and_then(try_vec_as_preimage32)
353+
.and_then(|x: &Vec<u8>| try_vec_as_preimage32(x))
354354
}
355355

356356
fn lookup_hash256(&self, h: &Pk::Hash256) -> Option<Preimage32> {
357357
self.psbt.inputs[self.index]
358358
.hash256_preimages
359359
.get(&sha256d::Hash::from_byte_array(Pk::to_hash256(h).to_byte_array())) // upstream psbt operates on hash256
360-
.and_then(try_vec_as_preimage32)
360+
.and_then(|x: &Vec<u8>| try_vec_as_preimage32(x))
361361
}
362362

363363
fn lookup_ripemd160(&self, h: &Pk::Ripemd160) -> Option<Preimage32> {
364364
self.psbt.inputs[self.index]
365365
.ripemd160_preimages
366366
.get(&Pk::to_ripemd160(h))
367-
.and_then(try_vec_as_preimage32)
367+
.and_then(|x: &Vec<u8>| try_vec_as_preimage32(x))
368368
}
369369
}
370370

371-
fn try_vec_as_preimage32(vec: &Vec<u8>) -> Option<Preimage32> {
371+
fn try_vec_as_preimage32(vec: &[u8]) -> Option<Preimage32> {
372372
if vec.len() == 32 {
373373
let mut arr = [0u8; 32];
374374
arr.copy_from_slice(vec);
@@ -1590,7 +1590,7 @@ mod tests {
15901590
#[test]
15911591
fn test_update_input_checks() {
15921592
let desc = "tr([73c5da0a/86'/0'/0']xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/0)";
1593-
let desc = Descriptor::<DefiniteDescriptorKey>::from_str(&desc).unwrap();
1593+
let desc = Descriptor::<DefiniteDescriptorKey>::from_str(desc).unwrap();
15941594

15951595
let mut non_witness_utxo = bitcoin::Transaction {
15961596
version: transaction::Version::ONE,
@@ -1652,7 +1652,7 @@ mod tests {
16521652
#[test]
16531653
fn test_update_output_checks() {
16541654
let desc = "tr([73c5da0a/86'/0'/0']xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ/0/0)";
1655-
let desc = Descriptor::<DefiniteDescriptorKey>::from_str(&desc).unwrap();
1655+
let desc = Descriptor::<DefiniteDescriptorKey>::from_str(desc).unwrap();
16561656

16571657
let tx = bitcoin::Transaction {
16581658
version: transaction::Version::ONE,

0 commit comments

Comments
 (0)