Trait std::marker::Unsize[][src]

pub trait Unsize<T> where
    T: ?Sized
{ }
🔬 This is a nightly-only experimental API. (unsize #27732)
Expand description

可以是未定义大小的类型也可以是动态大小的类型。

例如,按大小排列的数组类型 [i8; 2] 实现 Unsize<[i8]>Unsize<dyn fmt::Debug>

Unsize 的所有实现均由编译器自动提供。

Unsize 为以下目的实现:

  • [T; N]Unsize<[T]>
  • T T: Trait 时为 Unsize<dyn Trait>
  • Foo<..., T, ...> 如果是,则为 Unsize<Foo<..., U, ...>>:
    • T: Unsize<U>
    • Foo 是一个结构体
    • Foo 的最后一个字段具有涉及 T 的类型
    • T 不属于任何其他字段的类型
    • Bar<T>: Unsize<Bar<U>>, 如果 Foo 的最后一个字段的类型为 Bar<T>

Unsizeops::CoerceUnsized 一起使用可允许 “user-defined” 容器 (例如 Rc) 包含动态大小的类型。 有关更多详细信息,请参见 DST coercion RFCthe nomicon entry on coercion

Implementors