Skip to content

Commit e4ae53a

Browse files
committed
Auto merge of #286 - steffahn:some_clippy_suggestions, r=Amanieu
Apply s̶o̶m̶e all clippy suggestions found in tests Apply some clippy suggestions to tests, involving * removing calls to `.clone()` on `&str`s, * removing calls to `.clone()` on `const`s, * a transformation `x = x * 2` → `x *= 2`. All of these seem like definite improvements to me. In particular the `clone()`s on `&str` are a deny-by-default clippy lint ([`clippy::clone_double_ref`](https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref)) and I don’t like the red marks in my IDE.
2 parents 813fa8a + a1c7dd3 commit e4ae53a

File tree

4 files changed

+46
-39
lines changed

4 files changed

+46
-39
lines changed

ci/tools.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ if retry rustup component add rustfmt ; then
3030
fi
3131

3232
if retry rustup component add clippy ; then
33-
cargo clippy --all -- -D clippy::all -D clippy::pedantic
33+
cargo clippy --all --tests -- -D clippy::all -D clippy::pedantic
3434
fi
3535

3636
if command -v shellcheck ; then

src/map.rs

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3487,7 +3487,6 @@ mod test_map {
34873487
use super::DefaultHashBuilder;
34883488
use super::Entry::{Occupied, Vacant};
34893489
use super::{HashMap, RawEntryMut};
3490-
use crate::TryReserveError::*;
34913490
use rand::{rngs::SmallRng, Rng, SeedableRng};
34923491
use std::borrow::ToOwned;
34933492
use std::cell::RefCell;
@@ -3556,6 +3555,7 @@ mod test_map {
35563555
assert_eq!(m.len(), 1);
35573556
assert!(m.insert(2, 4).is_none());
35583557
assert_eq!(m.len(), 2);
3558+
#[allow(clippy::redundant_clone)]
35593559
let m2 = m.clone();
35603560
assert_eq!(*m2.get(&1).unwrap(), 2);
35613561
assert_eq!(*m2.get(&2).unwrap(), 4);
@@ -3709,6 +3709,7 @@ mod test_map {
37093709
}
37103710
});
37113711

3712+
#[allow(clippy::let_underscore_drop)] // kind-of a false positive
37123713
for _ in half.by_ref() {}
37133714

37143715
DROP_VECTOR.with(|v| {
@@ -3920,7 +3921,7 @@ mod test_map {
39203921
fn test_keys() {
39213922
let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
39223923
let map: HashMap<_, _> = vec.into_iter().collect();
3923-
let keys: Vec<_> = map.keys().cloned().collect();
3924+
let keys: Vec<_> = map.keys().copied().collect();
39243925
assert_eq!(keys.len(), 3);
39253926
assert!(keys.contains(&1));
39263927
assert!(keys.contains(&2));
@@ -3931,7 +3932,7 @@ mod test_map {
39313932
fn test_values() {
39323933
let vec = vec![(1, 'a'), (2, 'b'), (3, 'c')];
39333934
let map: HashMap<_, _> = vec.into_iter().collect();
3934-
let values: Vec<_> = map.values().cloned().collect();
3935+
let values: Vec<_> = map.values().copied().collect();
39353936
assert_eq!(values.len(), 3);
39363937
assert!(values.contains(&'a'));
39373938
assert!(values.contains(&'b'));
@@ -3943,9 +3944,9 @@ mod test_map {
39433944
let vec = vec![(1, 1), (2, 2), (3, 3)];
39443945
let mut map: HashMap<_, _> = vec.into_iter().collect();
39453946
for value in map.values_mut() {
3946-
*value = (*value) * 2
3947+
*value *= 2;
39473948
}
3948-
let values: Vec<_> = map.values().cloned().collect();
3949+
let values: Vec<_> = map.values().copied().collect();
39493950
assert_eq!(values.len(), 3);
39503951
assert!(values.contains(&2));
39513952
assert!(values.contains(&4));
@@ -4110,7 +4111,7 @@ mod test_map {
41104111
fn test_from_iter() {
41114112
let xs = [(1, 1), (2, 2), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
41124113

4113-
let map: HashMap<_, _> = xs.iter().cloned().collect();
4114+
let map: HashMap<_, _> = xs.iter().copied().collect();
41144115

41154116
for &(k, v) in &xs {
41164117
assert_eq!(map.get(&k), Some(&v));
@@ -4123,7 +4124,7 @@ mod test_map {
41234124
fn test_size_hint() {
41244125
let xs = [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
41254126

4126-
let map: HashMap<_, _> = xs.iter().cloned().collect();
4127+
let map: HashMap<_, _> = xs.iter().copied().collect();
41274128

41284129
let mut iter = map.iter();
41294130

@@ -4136,7 +4137,7 @@ mod test_map {
41364137
fn test_iter_len() {
41374138
let xs = [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
41384139

4139-
let map: HashMap<_, _> = xs.iter().cloned().collect();
4140+
let map: HashMap<_, _> = xs.iter().copied().collect();
41404141

41414142
let mut iter = map.iter();
41424143

@@ -4149,7 +4150,7 @@ mod test_map {
41494150
fn test_mut_size_hint() {
41504151
let xs = [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
41514152

4152-
let mut map: HashMap<_, _> = xs.iter().cloned().collect();
4153+
let mut map: HashMap<_, _> = xs.iter().copied().collect();
41534154

41544155
let mut iter = map.iter_mut();
41554156

@@ -4162,7 +4163,7 @@ mod test_map {
41624163
fn test_iter_mut_len() {
41634164
let xs = [(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6)];
41644165

4165-
let mut map: HashMap<_, _> = xs.iter().cloned().collect();
4166+
let mut map: HashMap<_, _> = xs.iter().copied().collect();
41664167

41674168
let mut iter = map.iter_mut();
41684169

@@ -4191,14 +4192,15 @@ mod test_map {
41914192
map.insert(2, 1);
41924193
map.insert(3, 4);
41934194

4195+
#[allow(clippy::no_effect)] // false positive lint
41944196
map[&4];
41954197
}
41964198

41974199
#[test]
41984200
fn test_entry() {
41994201
let xs = [(1, 10), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)];
42004202

4201-
let mut map: HashMap<_, _> = xs.iter().cloned().collect();
4203+
let mut map: HashMap<_, _> = xs.iter().copied().collect();
42024204

42034205
// Existing key (insert)
42044206
match map.entry(1) {
@@ -4327,11 +4329,11 @@ mod test_map {
43274329
let key = "hello there";
43284330
let value = "value goes here";
43294331
assert!(a.is_empty());
4330-
a.insert(key.clone(), value.clone());
4332+
a.insert(key, value);
43314333
assert_eq!(a.len(), 1);
43324334
assert_eq!(a[key], value);
43334335

4334-
match a.entry(key.clone()) {
4336+
match a.entry(key) {
43354337
Vacant(_) => panic!(),
43364338
Occupied(e) => assert_eq!(key, *e.key()),
43374339
}
@@ -4346,11 +4348,11 @@ mod test_map {
43464348
let value = "value goes here";
43474349

43484350
assert!(a.is_empty());
4349-
match a.entry(key.clone()) {
4351+
match a.entry(key) {
43504352
Occupied(_) => panic!(),
43514353
Vacant(e) => {
43524354
assert_eq!(key, *e.key());
4353-
e.insert(value.clone());
4355+
e.insert(value);
43544356
}
43554357
}
43564358
assert_eq!(a.len(), 1);
@@ -4615,10 +4617,12 @@ mod test_map {
46154617
#[test]
46164618
#[cfg_attr(miri, ignore)] // FIXME: no OOM signalling (https://github.com/rust-lang/miri/issues/613)
46174619
fn test_try_reserve() {
4618-
let mut empty_bytes: HashMap<u8, u8> = HashMap::new();
4620+
use crate::TryReserveError::{AllocError, CapacityOverflow};
46194621

46204622
const MAX_USIZE: usize = usize::MAX;
46214623

4624+
let mut empty_bytes: HashMap<u8, u8> = HashMap::new();
4625+
46224626
if let Err(CapacityOverflow) = empty_bytes.try_reserve(MAX_USIZE) {
46234627
} else {
46244628
panic!("usize::MAX should trigger an overflow!");
@@ -4644,9 +4648,9 @@ mod test_map {
46444648
fn test_raw_entry() {
46454649
use super::RawEntryMut::{Occupied, Vacant};
46464650

4647-
let xs = [(1i32, 10i32), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)];
4651+
let xs = [(1_i32, 10_i32), (2, 20), (3, 30), (4, 40), (5, 50), (6, 60)];
46484652

4649-
let mut map: HashMap<_, _> = xs.iter().cloned().collect();
4653+
let mut map: HashMap<_, _> = xs.iter().copied().collect();
46504654

46514655
let compute_hash = |map: &HashMap<i32, i32>, k: i32| -> u64 {
46524656
super::make_insert_hash::<i32, _>(map.hasher(), &k)
@@ -4719,7 +4723,7 @@ mod test_map {
47194723
// Ensure all lookup methods produce equivalent results.
47204724
for k in 0..12 {
47214725
let hash = compute_hash(&map, k);
4722-
let v = map.get(&k).cloned();
4726+
let v = map.get(&k).copied();
47234727
let kv = v.as_ref().map(|v| (&k, v));
47244728

47254729
assert_eq!(map.raw_entry().from_key(&k), kv);
@@ -4876,7 +4880,7 @@ mod test_map {
48764880
const EMPTY_MAP: HashMap<u32, std::string::String, MyHasher> =
48774881
HashMap::with_hasher(MyHasher);
48784882

4879-
let mut map = EMPTY_MAP.clone();
4883+
let mut map = EMPTY_MAP;
48804884
map.insert(17, "seventeen".to_owned());
48814885
assert_eq!("seventeen", map[&17]);
48824886
}

src/set.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1969,7 +1969,7 @@ mod test_set {
19691969
let expected = [3, 5, 11, 77];
19701970
for x in a.intersection(&b) {
19711971
assert!(expected.contains(x));
1972-
i += 1
1972+
i += 1;
19731973
}
19741974
assert_eq!(i, expected.len());
19751975
}
@@ -1992,7 +1992,7 @@ mod test_set {
19921992
let expected = [1, 5, 11];
19931993
for x in a.difference(&b) {
19941994
assert!(expected.contains(x));
1995-
i += 1
1995+
i += 1;
19961996
}
19971997
assert_eq!(i, expected.len());
19981998
}
@@ -2018,7 +2018,7 @@ mod test_set {
20182018
let expected = [-2, 1, 5, 11, 14, 22];
20192019
for x in a.symmetric_difference(&b) {
20202020
assert!(expected.contains(x));
2021-
i += 1
2021+
i += 1;
20222022
}
20232023
assert_eq!(i, expected.len());
20242024
}
@@ -2048,7 +2048,7 @@ mod test_set {
20482048
let expected = [-2, 1, 3, 5, 9, 11, 13, 16, 19, 24];
20492049
for x in a.union(&b) {
20502050
assert!(expected.contains(x));
2051-
i += 1
2051+
i += 1;
20522052
}
20532053
assert_eq!(i, expected.len());
20542054
}
@@ -2074,7 +2074,7 @@ mod test_set {
20742074
fn test_from_iter() {
20752075
let xs = [1, 2, 2, 3, 4, 5, 6, 7, 8, 9];
20762076

2077-
let set: HashSet<_> = xs.iter().cloned().collect();
2077+
let set: HashSet<_> = xs.iter().copied().collect();
20782078

20792079
for x in &xs {
20802080
assert!(set.contains(x));
@@ -2236,7 +2236,7 @@ mod test_set {
22362236
#[test]
22372237
fn test_retain() {
22382238
let xs = [1, 2, 3, 4, 5, 6];
2239-
let mut set: HashSet<i32> = xs.iter().cloned().collect();
2239+
let mut set: HashSet<i32> = xs.iter().copied().collect();
22402240
set.retain(|&k| k % 2 == 0);
22412241
assert_eq!(set.len(), 3);
22422242
assert!(set.contains(&2));
@@ -2278,7 +2278,7 @@ mod test_set {
22782278

22792279
const EMPTY_SET: HashSet<u32, MyHasher> = HashSet::with_hasher(MyHasher);
22802280

2281-
let mut set = EMPTY_SET.clone();
2281+
let mut set = EMPTY_SET;
22822282
set.insert(19);
22832283
assert!(set.contains(&19));
22842284
}

tests/set.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,32 @@
22

33
use hashbrown::HashSet;
44
use rand::{distributions::Alphanumeric, rngs::SmallRng, Rng, SeedableRng};
5+
use std::iter;
56

67
#[test]
78
fn test_hashset_insert_remove() {
89
let mut m: HashSet<Vec<char>> = HashSet::new();
9-
//let num: u32 = 4096;
10-
//let tx: Vec<Vec<u8>> = (0..num).map(|i| (i..(16 + i)).collect()).collect();
10+
1111
let seed: [u8; 16] = [
1212
130, 220, 246, 217, 111, 124, 221, 189, 190, 234, 121, 93, 67, 95, 100, 43,
1313
];
1414

1515
let rng = &mut SmallRng::from_seed(seed);
16-
let tx: Vec<Vec<char>> = (0..4096)
17-
.map(|_| (rng.sample_iter(&Alphanumeric).take(32).collect()))
18-
.collect();
16+
let tx: Vec<Vec<char>> =
17+
iter::repeat_with(|| rng.sample_iter(&Alphanumeric).take(32).collect())
18+
.take(4096)
19+
.collect();
1920

21+
// more readable with explicit `true` / `false`
22+
#[allow(clippy::bool_assert_comparison)]
2023
for _ in 0..32 {
21-
for i in 0..4096 {
22-
assert_eq!(m.contains(&tx[i].clone()), false);
23-
assert_eq!(m.insert(tx[i].clone()), true);
24+
for x in &tx {
25+
assert_eq!(m.contains(x), false);
26+
assert_eq!(m.insert(x.clone()), true);
2427
}
25-
for i in 0..4096 {
26-
println!("removing {} {:?}", i, tx[i]);
27-
assert_eq!(m.remove(&tx[i]), true);
28+
for (i, x) in tx.iter().enumerate() {
29+
println!("removing {} {:?}", i, x);
30+
assert_eq!(m.remove(x), true);
2831
}
2932
}
3033
}

0 commit comments

Comments
 (0)