pub trait DequeStream<T>: Sized {
// Required methods
fn payload(self) -> VecDeque<T>;
fn ref_payload(&self) -> &VecDeque<T>;
fn ref_mut_payload(&mut self) -> &mut VecDeque<T>;
// Provided methods
fn is_empty(&self) -> bool { ... }
fn push(&mut self, elem: T) { ... }
fn push_front(&mut self, elem: T) { ... }
fn pop_front(&mut self) -> Option<T> { ... }
fn get(&self, idx: usize) -> Option<&T> { ... }
fn first(&self) -> Option<&T> { ... }
fn last(&self) -> Option<&T> { ... }
fn iter(&self) -> Iter<'_, T> { ... }
fn len(&self) -> usize { ... }
}