1 // Copyright 2019 The Fuchsia Authors
2 //
3 // Licensed under a BSD-style license <LICENSE-BSD>, Apache License, Version 2.0
4 // <LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0>, or the MIT
5 // license <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your option.
6 // This file may not be copied, modified, or distributed except according to
7 // those terms.
8 
9 #![allow(warnings)]
10 
11 use {static_assertions::assert_impl_all, zerocopy::AsBytes};
12 
13 // An enum is `AsBytes` if if has a defined repr.
14 
15 #[derive(AsBytes)]
16 #[repr(C)]
17 enum C {
18     A,
19 }
20 
21 assert_impl_all!(C: AsBytes);
22 
23 #[derive(AsBytes)]
24 #[repr(u8)]
25 enum U8 {
26     A,
27 }
28 
29 assert_impl_all!(U8: AsBytes);
30 
31 #[derive(AsBytes)]
32 #[repr(u16)]
33 enum U16 {
34     A,
35 }
36 
37 assert_impl_all!(U16: AsBytes);
38 
39 #[derive(AsBytes)]
40 #[repr(u32)]
41 enum U32 {
42     A,
43 }
44 
45 assert_impl_all!(U32: AsBytes);
46 
47 #[derive(AsBytes)]
48 #[repr(u64)]
49 enum U64 {
50     A,
51 }
52 
53 assert_impl_all!(U64: AsBytes);
54 
55 #[derive(AsBytes)]
56 #[repr(usize)]
57 enum Usize {
58     A,
59 }
60 
61 assert_impl_all!(Usize: AsBytes);
62 
63 #[derive(AsBytes)]
64 #[repr(i8)]
65 enum I8 {
66     A,
67 }
68 
69 assert_impl_all!(I8: AsBytes);
70 
71 #[derive(AsBytes)]
72 #[repr(i16)]
73 enum I16 {
74     A,
75 }
76 
77 assert_impl_all!(I16: AsBytes);
78 
79 #[derive(AsBytes)]
80 #[repr(i32)]
81 enum I32 {
82     A,
83 }
84 
85 assert_impl_all!(I32: AsBytes);
86 
87 #[derive(AsBytes)]
88 #[repr(i64)]
89 enum I64 {
90     A,
91 }
92 
93 assert_impl_all!(I64: AsBytes);
94 
95 #[derive(AsBytes)]
96 #[repr(isize)]
97 enum Isize {
98     A,
99 }
100 
101 assert_impl_all!(Isize: AsBytes);
102