pub trait Context<'a> {
type Orig: ?Sized;
type Item;
type Iter<'b>: Iterator<Item = (usize, Self::Item)>
where Self: 'b;
// Required methods
fn len(&self) -> usize;
fn offset(&self) -> usize;
fn set_offset(&mut self, offset: usize) -> &mut Self;
fn inc(&mut self, offset: usize) -> &mut Self;
fn dec(&mut self, offset: usize) -> &mut Self;
fn peek_at(&self, offset: usize) -> Result<Self::Iter<'a>, Error>;
fn orig_at(&self, offset: usize) -> Result<&'a Self::Orig, Error>;
fn orig_sub(
&self,
offset: usize,
len: usize
) -> Result<&'a Self::Orig, Error>;
fn clone_with(&self, orig: &'a Self::Orig) -> Self;
// Provided methods
fn is_empty(&self) -> bool { ... }
fn peek(&self) -> Result<Self::Iter<'a>, Error> { ... }
fn orig(&self) -> Result<&'a Self::Orig, Error> { ... }
}