1// run-rustfix 2#![allow(clippy::useless_vec, clippy::needless_borrow)] 3#![warn(clippy::into_iter_on_ref)] 4 5struct X; 6use std::collections::*; 7 8fn main() { 9 for _ in &[1, 2, 3] {} 10 for _ in vec![X, X] {} 11 for _ in &vec![X, X] {} 12 13 let _ = vec![1, 2, 3].into_iter(); 14 let _ = (&vec![1, 2, 3]).iter(); //~ WARN equivalent to .iter() 15 let _ = vec![1, 2, 3].into_boxed_slice().iter(); //~ WARN equivalent to .iter() 16 let _ = std::rc::Rc::from(&[X][..]).iter(); //~ WARN equivalent to .iter() 17 let _ = std::sync::Arc::from(&[X][..]).iter(); //~ WARN equivalent to .iter() 18 19 let _ = (&&&&&&&[1, 2, 3]).iter(); //~ ERROR equivalent to .iter() 20 let _ = (&&&&mut &&&[1, 2, 3]).iter(); //~ ERROR equivalent to .iter() 21 let _ = (&mut &mut &mut [1, 2, 3]).iter_mut(); //~ ERROR equivalent to .iter_mut() 22 23 let _ = (&Some(4)).iter(); //~ WARN equivalent to .iter() 24 let _ = (&mut Some(5)).iter_mut(); //~ WARN equivalent to .iter_mut() 25 let _ = (&Ok::<_, i32>(6)).iter(); //~ WARN equivalent to .iter() 26 let _ = (&mut Err::<i32, _>(7)).iter_mut(); //~ WARN equivalent to .iter_mut() 27 let _ = (&Vec::<i32>::new()).iter(); //~ WARN equivalent to .iter() 28 let _ = (&mut Vec::<i32>::new()).iter_mut(); //~ WARN equivalent to .iter_mut() 29 let _ = (&BTreeMap::<i32, u64>::new()).iter(); //~ WARN equivalent to .iter() 30 let _ = (&mut BTreeMap::<i32, u64>::new()).iter_mut(); //~ WARN equivalent to .iter_mut() 31 let _ = (&VecDeque::<i32>::new()).iter(); //~ WARN equivalent to .iter() 32 let _ = (&mut VecDeque::<i32>::new()).iter_mut(); //~ WARN equivalent to .iter_mut() 33 let _ = (&LinkedList::<i32>::new()).iter(); //~ WARN equivalent to .iter() 34 let _ = (&mut LinkedList::<i32>::new()).iter_mut(); //~ WARN equivalent to .iter_mut() 35 let _ = (&HashMap::<i32, u64>::new()).iter(); //~ WARN equivalent to .iter() 36 let _ = (&mut HashMap::<i32, u64>::new()).iter_mut(); //~ WARN equivalent to .iter_mut() 37 38 let _ = (&BTreeSet::<i32>::new()).iter(); //~ WARN equivalent to .iter() 39 let _ = (&BinaryHeap::<i32>::new()).iter(); //~ WARN equivalent to .iter() 40 let _ = (&HashSet::<i32>::new()).iter(); //~ WARN equivalent to .iter() 41 let _ = std::path::Path::new("12/34").iter(); //~ WARN equivalent to .iter() 42 let _ = std::path::PathBuf::from("12/34").iter(); //~ ERROR equivalent to .iter() 43 44 let _ = (&[1, 2, 3]).iter().next(); //~ WARN equivalent to .iter() 45} 46