1 stable release

1.0.0 Mar 9, 2022

#2358 in Rust patterns

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 downloads per month
Used in 2 crates (via aura-core)

MIT license



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 {

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

No runtime deps