diff options
Diffstat (limited to '')
-rw-r--r-- | src/tools/clippy/tests/ui/vec.rs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/src/tools/clippy/tests/ui/vec.rs b/src/tools/clippy/tests/ui/vec.rs new file mode 100644 index 000000000..d7673ce3e --- /dev/null +++ b/src/tools/clippy/tests/ui/vec.rs @@ -0,0 +1,78 @@ +// run-rustfix +#![allow(clippy::nonstandard_macro_braces)] +#![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<u8>) {} + +fn on_mut_vec(_: &mut Vec<u8>) {} + +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); + } +} |