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