fn take(mut self) -> (T, Option<Rc<GraphNode<T>>>) {
        // See here: https://phaazon.net/blog/rust-no-drop
        let item = mem::replace(&mut self.item, unsafe { MaybeUninit::zeroed().assume_init() });
        let previous = mem::replace(&mut self.previous, None);

        mem::forget(self);

        (item, previous)
    }
/// Takes the item and previous item out of the node by bypassing
/// the `Drop` implementation since properties cannot be moved out
/// of objects that implement `Drop`.
Takes the item and previous item out of the node by bypassing
the `Drop` implementation since properties cannot be moved out
of objects that implement `Drop`.
Takes the item and previous item out of the node by bypassing the ` Drop ` implementation since properties cannot be moved out of objects that implement ` Drop ` .
fn take(mut self) -> (T, Option<Rc<GraphNode<T>>>) {
        // See here: https://phaazon.net/blog/rust-no-drop
        let item = mem::replace(&mut self.item, unsafe { MaybeUninit::zeroed().assume_init() });
        let previous = mem::replace(&mut self.previous, None);
        mem::forget(self);
        (item, previous)
    }
fn take ( mut self ) -> ( T , Option < Rc < GraphNode < T > > > ) { // See here: https://phaazon.net/blog/rust-no-drop let item = mem :: replace ( & mut self . item , unsafe { MaybeUninit :: zeroed ( ) . assume_init ( ) } ) ; let previous = mem :: replace ( & mut self . previous , None ) ; mem :: forget ( self ) ; ( item , previous ) }
Takes the item and previous item out of the node by bypassing
the `Drop` implementation since properties cannot be moved out
of objects that implement `Drop`.
Takes the item and previous item out of the node by bypassing the ` Drop ` implementation since properties cannot be moved out of objects that implement ` Drop ` .
mut self
mut self