0.2.2 - This version may not be safe as it has not been updated for a long time. Find out if your coding project uses this component and get notified of any reported security vulnerabilities with Meterian-X Open Source Security Platform
Maintain your licence declarations and avoid unwanted licences to protect your IP the way you intended.
MIT - MIT LicenseThis crate provides (at this time) a single function, take().
take() allows for taking T out of a &mut T, doing anything with it including consuming it, and producing another T to put back in the &mut T.
During take(), if a panic occurs, the entire process will be exited, as there's no valid T to put back into the &mut T.
Contrast with std::mem::replace(), which allows for putting a different T into a &mut T, but requiring the new T to be available before being able to consume the old T.
struct Foo;
let mut foo = Foo;
take_mut::take(&mut foo, |foo| {
// Can now consume the Foo, and provide a new value later
drop(foo);
// Do more stuff
Foo // Return new Foo from closure, which goes back into the &mut Foo
});