mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-01 23:12:02 +00:00
34 lines
940 B
Rust
34 lines
940 B
Rust
//@ check-pass
|
|
#![allow(non_camel_case_types, non_upper_case_globals, static_mut_ref)]
|
|
|
|
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() {}
|