mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-10 15:14:29 +00:00
needless_collect: Lint LinkedList
and BinaryHeap
in direct usage.
Those two types are supported already when used indirectly. This commit adds support for direct usage as well.
This commit is contained in:
parent
59ccc1efb3
commit
171789eb45
4 changed files with 60 additions and 4 deletions
|
@ -31,7 +31,9 @@ fn check_needless_collect_direct_usage<'tcx>(expr: &'tcx Expr<'_>, cx: &LateCont
|
|||
let is_empty_sugg = Some("next().is_none()".to_string());
|
||||
let method_name = &*method.ident.name.as_str();
|
||||
let sugg = if is_type_diagnostic_item(cx, ty, sym::vec_type) ||
|
||||
is_type_diagnostic_item(cx, ty, sym::vecdeque_type) {
|
||||
is_type_diagnostic_item(cx, ty, sym::vecdeque_type) ||
|
||||
is_type_diagnostic_item(cx, ty, sym::LinkedList) ||
|
||||
is_type_diagnostic_item(cx, ty, sym::BinaryHeap) {
|
||||
match method_name {
|
||||
"len" => Some("count()".to_string()),
|
||||
"is_empty" => is_empty_sugg,
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#![allow(unused, clippy::suspicious_map, clippy::iter_count)]
|
||||
|
||||
use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
|
||||
use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, LinkedList};
|
||||
|
||||
#[warn(clippy::needless_collect)]
|
||||
#[allow(unused_variables, clippy::iter_cloned_collect, clippy::iter_next_slice)]
|
||||
|
@ -24,4 +24,13 @@ fn main() {
|
|||
sample.iter().collect::<HashSet<_>>().len();
|
||||
// Neither should this
|
||||
sample.iter().collect::<BTreeSet<_>>().len();
|
||||
|
||||
sample.iter().count();
|
||||
sample.iter().next().is_none();
|
||||
sample.iter().cloned().any(|x| x == 1);
|
||||
sample.iter().any(|x| x == &1);
|
||||
|
||||
// `BinaryHeap` doesn't have `contains` method
|
||||
sample.iter().count();
|
||||
sample.iter().next().is_none();
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
#![allow(unused, clippy::suspicious_map, clippy::iter_count)]
|
||||
|
||||
use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
|
||||
use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, LinkedList};
|
||||
|
||||
#[warn(clippy::needless_collect)]
|
||||
#[allow(unused_variables, clippy::iter_cloned_collect, clippy::iter_next_slice)]
|
||||
|
@ -24,4 +24,13 @@ fn main() {
|
|||
sample.iter().collect::<HashSet<_>>().len();
|
||||
// Neither should this
|
||||
sample.iter().collect::<BTreeSet<_>>().len();
|
||||
|
||||
sample.iter().collect::<LinkedList<_>>().len();
|
||||
sample.iter().collect::<LinkedList<_>>().is_empty();
|
||||
sample.iter().cloned().collect::<LinkedList<_>>().contains(&1);
|
||||
sample.iter().collect::<LinkedList<_>>().contains(&&1);
|
||||
|
||||
// `BinaryHeap` doesn't have `contains` method
|
||||
sample.iter().collect::<BinaryHeap<_>>().len();
|
||||
sample.iter().collect::<BinaryHeap<_>>().is_empty();
|
||||
}
|
||||
|
|
|
@ -30,5 +30,41 @@ error: avoid using `collect()` when not needed
|
|||
LL | sample.iter().map(|x| (x, x)).collect::<BTreeMap<_, _>>().is_empty();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `next().is_none()`
|
||||
|
||||
error: aborting due to 5 previous errors
|
||||
error: avoid using `collect()` when not needed
|
||||
--> $DIR/needless_collect.rs:28:19
|
||||
|
|
||||
LL | sample.iter().collect::<LinkedList<_>>().len();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `count()`
|
||||
|
||||
error: avoid using `collect()` when not needed
|
||||
--> $DIR/needless_collect.rs:29:19
|
||||
|
|
||||
LL | sample.iter().collect::<LinkedList<_>>().is_empty();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `next().is_none()`
|
||||
|
||||
error: avoid using `collect()` when not needed
|
||||
--> $DIR/needless_collect.rs:30:28
|
||||
|
|
||||
LL | sample.iter().cloned().collect::<LinkedList<_>>().contains(&1);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `any(|x| x == 1)`
|
||||
|
||||
error: avoid using `collect()` when not needed
|
||||
--> $DIR/needless_collect.rs:31:19
|
||||
|
|
||||
LL | sample.iter().collect::<LinkedList<_>>().contains(&&1);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `any(|x| x == &1)`
|
||||
|
||||
error: avoid using `collect()` when not needed
|
||||
--> $DIR/needless_collect.rs:34:19
|
||||
|
|
||||
LL | sample.iter().collect::<BinaryHeap<_>>().len();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `count()`
|
||||
|
||||
error: avoid using `collect()` when not needed
|
||||
--> $DIR/needless_collect.rs:35:19
|
||||
|
|
||||
LL | sample.iter().collect::<BinaryHeap<_>>().is_empty();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `next().is_none()`
|
||||
|
||||
error: aborting due to 11 previous errors
|
||||
|
||||
|
|
Loading…
Reference in a new issue