| //@ check-pass | |
| #![allow(non_camel_case_types, non_upper_case_globals, static_mut_refs)] | |
| pub struct wl_interface { | |
| pub version: i32, | |
| } | |
| pub struct Interface { | |
| pub other_interfaces: &'static [&'static Interface], | |
| pub c_ptr: Option<&'static wl_interface>, | |
| } | |
| pub static mut wl_callback_interface: wl_interface = wl_interface { version: 0 }; | |
| pub static WL_CALLBACK_INTERFACE: Interface = | |
| Interface { other_interfaces: &[], c_ptr: Some(unsafe { &wl_callback_interface }) }; | |
| // This static contains a promoted that points to a static that points to a mutable static. | |
| pub static WL_SURFACE_INTERFACE: Interface = | |
| Interface { other_interfaces: &[&WL_CALLBACK_INTERFACE], c_ptr: None }; | |
| // And another variant of the same thing, this time with interior mutability. | |
| use std::sync::OnceLock; | |
| static LAZY_INIT: OnceLock<u32> = OnceLock::new(); | |
| static LAZY_INIT_REF: &[&OnceLock<u32>] = &[&LAZY_INIT]; | |
| fn main() {} |