pub fn push_front(&mut self, value: T) {
        if self.is_full() {
            self.grow();
        }

        self.tail = self.wrap_sub(self.tail, 1);
        let tail = self.tail;
        unsafe {
            self.buffer_write(tail, value);
        }
    }
Removes an element from anywhere in the `VecDeque` and returns it, replacing it with the
last 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_back(0), None);
buf.push_back(1);
buf.push_back(2);
buf.push_back(3);
assert_eq!(buf, [1, 2, 3]);

assert_eq!(buf.swap_remove_back(0), Some(1));
assert_eq!(buf, [3, 2]);
benchmarks/haystacks/code/rust-library.rs