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

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]);

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]

Implementors