1 个不稳定版本
0.1.0 | 2021 年 10 月 5 日 |
---|
#4 在 #type-erased
用于 inline_any
9KB
84 行
typeless
unsafe
在栈上进行类型擦除的 API
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
typeless = "0.1"
将类型为 T
的任何值 x
存储在 TypeErased
中将完全删除与其关联的所有类型数据。
限制
虽然这会删除所有类型数据,只留下纯字节,但编译器仍然需要两件事
-
大小:
TypeErased
的大小不是基于其包含的数据,而是一个常量泛型参数C
,实际上是它可以包含的类型的一个“最大大小”。 -
对齐:直到有方法可以通过常量参数定义对齐,
TypeErased
的对齐为 8 字节,因此可以包含对齐为 8 或更小的任何东西
访问
由于没有类型数据,任何对内部数据的访问都是 unsafe
(除了直接获取字节外)
TypeErased
不是一个 Send
或 Sync
,因为它无法知道这是否安全
许可证
该项目根据您选择的以下任一项进行许可
进行。
除非您明确说明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,都将根据上述许可进行双重许可,而无需任何额外的条款或条件。