fn next(&mut self) -> Option<&'a T> {
        if self.len == 0 {
            None
        } else {
            self.head.map(|node| unsafe {
                // Need an unbound lifetime to get 'a
                let node = &*node.as_ptr();
                self.len -= 1;
                self.head = node.next;
                &node.element
            })
        }
    }
A cursor over a `LinkedList`.

A `Cursor` is like an iterator, except that it can freely seek back-and-forth.

Cursors always rest between two
benchmarks/haystacks/code/rust-library.rs