#erasure #inline #stack #data #type-erased

no-std typeless

unsafe 内联类型擦除

1 个不稳定版本

0.1.0 2021 年 10 月 5 日

#4#type-erased


用于 inline_any

MIT/Apache

9KB
84

typeless

unsafe 在栈上进行类型擦除的 API

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
typeless = "0.1"

将类型为 T 的任何值 x 存储在 TypeErased 中将完全删除与其关联的所有类型数据。

限制

虽然这会删除所有类型数据,只留下纯字节,但编译器仍然需要两件事

  • 大小:TypeErased 的大小不是基于其包含的数据,而是一个常量泛型参数 C,实际上是它可以包含的类型的一个“最大大小”。

  • 对齐:直到有方法可以通过常量参数定义对齐,TypeErased 的对齐为 8 字节,因此可以包含对齐为 8 或更小的任何东西

访问

由于没有类型数据,任何对内部数据的访问都是 unsafe(除了直接获取字节外)

TypeErased 不是一个 SendSync,因为它无法知道这是否安全

许可证

该项目根据您选择的以下任一项进行许可

进行。

除非您明确说明,否则根据 Apache-2.0 许可证定义的,您有意提交的任何贡献,都将根据上述许可进行双重许可,而无需任何额外的条款或条件。

无运行时依赖

功能