Module std::marker
[−]
[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
PhantomData |
|
NoCopy |
[Unstable] 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. |
Traits
Copy |
Types that can be copied by simply copying bits (i.e. |
Send |
Types able to be transferred across thread boundaries. |
Sized |
Types with a constant size known at compile-time. |
Sync |
Types that can be safely shared between threads when aliased. |
Reflect |
[Unstable] A marker trait indicates a type that can be reflected over. This trait is implemented for all types. Its purpose is to ensure that when you write a generic function that will employ reflection, that must be reflected (no pun intended) in the generic bounds of that function. Here is an example: |
Unsize |
[Unstable] Types that can be "unsized" to a dynamically sized type. |