]>
git.proxmox.com Git - rustc.git/blob - src/test/ui/structs-enums/enum-discrim-manual-sizing.rs
4 use std
::mem
::{size_of, align_of}
;
73 enum Ei64NonCLike
<T
> {
79 enum Eu64NonCLike
<T
> {
85 assert_eq
!(size_of
::<Ei8
>(), 1);
86 assert_eq
!(size_of
::<Eu8
>(), 1);
87 assert_eq
!(size_of
::<Ei16
>(), 2);
88 assert_eq
!(size_of
::<Eu16
>(), 2);
89 assert_eq
!(size_of
::<Ei32
>(), 4);
90 assert_eq
!(size_of
::<Eu32
>(), 4);
91 assert_eq
!(size_of
::<Ei64
>(), 8);
92 assert_eq
!(size_of
::<Eu64
>(), 8);
93 assert_eq
!(size_of
::<Eint
>(), size_of
::<isize>());
94 assert_eq
!(size_of
::<Euint
>(), size_of
::<usize>());
95 assert_eq
!(size_of
::<Eu8NonCLike
<()>>(), 1);
96 assert_eq
!(size_of
::<Ei64NonCLike
<()>>(), 8);
97 assert_eq
!(size_of
::<Eu64NonCLike
<()>>(), 8);
98 let u8_expected_size
= round_up(9, align_of
::<Eu64NonCLike
<u8>>());
99 assert_eq
!(size_of
::<Eu64NonCLike
<u8>>(), u8_expected_size
);
100 let array_expected_size
= round_up(28, align_of
::<Eu64NonCLike
<[u32; 5]>>());
101 assert_eq
!(size_of
::<Eu64NonCLike
<[u32; 5]>>(), array_expected_size
);
102 assert_eq
!(size_of
::<Eu64NonCLike
<[u32; 6]>>(), 32);
104 assert_eq
!(align_of
::<Eu32
>(), align_of
::<u32>());
105 assert_eq
!(align_of
::<Eu64NonCLike
<u8>>(), align_of
::<u64>());
108 // Rounds x up to the next multiple of a
109 fn round_up(x
: usize, a
: usize) -> usize {
110 ((x
+ (a
- 1)) / a
) * a