Remove method_calls

This commit is contained in:
Yoshitomo Nakanishi 2021-03-13 15:11:39 +09:00
parent 527fbbef48
commit f2cc995bcf
5 changed files with 92 additions and 55 deletions

View file

@ -14,6 +14,10 @@ fn should_lint() {
acc += elem;
}
for elem in [1, 2, 3].iter() {
acc += elem;
}
let mut hash_map: HashMap<i32, i32> = HashMap::new();
for (k, v) in hash_map.iter() {
acc += k + v;
@ -46,11 +50,30 @@ fn should_not_lint() {
}
v.iter().for_each(print);
// User defined type.
struct MyStruct {
v: Vec<i32>,
}
impl MyStruct {
fn iter(&self) -> impl Iterator<Item = &i32> {
self.v.iter()
}
}
let s = MyStruct { v: Vec::new() };
s.iter().for_each(|elem| {
acc += elem;
});
// `for_each` follows long iterator chain.
v.iter().chain(v.iter()).for_each(|v| println!("{}", v));
v.iter().chain(v.iter()).for_each(|v| {
acc += v;
});
v.as_slice().iter().for_each(|v| {
acc += v;
});
s.v.iter().for_each(|v| {
acc += v;
});
// `return` is used in `Loop` of the closure.
v.iter().for_each(|v| {
@ -68,20 +91,6 @@ fn should_not_lint() {
}
});
// User defined type.
struct MyStruct {
v: Vec<i32>,
}
impl MyStruct {
fn iter(&self) -> impl Iterator<Item = &i32> {
self.v.iter()
}
}
let s = MyStruct { v: Vec::new() };
s.iter().for_each(|elem| {
acc += elem;
});
// Previously transformed iterator variable.
let it = v.iter();
it.chain(v.iter()).for_each(|elem| {

View file

@ -14,6 +14,10 @@ fn should_lint() {
acc += elem;
});
[1, 2, 3].iter().for_each(|elem| {
acc += elem;
});
let mut hash_map: HashMap<i32, i32> = HashMap::new();
hash_map.iter().for_each(|(k, v)| {
acc += k + v;
@ -46,11 +50,30 @@ fn should_not_lint() {
}
v.iter().for_each(print);
// User defined type.
struct MyStruct {
v: Vec<i32>,
}
impl MyStruct {
fn iter(&self) -> impl Iterator<Item = &i32> {
self.v.iter()
}
}
let s = MyStruct { v: Vec::new() };
s.iter().for_each(|elem| {
acc += elem;
});
// `for_each` follows long iterator chain.
v.iter().chain(v.iter()).for_each(|v| println!("{}", v));
v.iter().chain(v.iter()).for_each(|v| {
acc += v;
});
v.as_slice().iter().for_each(|v| {
acc += v;
});
s.v.iter().for_each(|v| {
acc += v;
});
// `return` is used in `Loop` of the closure.
v.iter().for_each(|v| {
@ -68,20 +91,6 @@ fn should_not_lint() {
}
});
// User defined type.
struct MyStruct {
v: Vec<i32>,
}
impl MyStruct {
fn iter(&self) -> impl Iterator<Item = &i32> {
self.v.iter()
}
}
let s = MyStruct { v: Vec::new() };
s.iter().for_each(|elem| {
acc += elem;
});
// Previously transformed iterator variable.
let it = v.iter();
it.chain(v.iter()).for_each(|elem| {

View file

@ -30,7 +30,22 @@ LL | }
|
error: needless use of `for_each`
--> $DIR/needless_for_each_fixable.rs:18:5
--> $DIR/needless_for_each_fixable.rs:17:5
|
LL | / [1, 2, 3].iter().for_each(|elem| {
LL | | acc += elem;
LL | | });
| |_______^
|
help: try
|
LL | for elem in [1, 2, 3].iter() {
LL | acc += elem;
LL | }
|
error: needless use of `for_each`
--> $DIR/needless_for_each_fixable.rs:22:5
|
LL | / hash_map.iter().for_each(|(k, v)| {
LL | | acc += k + v;
@ -45,7 +60,7 @@ LL | }
|
error: needless use of `for_each`
--> $DIR/needless_for_each_fixable.rs:21:5
--> $DIR/needless_for_each_fixable.rs:25:5
|
LL | / hash_map.iter_mut().for_each(|(k, v)| {
LL | | acc += *k + *v;
@ -60,7 +75,7 @@ LL | }
|
error: needless use of `for_each`
--> $DIR/needless_for_each_fixable.rs:24:5
--> $DIR/needless_for_each_fixable.rs:28:5
|
LL | / hash_map.keys().for_each(|k| {
LL | | acc += k;
@ -75,7 +90,7 @@ LL | }
|
error: needless use of `for_each`
--> $DIR/needless_for_each_fixable.rs:27:5
--> $DIR/needless_for_each_fixable.rs:31:5
|
LL | / hash_map.values().for_each(|v| {
LL | | acc += v;
@ -90,7 +105,7 @@ LL | }
|
error: needless use of `for_each`
--> $DIR/needless_for_each_fixable.rs:34:5
--> $DIR/needless_for_each_fixable.rs:38:5
|
LL | / my_vec().iter().for_each(|elem| {
LL | | acc += elem;
@ -104,5 +119,5 @@ LL | acc += elem;
LL | }
|
error: aborting due to 7 previous errors
error: aborting due to 8 previous errors