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