9个版本
| 0.3.0-pre1 | 2023年11月4日 |
|---|---|
| 0.3.0-alpha.3 | 2024年8月11日 |
| 0.3.0-alpha.2 | 2024年3月30日 |
| 0.2.0 | 2022年8月10日 |
| 0.1.1 | 2021年2月19日 |
#7 in 无标准库
1,291,213 每月下载量
用于 769 个Crates (15直接)
21KB
313 行
ptr_meta —

ptr_meta RFC的放射性稳定化。
用法
有大小类型
所有 Sized 类型都通过泛型实现实现了 Pointee,因此您不需要为这些类型派生 Pointee。
slice 和 str
这些核心类型已提供实现。
CStr 和 OsStr
当启用 std 功能时,这些 std 类型已提供实现。
dyn Any 和 dyn Error
这些 trait 对象已提供实现。
具有DST作为最后一个字段的架构
您可以派生具有尾部DST的架构的 Pointee
use ptr_meta::Pointee;
#[derive(Pointee)]
struct Block<H, T> {
header: H,
elements: [T],
}
请注意,这仅在最后一个字段保证是DST时才会工作。具有泛型最后一个字段的架构可能具有冲突的泛型实现,因为泛型类型可能是 Sized。在这些情况下,可能需要一些特定实现,将泛型参数设置为切片、str 或特定 trait 对象。
特质对象
您可以生成 trait 对象的 Pointee 实现的代码
use ptr_meta::pointee;
// Generates Pointee for dyn Stringy
#[pointee]
trait Stringy {
fn as_string(&self) -> String;
}
依赖关系
~280–730KB
~18K SLoC