mirror of https://github.com/rust-lang/rust
27 lines
585 B
Rust
27 lines
585 B
Rust
//@ run-pass
|
|
|
|
#![feature(unsized_tuple_coercion)]
|
|
|
|
// Ensure that unsizable fields that might be accessed don't get reordered
|
|
|
|
fn nonzero_size() {
|
|
let sized: (u8, [u32; 2]) = (123, [456, 789]);
|
|
let unsize: &(u8, [u32]) = &sized;
|
|
assert_eq!(unsize.0, 123);
|
|
assert_eq!(unsize.1.len(), 2);
|
|
assert_eq!(unsize.1[0], 456);
|
|
assert_eq!(unsize.1[1], 789);
|
|
}
|
|
|
|
fn zst() {
|
|
let sized: (u8, [u32; 0]) = (123, []);
|
|
let unsize: &(u8, [u32]) = &sized;
|
|
assert_eq!(unsize.0, 123);
|
|
assert_eq!(unsize.1.len(), 0);
|
|
}
|
|
|
|
pub fn main() {
|
|
nonzero_size();
|
|
zst();
|
|
}
|