//@ run-pass | |
// FIXME(static_mut_refs): Do not allow `static_mut_refs` lint | |
#![allow(static_mut_refs)] | |
static mut DROPPED: [bool; 2] = [false, false]; | |
struct A(usize); | |
struct Foo { _a: A, _b: isize } | |
impl Drop for A { | |
fn drop(&mut self) { | |
let A(i) = *self; | |
unsafe { DROPPED[i] = true; } | |
} | |
} | |
fn main() { | |
{ | |
Foo { | |
_a: A(0), | |
..Foo { _a: A(1), _b: 2 } | |
}; | |
} | |
unsafe { | |
assert!(DROPPED[0]); | |
assert!(DROPPED[1]); | |
} | |
} |