]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/transmute_collection.rs
Auto merge of #84620 - Dylan-DPC:rollup-wkv97im, r=Dylan-DPC
[rust.git] / src / tools / clippy / tests / ui / transmute_collection.rs
1 #![warn(clippy::unsound_collection_transmute)]
2
3 use std::collections::{BTreeMap, BTreeSet, BinaryHeap, HashMap, HashSet, VecDeque};
4 use std::mem::transmute;
5
6 fn main() {
7     unsafe {
8         // wrong size
9         let _ = transmute::<_, Vec<u32>>(vec![0u8]);
10         // wrong layout
11         let _ = transmute::<_, Vec<[u8; 4]>>(vec![1234u32]);
12
13         // wrong size
14         let _ = transmute::<_, VecDeque<u32>>(VecDeque::<u8>::new());
15         // wrong layout
16         let _ = transmute::<_, VecDeque<u32>>(VecDeque::<[u8; 4]>::new());
17
18         // wrong size
19         let _ = transmute::<_, BinaryHeap<u32>>(BinaryHeap::<u8>::new());
20         // wrong layout
21         let _ = transmute::<_, BinaryHeap<u32>>(BinaryHeap::<[u8; 4]>::new());
22
23         // wrong size
24         let _ = transmute::<_, BTreeSet<u32>>(BTreeSet::<u8>::new());
25         // wrong layout
26         let _ = transmute::<_, BTreeSet<u32>>(BTreeSet::<[u8; 4]>::new());
27
28         // wrong size
29         let _ = transmute::<_, HashSet<u32>>(HashSet::<u8>::new());
30         // wrong layout
31         let _ = transmute::<_, HashSet<u32>>(HashSet::<[u8; 4]>::new());
32
33         // wrong size
34         let _ = transmute::<_, BTreeMap<u8, u32>>(BTreeMap::<u8, u8>::new());
35         let _ = transmute::<_, BTreeMap<u8, u32>>(BTreeMap::<u32, u32>::new());
36         // wrong layout
37         let _ = transmute::<_, BTreeMap<u8, u32>>(BTreeMap::<u8, [u8; 4]>::new());
38         let _ = transmute::<_, BTreeMap<u32, u32>>(BTreeMap::<[u8; 4], u32>::new());
39
40         // wrong size
41         let _ = transmute::<_, HashMap<u8, u32>>(HashMap::<u8, u8>::new());
42         let _ = transmute::<_, HashMap<u8, u32>>(HashMap::<u32, u32>::new());
43         // wrong layout
44         let _ = transmute::<_, HashMap<u8, u32>>(HashMap::<u8, [u8; 4]>::new());
45         let _ = transmute::<_, HashMap<u32, u32>>(HashMap::<[u8; 4], u32>::new());
46     }
47 }