pub trait Get {
type Output;
// Required methods
fn get_move(&self, index: usize) -> Option<Self::Output>;
fn len(&self) -> usize;
// Provided methods
fn is_empty(&self) -> bool { ... }
fn index_move(&self, index: usize) -> Self::Output { ... }
fn iter<'a>(&'a self) -> Iter<'a, Self> ⓘ
where Self: Sized { ... }
fn chain<B>(self, other: B) -> Chain<Self, B>
where Self: Sized,
B: Get<Output = Self::Output> { ... }
}