| #![feature(rustc_attrs)] | |
| #![allow(unused,dead_code)] | |
| fn nested_field() { | |
| #[rustc_layout_scalar_valid_range_start(1)] | |
| struct NonZero<T>(T); | |
| let mut foo = unsafe { NonZero((1,)) }; | |
| foo.0.0 = 0; | |
| //~^ ERROR: mutation of layout constrained field is unsafe | |
| } | |
| fn block() { | |
| #[rustc_layout_scalar_valid_range_start(1)] | |
| struct NonZero<T>(T); | |
| let mut foo = unsafe { NonZero((1,)) }; | |
| { foo.0 }.0 = 0; | |
| // ^ not unsafe because the result of the block expression is a new place | |
| } | |
| fn main() {} |