Trait core::marker::Unsize [−][src]
pub trait Unsize<T: ?Sized> { }Expand description
可以把没有大小的类型改为动态大小的类型。
例如,按大小排列的数组类型 [i8; 2] 实现 Unsize<[i8]> 和 Unsize<dyn fmt::Debug>。
Unsize 的所有实现都是由编译器自动提供的。
这些实现是:
- Arrays
[T; N]implementUnsize<[T]>. - 实现
Traittrait 的类型也实现了Unsize<dyn Trait>。 - 结构体
Foo<..., T, ...>实现了Unsize<Foo<..., U, ...>>如果所有这些条件都满足:T: Unsize<U>.- 只有
Foo的最后一个字段具有包含T的类型。 Bar<T>: Unsize<Bar<U>>,其中Bar<T>代表最后一个字段的实际类型。
Unsize 与 ops::CoerceUnsized 一起使用以允许 “user-defined” 容器 (例如 Rc) 包含动态大小的类型。
有关更多详细信息,请参见 DST coercion RFC 和 the nomicon entry on coercion。