1 个稳定版本

1.0.0 2022 年 3 月 9 日

2358Rust 模式 中排名

Download history 10/week @ 2024-03-12 10/week @ 2024-03-19 17/week @ 2024-03-26 40/week @ 2024-04-02 1/week @ 2024-04-23 3/week @ 2024-05-28 21/week @ 2024-06-04 22/week @ 2024-06-11 12/week @ 2024-06-18 11/week @ 2024-06-25

69 每月下载量
2 个crate中使用 (通过 aura-core)

MIT 许可证

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

无运行时依赖