1 个稳定版本
| 1.0.0 | 2022 年 3 月 9 日 |
|---|
2358 在 Rust 模式 中排名
69 每月下载量
在 2 个crate中使用 (通过 aura-core)
4KB
disown
从 "方法位置" 放弃所有权。
动机
通常,无所有权的资源会在其所在作用域结束时自动释放。我们也可以通过 ; 忽略无用的返回值,这本质上是一种 T -> () 的转换。然而,有些情况下我们希望释放所有权并以 () 的形式干净地返回,但不希望使用 ;(例如在闭包或简单的 match 支持中)。我们可以使用 std::mem::drop 来实现这一点,但 drop 是一个函数,不是一个方法,这会破坏一个美好的方法调用链。
因此,引入了 Disown 特性和它的方法 disown。它就是 drop,但处于 "方法位置"。
use disown::Disown;
use std::collections::HashSet;
enum Person {
Bob,
Sam,
}
let mut set = HashSet::new();
let person = Person::Bob;
match person {
Person::Bob => set.insert(0).disown(),
Person::Sam => set.insert(1).disown(),
}
HashSet::insert 返回一个 bool,而不是 (),上面的代码如果不打开一对花括号并使用 ; 就无法编译,这看起来并不美观。
许可证:MIT