# Rust Traits
## See also
### - [[Traits (Rust book)]]
## Resources
### `std` docs
- [Keyword dyn](https://doc.rust-lang.org/std/keyword.dyn.html)
### [[Rust Reference]]
- [Traits](https://doc.rust-lang.org/reference/items/traits.html#traits)
- Trait bounds
- Generic traits
- Object Safety
- Supertraits
- Unsafe traits
- Parameter Patterns
- Item visibility
- [Special types and traits](https://doc.rust-lang.org/reference/special-types-and-traits.html#special-types-and-traits)
## General
### [Special types and traits](https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits)
- `Box<T>`
- `Rc<T>`
- `Arc<T>`
- `Pin<P>`
- `UnsafeCell<T>`
- `PhantomData<T>`
### [Operator Traits](https://doc.rust-lang.org/reference/special-types-and-traits.html#operator-traits)
- `Deref` and `DerefMut`
- `Drop`
- `Copy`
- `Clone`
- `Send`
- `Sync`
### [Auto traits](https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits)
- `Send`
- `Sync`
- `Unpin`
- `UnwindSafe`
- `RefUnwindSafe`
### [Sized](https://doc.rust-lang.org/reference/special-types-and-traits.html#sized)
The [`Sized`](https://doc.rust-lang.org/std/marker/trait.Sized.html) trait indicates that the size of this type is known at compile-time; that is, it's not a [dynamically sized type](https://doc.rust-lang.org/reference/dynamically-sized-types.html). [Type parameters](https://doc.rust-lang.org/reference/types/parameters.html) are `Sized` by default, as are [associated types](https://doc.rust-lang.org/reference/items/associated-items.html#associated-types). `Sized` is always implemented automatically by the compiler, not by [implementation items](https://doc.rust-lang.org/reference/items/implementations.html). These implicit `Sized` bounds may be relaxed by using the special `?Sized` bound.