Trait std::marker::Unsize [−][src]
pub trait Unsize<T> where
T: ?Sized, { }Expand description
可以是未定义大小的类型也可以是动态大小的类型。
例如,按大小排列的数组类型 [i8; 2] 实现 Unsize<[i8]> 和 Unsize<dyn fmt::Debug>。
Unsize 的所有实现均由编译器自动提供。
Unsize 为以下目的实现:
[T; N]是Unsize<[T]>TT: Trait时为Unsize<dyn Trait>Foo<..., T, ...>如果是,则为Unsize<Foo<..., U, ...>>:T: Unsize<U>- Foo 是一个结构体
- 仅
Foo的最后一个字段具有涉及T的类型 T不属于任何其他字段的类型Bar<T>: Unsize<Bar<U>>, 如果Foo的最后一个字段的类型为Bar<T>
Unsize 与 ops::CoerceUnsized 一起使用可允许 “user-defined” 容器 (例如 Rc) 包含动态大小的类型。
有关更多详细信息,请参见 DST coercion RFC 和 the nomicon entry on coercion。