]> git.proxmox.com Git - rustc.git/blame - src/tools/clippy/tests/ui/vec.rs
New upstream version 1.53.0+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / vec.rs
CommitLineData
f20569fa
XL
1// run-rustfix
2
3#![warn(clippy::useless_vec)]
4
5#[derive(Debug)]
6struct NonCopy;
7
8fn on_slice(_: &[u8]) {}
cdc7bbd5
XL
9
10fn on_mut_slice(_: &mut [u8]) {}
11
f20569fa
XL
12#[allow(clippy::ptr_arg)]
13fn on_vec(_: &Vec<u8>) {}
14
cdc7bbd5
XL
15fn on_mut_vec(_: &mut Vec<u8>) {}
16
f20569fa
XL
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(&vec![]);
29 on_slice(&[]);
cdc7bbd5 30 on_mut_slice(&mut vec![]);
f20569fa
XL
31
32 on_slice(&vec![1, 2]);
33 on_slice(&[1, 2]);
cdc7bbd5 34 on_mut_slice(&mut vec![1, 2]);
f20569fa
XL
35
36 on_slice(&vec![1, 2]);
37 on_slice(&[1, 2]);
cdc7bbd5 38 on_mut_slice(&mut vec![1, 2]);
f20569fa
XL
39 #[rustfmt::skip]
40 on_slice(&vec!(1, 2));
41 on_slice(&[1, 2]);
cdc7bbd5 42 on_mut_slice(&mut vec![1, 2]);
f20569fa
XL
43
44 on_slice(&vec![1; 2]);
45 on_slice(&[1; 2]);
cdc7bbd5 46 on_mut_slice(&mut vec![1; 2]);
f20569fa
XL
47
48 on_vec(&vec![]);
49 on_vec(&vec![1, 2]);
50 on_vec(&vec![1; 2]);
cdc7bbd5
XL
51 on_mut_vec(&mut vec![]);
52 on_mut_vec(&mut vec![1, 2]);
53 on_mut_vec(&mut vec![1; 2]);
f20569fa
XL
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()]);
cdc7bbd5
XL
60 on_mut_slice(&mut vec![2; line.length]);
61 on_mut_slice(&mut vec![2; line.length()]);
f20569fa
XL
62
63 for a in vec![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`
cdc7bbd5 72 on_mut_vec(&mut vec![1; 201]); // Ok, size of `vec` higher than `too_large_for_stack`
f20569fa
XL
73
74 // Ok
75 for a in vec![1; 201] {
76 println!("{:?}", a);
77 }
78}