| Crates.io | disown |
| lib.rs | disown |
| version | 1.0.0 |
| created_at | 2022-03-09 02:57:14.482621+00 |
| updated_at | 2022-03-09 02:57:14.482621+00 |
| description | Drop ownership via a method. |
| homepage | https://github.com/fosskers/disown |
| repository | https://github.com/fosskers/disown |
| max_upload_size | |
| id | 546699 |
| size | 3,718 |
Drop ownership from "method position".
Normally, unowned data is automatically dropped at the end of its residing
block. We can also ignore unuseful return values with ;, which is
essentially a T -> () transformation. However, there are cases where we
wish to drop ownership and return cleanly with a (), but don't want to
involve ; (such as in closures or simple match arms). We could use
[std::mem::drop] for this, but drop is a function, not a method, and
would visually mar a nice chain of method calls.
Hence the [Disown] trait and its method disown. It is drop, but in
"method position".
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 returns a bool, not (), and the above code would not
compile without opening a pair of {} and using a ;, which doesn't look
as nice.
License: MIT