Trait frame_support::dispatch::marker::Unsize [−][src]
pub trait Unsize<T> where
T: ?Sized, { }
🔬 This is a nightly-only experimental API. (
unsize
)Expand description
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]>
T
isUnsize<dyn Trait>
whenT: Trait
Foo<..., T, ...>
isUnsize<Foo<..., U, ...>>
if:T: Unsize<U>
- Foo is a struct
- Only the last field of
Foo
has a type involvingT
T
is not part of the type of any other fieldsBar<T>: Unsize<Bar<U>>
, if the last field ofFoo
has 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.