Trait scratchpad::SliceMoveSource[][src]

pub trait SliceMoveSource<T: ?Sized>: SliceSource<T> where
    T: SliceLike
{ fn move_elements<F>(self, f: F)
    where
        Self: Sized,
        F: FnMut(<T as SliceLike>::Element)
; }

Subtrait of SliceSource for taking ownership of the contents of a slice.

Required methods

fn move_elements<F>(self, f: F) where
    Self: Sized,
    F: FnMut(<T as SliceLike>::Element), 
[src]

Calls a closure for each item in this source, consuming the source.

Examples

use scratchpad::SliceMoveSource;

fn move_to_vec<T: SliceMoveSource<[i32]>>(source: T) -> Vec<i32> {
    let mut out = Vec::new();
    source.move_elements(|x| out.push(x));
    out
}

let values = [5, 6, 7, 8];
let out = move_to_vec([5, 6, 7, 8]);
assert_eq!(*out, [5, 6, 7, 8]);
Loading content...

Implementations on Foreign Types

impl<'a, T: ?Sized> SliceMoveSource<T> for &'a T where
    T: SliceLike,
    <T as SliceLike>::Element: Copy
[src]

impl<T: ?Sized> SliceMoveSource<T> for Box<T> where
    T: SliceLike
[src]

impl<T> SliceMoveSource<[T]> for Vec<T>[src]

impl<'a, T: ?Sized> SliceMoveSource<T> for &'a Box<T> where
    T: SliceLike,
    <T as SliceLike>::Element: Copy
[src]

impl<'a, T> SliceMoveSource<[T]> for &'a Vec<T> where
    T: Copy
[src]

Loading content...

Implementors

impl<T> SliceMoveSource<[<T as Array>::Item]> for T where
    T: Array
[src]

Loading content...