static mut FOO: i32 = 42; static BAR: Foo = Foo(unsafe { &FOO as *const _} ); #[allow(dead_code)] struct Foo(*const i32); unsafe impl Sync for Foo {} fn main() { unsafe { assert_eq!(*BAR.0, 42); FOO = 5; assert_eq!(FOO, 5); assert_eq!(*BAR.0, 5); } }