Skip to content

Commit 3e5d1d3

Browse files
committed
Cleanup for ref_mut_iter_method_chain
1 parent 4705c9b commit 3e5d1d3

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

clippy_lints/src/methods/mod.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,19 +1867,17 @@ declare_clippy_lint! {
18671867
/// Check for `&mut iter` followed by a method call.
18681868
///
18691869
/// ### Why is this bad?
1870-
/// This requires using parenthesis to signify precedence.
1870+
/// Using `(&mut iter)._` requires using parenthesis to signify precedence.
18711871
///
18721872
/// ### Example
18731873
/// ```rust
18741874
/// let mut iter = ['a', 'b', '.', 'd'].iter();
18751875
/// let before_dot = (&mut iter).take_while(|&&c| c != '.').collect::<Vec<_>>();
1876-
/// let after_dot = iter.collect::<Vec<_>>();
18771876
/// ```
18781877
/// Use instead:
18791878
/// ```rust
18801879
/// let mut iter = ['a', 'b', '.', 'd'].iter();
18811880
/// let before_dot = iter.by_ref().take_while(|&&c| c != '.').collect::<Vec<_>>();
1882-
/// let after_dot = iter.collect::<Vec<_>>();
18831881
/// ```
18841882
pub REF_MUT_ITER_METHOD_CHAIN,
18851883
style,

tests/ui/ref_mut_iter_method_chain.fixed

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ fn main() {
2626

2727
// Don't lint. No method chain.
2828
for &x in &mut iter {
29-
print!("{}", x)
29+
print!("{}", x);
30+
}
31+
32+
for &x in iter.by_ref().filter(|&&x| x % 2 == 0) {
33+
print!("{}", x);
3034
}
3135

3236
let iter = &mut iter;

tests/ui/ref_mut_iter_method_chain.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@ fn main() {
2626

2727
// Don't lint. No method chain.
2828
for &x in &mut iter {
29-
print!("{}", x)
29+
print!("{}", x);
30+
}
31+
32+
for &x in (&mut iter).filter(|&&x| x % 2 == 0) {
33+
print!("{}", x);
3034
}
3135

3236
let iter = &mut iter;

tests/ui/ref_mut_iter_method_chain.stderr

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,22 @@ LL | let _ = (&mut m!(iter)).find(|&&x| x == 1);
1313
| ^^^^^^^^^^^^^^^ help: try: `m!(iter).by_ref()`
1414

1515
error: use of `&mut` on an iterator in a method chain
16-
--> $DIR/ref_mut_iter_method_chain.rs:33:5
16+
--> $DIR/ref_mut_iter_method_chain.rs:32:15
17+
|
18+
LL | for &x in (&mut iter).filter(|&&x| x % 2 == 0) {
19+
| ^^^^^^^^^^^ help: try: `iter.by_ref()`
20+
21+
error: use of `&mut` on an iterator in a method chain
22+
--> $DIR/ref_mut_iter_method_chain.rs:37:5
1723
|
1824
LL | (&mut *iter).find(|&&x| x == 1);
1925
| ^^^^^^^^^^^^ help: try: `iter.by_ref()`
2026

2127
error: use of `&mut` on an iterator in a method chain
22-
--> $DIR/ref_mut_iter_method_chain.rs:36:5
28+
--> $DIR/ref_mut_iter_method_chain.rs:40:5
2329
|
2430
LL | (&mut **iter).find(|&&x| x == 1);
2531
| ^^^^^^^^^^^^^ help: try: `(*iter).by_ref()`
2632

27-
error: aborting due to 4 previous errors
33+
error: aborting due to 5 previous errors
2834

0 commit comments

Comments
 (0)