#ptr #meta

无std ptr_meta

ptr_meta rfc的放射性稳定化

9个版本

0.3.0-pre12023年11月4日
0.3.0-alpha.32024年8月11日
0.3.0-alpha.22024年3月30日
0.2.0 2022年8月10日
0.1.1 2021年2月19日

#7 in 无标准库

Download history 276390/week @ 2024-05-03 297454/week @ 2024-05-10 288562/week @ 2024-05-17 283848/week @ 2024-05-24 303504/week @ 2024-05-31 291935/week @ 2024-06-07 287437/week @ 2024-06-14 286147/week @ 2024-06-21 279231/week @ 2024-06-28 310215/week @ 2024-07-05 297292/week @ 2024-07-12 302576/week @ 2024-07-19 313771/week @ 2024-07-26 309038/week @ 2024-08-02 321469/week @ 2024-08-09 293554/week @ 2024-08-16

1,291,213 每月下载量
用于 769 个Crates (15直接)

MIT 许可证

21KB
313

ptr_meta — 最新版本 许可证

ptr_meta RFC的放射性稳定化。

用法

有大小类型

所有 Sized 类型都通过泛型实现实现了 Pointee,因此您不需要为这些类型派生 Pointee

slicestr

这些核心类型已提供实现。

CStrOsStr

当启用 std 功能时,这些 std 类型已提供实现。

dyn Anydyn 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