r[safety]
r[safety.intro] Unsafe operations are those that can potentially violate the memory-safety guarantees of Rust's static semantics.
r[safety.unsafe-ops] The following language level features cannot be used in the safe subset of Rust:
r[safety.unsafe-deref]
- Dereferencing a raw pointer.
r[safety.unsafe-static]
r[safety.unsafe-union-access]
- Accessing a field of a
union
, other than to assign to it.
r[safety.unsafe-call]
- Calling an unsafe function (including an intrinsic or foreign function).
r[safety.unsafe-target-feature-call]
- Calling a safe function marked with a [
target_feature
][attributes.codegen.target_feature] from a function that does not have atarget_feature
attribute enabling the same features (see [attributes.codegen.target_feature.safety-restrictions]).
r[safety.unsafe-impl]
- Implementing an unsafe trait.
r[safety.unsafe-extern]
r[safety.unsafe-attribute]
- Applying an unsafe attribute to an item.
Footnotes
-
Prior to the 2024 edition, extern blocks were allowed to be declared without
unsafe
. ↩