2024-02-12 07:52:20 -06:00
|
|
|
//@ check-pass
|
2024-02-17 13:01:56 -06:00
|
|
|
|
|
|
|
#![allow(non_camel_case_types, non_upper_case_globals, static_mut_refs)]
|
2024-02-12 07:52:20 -06:00
|
|
|
|
|
|
|
pub struct wl_interface {
|
2024-02-17 13:01:56 -06:00
|
|
|
pub version: i32,
|
2024-02-12 07:52:20 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
pub struct Interface {
|
|
|
|
pub other_interfaces: &'static [&'static Interface],
|
|
|
|
pub c_ptr: Option<&'static wl_interface>,
|
|
|
|
}
|
|
|
|
|
2024-02-17 13:01:56 -06:00
|
|
|
pub static mut wl_callback_interface: wl_interface = wl_interface { version: 0 };
|
2024-02-12 07:52:20 -06:00
|
|
|
|
2024-02-17 13:01:56 -06:00
|
|
|
pub static WL_CALLBACK_INTERFACE: Interface =
|
|
|
|
Interface { other_interfaces: &[], c_ptr: Some(unsafe { &wl_callback_interface }) };
|
2024-02-12 07:52:20 -06:00
|
|
|
|
|
|
|
// This static contains a promoted that points to a static that points to a mutable static.
|
2024-02-17 13:01:56 -06:00
|
|
|
pub static WL_SURFACE_INTERFACE: Interface =
|
|
|
|
Interface { other_interfaces: &[&WL_CALLBACK_INTERFACE], c_ptr: None };
|
2024-02-12 07:52:20 -06:00
|
|
|
|
|
|
|
// 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() {}
|