//@run-rustfix #![allow(unused, clippy::suspicious_map, clippy::iter_count)] use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, LinkedList}; #[warn(clippy::needless_collect)] #[allow(unused_variables, clippy::iter_cloned_collect, clippy::iter_next_slice)] fn main() { let sample = [1; 5]; let len = sample.iter().collect::>().len(); if sample.iter().collect::>().is_empty() { // Empty } sample.iter().cloned().collect::>().contains(&1); // #7164 HashMap's and BTreeMap's `len` usage should not be linted sample.iter().map(|x| (x, x)).collect::>().len(); sample.iter().map(|x| (x, x)).collect::>().len(); sample.iter().map(|x| (x, x)).collect::>().is_empty(); sample.iter().map(|x| (x, x)).collect::>().is_empty(); // Notice the `HashSet`--this should not be linted sample.iter().collect::>().len(); // Neither should this sample.iter().collect::>().len(); sample.iter().collect::>().len(); sample.iter().collect::>().is_empty(); sample.iter().cloned().collect::>().contains(&1); sample.iter().collect::>().contains(&&1); // `BinaryHeap` doesn't have `contains` method sample.iter().collect::>().len(); sample.iter().collect::>().is_empty(); // Don't lint string from str let _ = ["", ""].into_iter().collect::().is_empty(); let _ = sample.iter().collect::>().is_empty(); let _ = sample.iter().collect::>().contains(&&0); struct VecWrapper(Vec); impl core::ops::Deref for VecWrapper { type Target = Vec; fn deref(&self) -> &Self::Target { &self.0 } } impl IntoIterator for VecWrapper { type IntoIter = as IntoIterator>::IntoIter; type Item = as IntoIterator>::Item; fn into_iter(self) -> Self::IntoIter { self.0.into_iter() } } impl FromIterator for VecWrapper { fn from_iter>(iter: I) -> Self { Self(Vec::from_iter(iter)) } } let _ = sample.iter().collect::>().is_empty(); let _ = sample.iter().collect::>().contains(&&0); }