pub trait SliceableSequenceOp {
type Item;
type Sliced;
// Required methods
fn do_get(&self, index: usize) -> Self::Item;
fn do_slice(&self, range: Range<usize>) -> Self::Sliced;
fn do_slice_reverse(&self, range: Range<usize>) -> Self::Sliced;
fn do_stepped_slice(&self, range: Range<usize>, step: usize) -> Self::Sliced;
fn do_stepped_slice_reverse(
&self,
range: Range<usize>,
step: usize
) -> Self::Sliced;
fn empty() -> Self::Sliced;
fn len(&self) -> usize;
// Provided methods
fn wrap_index(&self, p: isize) -> Option<usize> { ... }
fn saturate_index(&self, p: isize) -> usize { ... }
fn getitem_by_slice(
&self,
_vm: &VirtualMachine,
slice: SaturatedSlice
) -> PyResult<Self::Sliced> { ... }
fn getitem_by_index(
&self,
vm: &VirtualMachine,
index: isize
) -> PyResult<Self::Item> { ... }
}