Module std::markerStable
[-]
[+]
[src]
Primitive traits and marker types representing basic 'kinds' of types.
Rust types can be classified in various useful ways according to intrinsic properties of the type. These classifications, often called 'kinds', are represented as traits.
They cannot be implemented by user code, but are instead implemented by the compiler automatically for the types to which they apply.
Marker types are special types that are used with unsafe code to inform the compiler of special constraints. Marker types should only be needed when you are creating an abstraction that is implemented using unsafe code. In that case, you may want to embed some of the marker types below into your type.
Structs
| ContravariantLifetime | As |
| ContravariantType | A marker type whose type parameter |
| CovariantLifetime | As |
| CovariantType | A marker type whose type parameter |
| InvariantLifetime | As |
| InvariantType | A marker type whose type parameter |
| Managed | A type which is considered managed by the GC. This is typically embedded in other types. |
| NoCopy | A type which is considered "not POD", meaning that it is not implicitly copyable. This is typically embedded in other types to ensure that they are never copied, even if they lack a destructor. |
| NoSend | A type which is considered "not sendable", meaning that it cannot
be safely sent between tasks, even if it is owned. This is
typically embedded in other types, such as |
| NoSync | A type which is considered "not sync", meaning that its contents are not threadsafe, hence they cannot be shared between tasks. |
Traits
| Copy | Types that can be copied by simply copying bits (i.e. |
| Send | Types able to be transferred across task boundaries. |
| Sized | Types with a constant size known at compile-time. |
| Sync | Types that can be safely shared between tasks when aliased. |