pub static UNSAFE_ATTR_OUTSIDE_UNSAFE: &Lint
Expand description

The unsafe_attr_outside_unsafe lint detects a missing unsafe keyword on attributes considered unsafe.

§Example

#![feature(unsafe_attributes)]
#![warn(unsafe_attr_outside_unsafe)]

#[no_mangle]
extern "C" fn foo() {}

fn main() {}

{{produces}}

§Explanation

Some attributes (e.g. no_mangle, export_name, link_section – see issue #82499 for a more complete list) are considered “unsafe” attributes. An unsafe attribute must only be used inside unsafe(…).

This lint can automatically wrap the attributes in unsafe(...) , but this obviously cannot verify that the preconditions of the unsafe attributes are fulfilled, so that is still up to the user.

The lint is currently “allow” by default, but that might change in the future.