1 // aux-build:option_helpers.rs
3 #![warn(clippy::iter_nth)]
6 extern crate option_helpers;
8 use option_helpers::IteratorFalsePositives;
9 use std::collections::VecDeque;
11 /// Struct to generate false positives for things with `.iter()`.
12 #[derive(Copy, Clone)]
16 fn iter(self) -> IteratorFalsePositives {
17 IteratorFalsePositives { foo: 0 }
20 fn iter_mut(self) -> IteratorFalsePositives {
21 IteratorFalsePositives { foo: 0 }
25 /// Checks implementation of `ITER_NTH` lint.
27 let mut some_vec = vec![0, 1, 2, 3];
28 let mut boxed_slice: Box<[u8]> = Box::new([0, 1, 2, 3]);
29 let mut some_vec_deque: VecDeque<_> = some_vec.iter().cloned().collect();
32 // Make sure we lint `.iter()` for relevant types.
33 let bad_vec = some_vec.iter().nth(3);
34 let bad_slice = &some_vec[..].iter().nth(3);
35 let bad_boxed_slice = boxed_slice.iter().nth(3);
36 let bad_vec_deque = some_vec_deque.iter().nth(3);
40 // Make sure we lint `.iter_mut()` for relevant types.
41 let bad_vec = some_vec.iter_mut().nth(3);
44 let bad_slice = &some_vec[..].iter_mut().nth(3);
47 let bad_vec_deque = some_vec_deque.iter_mut().nth(3);
50 // Make sure we don't lint for non-relevant types.
51 let false_positive = HasIter;
52 let ok = false_positive.iter().nth(3);
53 let ok_mut = false_positive.iter_mut().nth(3);