// run-rustfix #![warn(clippy::useless_vec)] #[derive(Debug)] struct NonCopy; fn on_slice(_: &[u8]) {} fn on_mut_slice(_: &mut [u8]) {} #[allow(clippy::ptr_arg)] fn on_vec(_: &Vec) {} fn on_mut_vec(_: &mut Vec) {} struct Line { length: usize, } impl Line { fn length(&self) -> usize { self.length } } fn main() { on_slice(&vec![]); on_slice(&[]); on_mut_slice(&mut vec![]); on_slice(&vec![1, 2]); on_slice(&[1, 2]); on_mut_slice(&mut vec![1, 2]); on_slice(&vec![1, 2]); on_slice(&[1, 2]); on_mut_slice(&mut vec![1, 2]); #[rustfmt::skip] on_slice(&vec!(1, 2)); on_slice(&[1, 2]); on_mut_slice(&mut vec![1, 2]); on_slice(&vec![1; 2]); on_slice(&[1; 2]); on_mut_slice(&mut vec![1; 2]); on_vec(&vec![]); on_vec(&vec![1, 2]); on_vec(&vec![1; 2]); on_mut_vec(&mut vec![]); on_mut_vec(&mut vec![1, 2]); on_mut_vec(&mut vec![1; 2]); // Now with non-constant expressions let line = Line { length: 2 }; on_slice(&vec![2; line.length]); on_slice(&vec![2; line.length()]); on_mut_slice(&mut vec![2; line.length]); on_mut_slice(&mut vec![2; line.length()]); for a in vec![1, 2, 3] { println!("{:?}", a); } for a in vec![NonCopy, NonCopy] { println!("{:?}", a); } on_vec(&vec![1; 201]); // Ok, size of `vec` higher than `too_large_for_stack` on_mut_vec(&mut vec![1; 201]); // Ok, size of `vec` higher than `too_large_for_stack` // Ok for a in vec![1; 201] { println!("{:?}", a); } }