#clone #move #copy #traits #expose #instance #value

bin+lib transfer

提供 Transfer 特质的包,该特质实现了将可复制类型移动的能力

1 个不稳定版本

0.1.0 2019 年 10 月 13 日

#2240Rust 模式

MIT/Apache

11KB
226 行代码(不包括注释)

Transfer 将移动操作作为 clone 的复制操作

注意:此包以及 stackpin 都还在开发中,发布希望对进一步的工作有所帮助。

Transfer 特质执行用户代码,从不可移动的结构体实例中取出一个值并将其移动到另一个实例。

这种方式与允许执行用户代码来复制不可复制的值的 Clone 特质相似。

Transfer 特质也与 C++ 中的移动构造函数类似。

等等,什么是不可移动的结构体?

Rust 并未原生支持“不可移动类型”的概念。但是,借助 Pinunsafe,可以在类型系统中表达这一概念。《Transfer》利用同一作者开发的 stackpin 包构建对不可移动类型的类型安全抽象。

示例

  • Transfer 的单元测试演示了一个 SecretU64 类型,当它超出作用域时会尝试安全地擦除自己。
  • Transfer 的一个示例是 DynRef,这是一种引用类型,它使用外部 Lifetime 结构体来表示 DynRef 的生命周期。

依赖

~34KB