Trait core::marker::Unsize [−][src]
#[lang = "unsize"]pub trait Unsize<T: ?Sized> { }
Types that can be "unsized" to a dynamically-sized type.
For example, the sized array type [i8; 2] implements Unsize<[i8]> and
Unsize<fmt::Debug>.
All implementations of Unsize are provided automatically by the compiler.
Unsize is implemented for:
[T; N]isUnsize<[T]>TisUnsize<Trait>whenT: TraitFoo<..., T, ...>isUnsize<Foo<..., U, ...>>if:T: Unsize<U>- Foo is a struct
- Only the last field of
Foohas a type involvingT Tis not part of the type of any other fieldsBar<T>: Unsize<Bar<U>>, if the last field ofFoohas typeBar<T>
Unsize is used along with ops::CoerceUnsized to allow
"user-defined" containers such as rc::Rc to contain dynamically-sized
types. See the DST coercion RFC and the nomicon entry on coercion
for more details.