]>
git.proxmox.com Git - rustc.git/blob - src/test/run-pass/enum-discrim-manual-sizing.rs
1 // Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
12 use std
::mem
::{size_of, align_of}
;
81 enum Ei64NonCLike
<T
> {
87 enum Eu64NonCLike
<T
> {
93 assert_eq
!(size_of
::<Ei8
>(), 1);
94 assert_eq
!(size_of
::<Eu8
>(), 1);
95 assert_eq
!(size_of
::<Ei16
>(), 2);
96 assert_eq
!(size_of
::<Eu16
>(), 2);
97 assert_eq
!(size_of
::<Ei32
>(), 4);
98 assert_eq
!(size_of
::<Eu32
>(), 4);
99 assert_eq
!(size_of
::<Ei64
>(), 8);
100 assert_eq
!(size_of
::<Eu64
>(), 8);
101 assert_eq
!(size_of
::<Eint
>(), size_of
::<isize>());
102 assert_eq
!(size_of
::<Euint
>(), size_of
::<usize>());
103 assert_eq
!(size_of
::<Eu8NonCLike
<()>>(), 1);
104 assert_eq
!(size_of
::<Ei64NonCLike
<()>>(), 8);
105 assert_eq
!(size_of
::<Eu64NonCLike
<()>>(), 8);
106 let u8_expected_size
= round_up(9, align_of
::<Eu64NonCLike
<u8>>());
107 assert_eq
!(size_of
::<Eu64NonCLike
<u8>>(), u8_expected_size
);
108 let array_expected_size
= round_up(28, align_of
::<Eu64NonCLike
<[u32; 5]>>());
109 assert_eq
!(size_of
::<Eu64NonCLike
<[u32; 5]>>(), array_expected_size
);
110 assert_eq
!(size_of
::<Eu64NonCLike
<[u32; 6]>>(), 32);
113 // Rounds x up to the next multiple of a
114 fn round_up(x
: usize, a
: usize) -> usize {
115 ((x
+ (a
- 1)) / a
) * a