[][src]Trait arraylib::Slice

pub trait Slice {
    type Item;
    fn copied<A>(&self) -> Result<A, SizeError>
    where
        A: Array<Item = Self::Item>,
        A::Item: Copy
;
fn cloned<A>(&self) -> Result<A, SizeError>
    where
        A: Array<Item = Self::Item>,
        A::Item: Clone
; }

Extension for slice

Associated Types

type Item

Item of the slice, i.e.

[T]: Slice<Item = T>
Loading content...

Required methods

fn copied<A>(&self) -> Result<A, SizeError> where
    A: Array<Item = Self::Item>,
    A::Item: Copy

Copy self into an owned array. Return Err(SizeError) if len of self is not equal to A::SIZE.

Examples

use arraylib::Slice;

let slice: &[i32] = &[0, 1, 2, 3, 4];
let array: [i32; 5] = slice.copied().unwrap();
assert_eq!(array, [0, 1, 2, 3, 4])
use arraylib::{SizeError, Slice};

let slice: &[i32] = &[0, 1, 2, 3, 4];
let result = slice.copied::<[i32; 2]>();
assert_eq!(result, Err(SizeError::Greater(3, ())))

fn cloned<A>(&self) -> Result<A, SizeError> where
    A: Array<Item = Self::Item>,
    A::Item: Clone

Clone self into an owned array. Return Err(SizeError) if len of self is not equal to A::SIZE.

Examples

use arraylib::Slice;
use core::ops::Range;

// Range is not `Copy`
let slice: &[Range<usize>] = &[0..1, 1..3, 2..10];
let array: [Range<usize>; 3] = slice.cloned().unwrap();
assert_eq!(array, [0..1, 1..3, 2..10])
use arraylib::{SizeError, Slice};
use core::ops::Range;

let slice: &[Range<usize>] = &[0..1, 1..3, 2..10];
let result = slice.cloned::<[Range<usize>; 5]>();
assert_eq!(result, Err(SizeError::Less(2, ())))
Loading content...

Implementors

impl<T> Slice for [T][src]

type Item = T

Loading content...