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