1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15


pub trait Deque<T> {
    fn push_front(&mut self, T);
    fn push_back(&mut self, T);

    fn pop_front(&mut self) -> Option<T>;
    fn pop_back(&mut self) -> Option<T>;

    fn front(&self) -> Option<&T>;
    fn back(&self) -> Option<&T>;

    fn front_mut(&mut self) -> Option<&mut T>;
    fn back_mut(&mut self) -> Option<&mut T>;
}