pub fn pop_front(&mut self) -> Option<A::Item> {
        if self.is_empty() {
            return None;
        }
        unsafe {
            let tail = self.tail();
            self.set_tail_forward();
            Some(self.buffer_read(tail))
        }
    }
/// Removes the first element and returns it, or `None` if the sequence is
/// empty.
///
/// # Examples
///
/// ```
/// use arraydeque::ArrayDeque;
///
/// let mut buf: ArrayDeque<[_; 2]> = ArrayDeque::new();
///
/// buf.push_back(1);
/// buf.push_back(2);
///
/// assert_eq!(buf.pop_front(), Some(1));
/// assert_eq!(buf.pop_front(), Some(2));
/// assert_eq!(buf.pop_front(), None);
/// ```
Removes the first element and returns it, or `None` if the sequence is
empty.
Removes the first element and returns it or ` None ` if the sequence is empty .
pub fn pop_front(&mut self) -> Option<A::Item> {
        if self.is_empty() {
            return None;
        }
        unsafe {
            let tail = self.tail();
            self.set_tail_forward();
            Some(self.buffer_read(tail))
        }
    }
pub fn pop_front ( & mut self ) -> Option < A :: Item > { if self . is_empty ( ) { return None ; } unsafe { let tail = self . tail ( ) ; self . set_tail_forward ( ) ; Some ( self . buffer_read ( tail ) ) } }
Removes the first element and returns it, or `None` if the sequence is
empty.
Removes the first element and returns it or ` None ` if the sequence is empty .
&mut self
examples
```
use arraydeque::ArrayDeque.

let mut buf: ArrayDeque<[_; 2]> = ArrayDeque::new().




` ` ` use arraydeque :: ArrayDeque . let mut buf : ArrayDeque< [ _ ; 2 ] > = ArrayDeque :: new () .