1 个不稳定版本
0.1.0 | 2019 年 10 月 13 日 |
---|
#2240 在 Rust 模式
11KB
226 行代码(不包括注释)
Transfer 将移动操作作为 clone 的复制操作
注意:此包以及 stackpin
都还在开发中,发布希望对进一步的工作有所帮助。
Transfer
特质执行用户代码,从不可移动的结构体实例中取出一个值并将其移动到另一个实例。
这种方式与允许执行用户代码来复制不可复制的值的 Clone
特质相似。
Transfer
特质也与 C++ 中的移动构造函数类似。
等等,什么是不可移动的结构体?
Rust 并未原生支持“不可移动类型”的概念。但是,借助 Pin
和 unsafe
,可以在类型系统中表达这一概念。《Transfer》利用同一作者开发的 stackpin
包构建对不可移动类型的类型安全抽象。
示例
Transfer
的单元测试演示了一个SecretU64
类型,当它超出作用域时会尝试安全地擦除自己。Transfer
的一个示例是DynRef
,这是一种引用类型,它使用外部Lifetime
结构体来表示DynRef
的生命周期。
依赖
~34KB