5 assert_eq!(size_of::<u8>(), 1);
6 assert_eq!(size_of::<u16>(), 2);
7 assert_eq!(size_of::<u32>(), 4);
8 assert_eq!(size_of::<u64>(), 8);
12 #[cfg(target_pointer_width = "16")]
14 assert_eq!(size_of::<usize>(), 2);
15 assert_eq!(size_of::<*const usize>(), 2);
19 #[cfg(target_pointer_width = "32")]
21 assert_eq!(size_of::<usize>(), 4);
22 assert_eq!(size_of::<*const usize>(), 4);
26 #[cfg(target_pointer_width = "64")]
28 assert_eq!(size_of::<usize>(), 8);
29 assert_eq!(size_of::<*const usize>(), 8);
33 fn size_of_val_basic() {
34 assert_eq!(size_of_val(&1u8), 1);
35 assert_eq!(size_of_val(&1u16), 2);
36 assert_eq!(size_of_val(&1u32), 4);
37 assert_eq!(size_of_val(&1u64), 8);
42 assert_eq!(align_of::<u8>(), 1);
43 assert_eq!(align_of::<u16>(), 2);
44 assert_eq!(align_of::<u32>(), 4);
48 #[cfg(target_pointer_width = "16")]
50 assert_eq!(align_of::<usize>(), 2);
51 assert_eq!(align_of::<*const usize>(), 2);
55 #[cfg(target_pointer_width = "32")]
57 assert_eq!(align_of::<usize>(), 4);
58 assert_eq!(align_of::<*const usize>(), 4);
62 #[cfg(target_pointer_width = "64")]
64 assert_eq!(align_of::<usize>(), 8);
65 assert_eq!(align_of::<*const usize>(), 8);
69 fn align_of_val_basic() {
70 assert_eq!(align_of_val(&1u8), 1);
71 assert_eq!(align_of_val(&1u16), 2);
72 assert_eq!(align_of_val(&1u32), 4);
86 let mut x = Some("test".to_string());
87 let y = replace(&mut x, None);
93 fn test_transmute_copy() {
94 assert_eq!(1, unsafe { transmute_copy(&1) });
102 impl Foo for isize {}
104 let a = box 100isize as Box<dyn Foo>;
106 let x: ::core::raw::TraitObject = transmute(a);
107 assert!(*(x.data as *const isize) == 100);
108 let _x: Box<dyn Foo> = transmute(x);
112 assert_eq!(transmute::<_, Vec<u8>>("L".to_string()), [76]);
118 fn test_discriminant_send_sync() {
127 fn is_send_sync<T: Send + Sync>() {}
129 is_send_sync::<Discriminant<Regular>>();
130 is_send_sync::<Discriminant<NotSendSync>>();