Skip to content

fosskers/disown

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

disown

Drop ownership from "method position".

Motivation

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

About

Drop ownership via a method.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages