Trait SliceableSequenceOp

Source
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> { ... }
}

Required Associated Types§

Required Methods§

Source

fn do_get(&self, index: usize) -> Self::Item

Source

fn do_slice(&self, range: Range<usize>) -> Self::Sliced

Source

fn do_slice_reverse(&self, range: Range<usize>) -> Self::Sliced

Source

fn do_stepped_slice(&self, range: Range<usize>, step: usize) -> Self::Sliced

Source

fn do_stepped_slice_reverse( &self, range: Range<usize>, step: usize, ) -> Self::Sliced

Source

fn empty() -> Self::Sliced

Source

fn len(&self) -> usize

Provided Methods§

Source

fn wrap_index(&self, p: isize) -> Option<usize>

Source

fn saturate_index(&self, p: isize) -> usize

Source

fn getitem_by_slice( &self, _vm: &VirtualMachine, slice: SaturatedSlice, ) -> PyResult<Self::Sliced>

Source

fn getitem_by_index( &self, vm: &VirtualMachine, index: isize, ) -> PyResult<Self::Item>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T: Clone> SliceableSequenceOp for [T]

Source§

type Item = T

Source§

type Sliced = Vec<T>

Source§

fn do_get(&self, index: usize) -> Self::Item

Source§

fn do_slice(&self, range: Range<usize>) -> Self::Sliced

Source§

fn do_slice_reverse(&self, range: Range<usize>) -> Self::Sliced

Source§

fn do_stepped_slice(&self, range: Range<usize>, step: usize) -> Self::Sliced

Source§

fn do_stepped_slice_reverse( &self, range: Range<usize>, step: usize, ) -> Self::Sliced

Source§

fn empty() -> Self::Sliced

Source§

fn len(&self) -> usize

Implementors§