1// run-rustfix 2#![allow(clippy::nonstandard_macro_braces)] 3#![warn(clippy::useless_vec)] 4 5#[derive(Debug)] 6struct NonCopy; 7 8fn on_slice(_: &[u8]) {} 9 10fn on_mut_slice(_: &mut [u8]) {} 11 12#[allow(clippy::ptr_arg)] 13fn on_vec(_: &Vec<u8>) {} 14 15fn on_mut_vec(_: &mut Vec<u8>) {} 16 17struct Line { 18 length: usize, 19} 20 21impl Line { 22 fn length(&self) -> usize { 23 self.length 24 } 25} 26 27fn main() { 28 on_slice(&[]); 29 on_slice(&[]); 30 on_mut_slice(&mut []); 31 32 on_slice(&[1, 2]); 33 on_slice(&[1, 2]); 34 on_mut_slice(&mut [1, 2]); 35 36 on_slice(&[1, 2]); 37 on_slice(&[1, 2]); 38 on_mut_slice(&mut [1, 2]); 39 #[rustfmt::skip] 40 on_slice(&[1, 2]); 41 on_slice(&[1, 2]); 42 on_mut_slice(&mut [1, 2]); 43 44 on_slice(&[1; 2]); 45 on_slice(&[1; 2]); 46 on_mut_slice(&mut [1; 2]); 47 48 on_vec(&vec![]); 49 on_vec(&vec![1, 2]); 50 on_vec(&vec![1; 2]); 51 on_mut_vec(&mut vec![]); 52 on_mut_vec(&mut vec![1, 2]); 53 on_mut_vec(&mut vec![1; 2]); 54 55 // Now with non-constant expressions 56 let line = Line { length: 2 }; 57 58 on_slice(&vec![2; line.length]); 59 on_slice(&vec![2; line.length()]); 60 on_mut_slice(&mut vec![2; line.length]); 61 on_mut_slice(&mut vec![2; line.length()]); 62 63 for a in &[1, 2, 3] { 64 println!("{:?}", a); 65 } 66 67 for a in vec![NonCopy, NonCopy] { 68 println!("{:?}", a); 69 } 70 71 on_vec(&vec![1; 201]); // Ok, size of `vec` higher than `too_large_for_stack` 72 on_mut_vec(&mut vec![1; 201]); // Ok, size of `vec` higher than `too_large_for_stack` 73 74 // Ok 75 for a in vec![1; 201] { 76 println!("{:?}", a); 77 } 78} 79