#thin #dst #dynamically-sized #thin-pointer

已弃用 无 std thin-dst

内联切片动态大小类型的薄指针

6 个版本 (2 个稳定版)

1.1.0 2020 年 3 月 18 日
1.0.0 2019 年 11 月 19 日
1.0.0-beta.42019 年 11 月 14 日
1.0.0-beta.12019 年 11 月 10 日

#21 in #dst

Download history 535/week @ 2024-03-14 656/week @ 2024-03-21 701/week @ 2024-03-28 639/week @ 2024-04-04 659/week @ 2024-04-11 609/week @ 2024-04-18 496/week @ 2024-04-25 780/week @ 2024-05-02 922/week @ 2024-05-09 764/week @ 2024-05-16 690/week @ 2024-05-23 789/week @ 2024-05-30 859/week @ 2024-06-06 809/week @ 2024-06-13 885/week @ 2024-06-20 657/week @ 2024-06-27

3,367 个月下载量
4 个 crate 中使用 (通过 dsrs)

MIT/Apache

30KB
541

thin-dst

存储切片及其长度内联的封装自定义 DST。使用标准库集合类型以实现完全互操作性,并提供薄所有者指针以供空间敏感使用。

替代方案

slice-dst 是此 crate 的继任者,它以及其他 pointer-utils crate 提供了更可组合的 API。

此 crate 将继续进行被动维护,但任何未来的开发都将专注于 pointer-utils/slice-dst。

示例

最简单的示例就是一个封装的切片

let boxed_slice = ThinBox::new((), vec![0, 1, 2, 3, 4, 5]);
assert_eq!(&*boxed_slice, &[0, 1, 2, 3, 4, 5][..]);
let boxed_slice: Box<ThinData<(), u32>> = boxed_slice.into();

所有的薄集合类型都是使用一个 "头" 和一个 "尾" 构造的。头是您想与切片关联的任何 Sized 类型。尾是您想存储的数据的所有权切片。

这创建了一个 ThinData 集合,它像 { head, tail },并处理了自定义切片 DST 和薄 DST 指针所需的 unsafe。最直观的使用方法是使用透明的新类型封装 thin-dst 的使用

#[repr(transparent)]
struct NodeData(ThinData<NodeHead, Node>);
struct Node(ThinArc<NodeHead, Node>);

然后根据需要通过转换和/或 ref-cast 使用 NodeData

许可证

根据您的选择,许可如下

如果您是任何一家将利润置于人之上的高薪工人,您仍然可以使用这个crate。我只是希望您会加入工会,反对您所在工作场所普遍存在的对增长、控制和权力的狂热。请站出来反对他们对那些薪酬较低的同事施加的恶劣工作条件,以及他们对其声称为之奋斗的非常人权的不尊重。

贡献

除非您明确表示不适用,否则您根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,应按上述方式双重授权,不得附加任何额外条款或条件。

无运行时依赖