pub trait MaybeArray {
    type Element<'c>;

    // Required methods
    fn try_array(&self) -> Result<(), TypeMismatch>;
    fn array_len(&self) -> Result<usize, MachineError>;
    fn array_get(
        &self,
        index: usize
    ) -> Result<Self::Element<'static>, MachineError>;
    fn array_set<'c>(
        &self,
        index: usize,
        element: Self::Element<'c>
    ) -> Result<(), MachineError>;
    fn array_push<'c>(
        &self,
        element: Self::Element<'c>
    ) -> Result<(), MachineError>;
    fn array_truncate(&self, len: usize) -> Result<(), MachineError>;

    // Provided methods
    fn array_to_iter<'b>(&'b self) -> Result<ArrayIter<'b, Self>, MachineError> { ... }
    fn array_to_vec(
        &self,
        maxlen: usize
    ) -> Result<Vec<Self::Element<'static>>, MachineError> { ... }
}
Expand description

Types that can be an array

Required Associated Types§

source

type Element<'c>

Type of elements

Required Methods§

source

fn try_array(&self) -> Result<(), TypeMismatch>

Return error unless datum is an array-like type

source

fn array_len(&self) -> Result<usize, MachineError>

Array length

source

fn array_get( &self, index: usize ) -> Result<Self::Element<'static>, MachineError>

Retrieve element at index

NOTE: If index is out of bounds, may either return error or null

source

fn array_set<'c>( &self, index: usize, element: Self::Element<'c> ) -> Result<(), MachineError>

Set element at index

NOTE: If index is out of bounds, may either grow array or return error

source

fn array_push<'c>(&self, element: Self::Element<'c>) -> Result<(), MachineError>

Push element to array

source

fn array_truncate(&self, len: usize) -> Result<(), MachineError>

Truncate array

Provided Methods§

source

fn array_to_iter<'b>(&'b self) -> Result<ArrayIter<'b, Self>, MachineError>

Create Iterator over entries of array-like datum

source

fn array_to_vec( &self, maxlen: usize ) -> Result<Vec<Self::Element<'static>>, MachineError>

Create Vec from array-like datum

Implementors§