Trait std::marker::Unsize
pub trait Unsize<T> where 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<dyn fmt::Debug>.
All implementations of Unsize are provided automatically by the compiler.
Unsize is implemented for:
-
[T; N]isUnsize<[T]> -
TisUnsize<dyn Trait>whenT: Trait -
Foo<..., 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 fields -
Bar<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 to contain dynamically-sized types. See the DST coercion RFC and the nomicon entry on coercion for more details.
Implementors
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/marker/trait.Unsize.html