[−][src]Trait drop_take::DropTake
Take ownership of members of a type during Drop::drop instead of only having a &mut to them.
This trait can be derived, but doing so does not implement the trait; rather,
it implements Drop and compels you to implement DropTake.
Your DropTake implementation receives a tuple of all values marked #[drop_take],
with their value extracted from the container by Take.
If you need access to other non-#[drop_take] values, either also #[drop_take] them,
or use Take::take (or the functions it is a wrapper for) directly in Drop::drop.
Example
use std::mem::ManuallyDrop; use drop_take::DropTake; struct Peach; struct Banana; struct Melon; #[derive(DropTake)] struct FruitBox { #[drop_take] peach: ManuallyDrop<Peach>, melon: Melon, #[drop_take] banana: ManuallyDrop<Banana>, } impl DropTake for FruitBox { type Values = (Peach, Banana); fn drop_take((peach, banana): Self::Values) { // use `peach` and `banana` by value // they're dropped at the end of scope } }