Static variables with the #[linkage] attribute within external blocks must have one of the following types, which are equivalent to a nullable pointer in C:
*mut T or *const T, where T may be any type.
An enumerator type with no #[repr] attribute and with two variants, where one of the variants has no fields, and the other has a single field of one of the following non-nullable types:
The variants can appear in either order.
For example, the following declaration is invalid:
#![allow(unused)]
#![feature(linkage)]
fn main() {
extern "C" {
#[linkage = "extern_weak"]
static foo: i8;
}
} The following declarations are valid:
#![allow(unused)]
#![feature(linkage)]
fn main() {
extern "C" {
#[linkage = "extern_weak"]
static foo: Option<unsafe extern "C" fn()>;
#[linkage = "extern_weak"]
static bar: Option<&'static i8>;
#[linkage = "extern_weak"]
static baz: *mut i8;
}
}
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/error_codes/E0791.html