pub fn pop_front(&mut self) -> Option<T> {
        if self.is_empty() {
            None
        } else {
            let tail = self.tail;
            self.tail = self.wrap_add(self.tail, 1);
            unsafe { Some(self.buffer_read(tail)) }
        }
    }
Removes an element from anywhere in the `VecDeque` and returns it,
replacing it with the first element.

This does not preserve ordering, but is *O*(1).

Returns `None` if `index` is out of bounds.

Element at index 0 is the front of the queue.

# Examples

```
use std::collections::VecDeque;

let mut buf = VecDeque::new();
assert_eq!(buf.swap_remove
benchmarks/haystacks/code/rust-library.rs