pub unsafe trait Immutable { }
Expand description
Types which are free from interior mutability.
T: Immutable
indicates that T
does not permit interior mutation, except
by ownership or an exclusive (&mut
) borrow.
§Implementation
Do not implement this trait yourself! Instead, use
#[derive(Immutable)]
(requires the derive
Cargo feature);
e.g.:
#[derive(Immutable)]
struct MyStruct {
...
}
#[derive(Immutable)]
enum MyEnum {
...
}
#[derive(Immutable)]
union MyUnion {
...
}
This derive performs a sophisticated, compile-time safety analysis to
determine whether a type is Immutable
.
§Safety
Unsafe code outside of this crate must not make any assumptions about T
based on T: Immutable
. We reserve the right to relax the requirements for
Immutable
in the future, and if unsafe code outside of this crate makes
assumptions based on T: Immutable
, future relaxations may cause that code
to become unsound.