2 #![warn(clippy::iter_on_single_items)]
3 #![allow(clippy::iter_next_slice, clippy::redundant_clone)]
6 assert_eq!(std::iter::once(123).next(), Some(123));
7 assert_eq!(std::iter::once(&mut 123).next(), Some(&mut 123));
8 assert_eq!(std::iter::once(&123).next(), Some(&123));
9 assert_eq!(std::iter::once(123).next(), Some(123));
10 assert_eq!(std::iter::once(&mut 123).next(), Some(&mut 123));
11 assert_eq!(std::iter::once(&123).next(), Some(&123));
13 // Don't trigger on non-iter methods
14 let _: Option<String> = Some("test".to_string()).clone();
15 let _: [String; 1] = ["test".to_string()].clone();
17 // Don't trigger on match or if branches
23 let _ = if false { ["test"].iter() } else { [].iter() };
26 macro_rules! in_macros {
28 assert_eq!([123].into_iter().next(), Some(123));
29 assert_eq!([123].iter_mut().next(), Some(&mut 123));
30 assert_eq!([123].iter().next(), Some(&123));
31 assert_eq!(Some(123).into_iter().next(), Some(123));
32 assert_eq!(Some(123).iter_mut().next(), Some(&mut 123));
33 assert_eq!(Some(123).iter().next(), Some(&123));
37 // Don't trigger on a `Some` that isn't std's option
47 fn iter_mut(&mut self) {}
52 pub fn custom_option() {
61 custom_option::custom_option();