Module marker
Primitive traits and types representing basic properties of types.
Rust types can be classified in various useful ways according to their intrinsic properties. These classifications are represented as traits.
Modules
Structs
- PhantomContravariant Zero-sized type used to mark a type parameter as contravariant.
- PhantomContravariantLifetime Zero-sized type used to mark a lifetime as contravariant.
- PhantomCovariant Zero-sized type used to mark a type parameter as covariant.
- PhantomCovariantLifetime Zero-sized type used to mark a lifetime as covariant.
-
PhantomData
Zero-sized type used to mark things that "act like" they own a
T. - PhantomInvariant Zero-sized type used to mark a type parameter as invariant.
- PhantomInvariantLifetime Zero-sized type used to mark a lifetime as invariant.
-
PhantomPinned
A marker type which does not implement
Unpin.
Traits
- BikeshedGuaranteedNoDrop Marker trait for the types that are allowed in union fields and unsafe binder types.
-
CoercePointeeValidated
A trait that is implemented for ADTs with
derive(CoercePointee)so that the compiler can enforce the derive impls are valid post-expansion, since the derive has stricter requirements than if the impls were written by hand. - CoerceShared Allows reborrowable value to be reborrowed as shared, creating a copy that disables the source for writes for the lifetime of the copy.
-
ConstParamTy_
A marker for types which can be used as types of
constgeneric parameters. - Copy Types whose values can be duplicated simply by copying bits.
- Destruct A marker for types that can be dropped.
- DiscriminantKind Compiler-internal trait used to indicate the type of enum discriminants.
-
Freeze
Used to determine whether a type contains
any
UnsafeCellinternally, but not through an indirection. This affects, for example, whether astaticof that type is placed in read-only static memory or writable static memory. This can be used to declare that a constant with a generic type will not contain interior mutability, and subsequently allow placing the constant behind references. - MetaSized Types with a size that can be determined from pointer metadata.
- PointeeSized Types that may or may not have a size.
- Reborrow Allows value to be reborrowed as exclusive, creating a copy of the value that disables the source for reads and writes for the lifetime of the copy.
- Send Types that can be transferred across thread boundaries.
- Sized Types with a constant size known at compile time.
- StructuralPartialEq Required trait for constants used in pattern matches.
- Sync Types for which it is safe to share references between threads.
- Tuple A marker for tuple types.
- Unpin Types that do not require any pinning guarantees.
-
UnsafeUnpin
Used to determine whether a type contains any
UnsafePinned(orPhantomPinned) internally, but not through an indirection. This affects, for example, whether we emitnoaliasmetadata for&mut Tor not. - Unsize Types that can be "unsized" to a dynamically-sized type.
- Variance A marker trait for phantom variance types.
Functions
-
variance
Construct a variance marker; equivalent to
Default::default.
Macros
- CoercePointee Derive macro that makes a smart pointer usable with trait objects.
-
CoerceShared
Derive macro generating an impl of the trait
CoerceShared. -
ConstParamTy
Derive macro generating an impl of the trait
ConstParamTy. -
Copy
Derive macro generating an impl of the trait
Copy. -
Reborrow
Derive macro generating an impl of the trait
Reborrow. - marker_impls Implements a given marker trait for multiple types at the same time.