Trait scratchpad::SliceSourceCollection [] [src]

pub trait SliceSourceCollection<T: ?Sized> where
    T: SliceLike
{ fn for_each<F>(&self, f: F)
    where
        F: for<'a> FnMut(&'a SliceSource<T>)
; }

Trait for generic access to collections of SliceSource objects.

Collections can be either arrays, tuples, or slices of SliceSource objects. Tuples can contain contain objects of different SliceSource implementation types. If either the std or unstable features are enabled, boxed slice and Vec instances can be used as slice source collections as well.

SliceSourceCollection on its own is only usable for Clone and Copy data sources. For move operations, the SliceMoveSourceCollection subtrait provides additional functionality for moving slices out of supported types.

Required Methods

Calls a closure for each SliceSource in this collection.

Examples

use scratchpad::{SliceLike, SliceSourceCollection};

let collection = ([1, 2, 3], [4], [5, 6]);

let mut out = Vec::new();
collection.for_each(|source| {
    for x in source.as_slice_like().as_element_slice() {
        out.push(*x * 2);
    }
});
assert_eq!(*out, [2, 4, 6, 8, 10, 12]);

Implementations on Foreign Types

impl<'b, T: ?Sized, U> SliceSourceCollection<T> for &'b [U] where
    T: SliceLike,
    U: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, U> SliceSourceCollection<T> for Box<[U]> where
    T: SliceLike,
    U: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, U> SliceSourceCollection<T> for Vec<U> where
    T: SliceLike,
    U: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, U> SliceSourceCollection<T> for &'b Box<[U]> where
    T: SliceLike,
    U: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, U> SliceSourceCollection<T> for &'b Vec<U> where
    T: SliceLike,
    U: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T0: SliceSource<T>,
    T1: SliceSource<T>,
    T2: SliceSource<T>,
    T3: SliceSource<T>,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T0: SliceSource<T>,
    T1: SliceSource<T>,
    T2: SliceSource<T>,
    T3: SliceSource<T>,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T1: SliceSource<T>,
    T2: SliceSource<T>,
    T3: SliceSource<T>,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T1: SliceSource<T>,
    T2: SliceSource<T>,
    T3: SliceSource<T>,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T2: SliceSource<T>,
    T3: SliceSource<T>,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T2: SliceSource<T>,
    T3: SliceSource<T>,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T3, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for (T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T3: SliceSource<T>,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T3, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T3, T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T3: SliceSource<T>,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for (T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T4, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T4, T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T4: SliceSource<T>,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for (T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T5, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T5, T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T5: SliceSource<T>,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for (T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T6, T7, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T6, T7, T8, T9, T10, T11) where
    T: SliceLike,
    T6: SliceSource<T>,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T7, T8, T9, T10, T11> SliceSourceCollection<T> for (T7, T8, T9, T10, T11) where
    T: SliceLike,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T7, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T7, T8, T9, T10, T11) where
    T: SliceLike,
    T7: SliceSource<T>,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T8, T9, T10, T11> SliceSourceCollection<T> for (T8, T9, T10, T11) where
    T: SliceLike,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T8, T9, T10, T11> SliceSourceCollection<T> for &'b (T8, T9, T10, T11) where
    T: SliceLike,
    T8: SliceSource<T>,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T9, T10, T11> SliceSourceCollection<T> for (T9, T10, T11) where
    T: SliceLike,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T9, T10, T11> SliceSourceCollection<T> for &'b (T9, T10, T11) where
    T: SliceLike,
    T9: SliceSource<T>,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T10, T11> SliceSourceCollection<T> for (T10, T11) where
    T: SliceLike,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T10, T11> SliceSourceCollection<T> for &'b (T10, T11) where
    T: SliceLike,
    T10: SliceSource<T>,
    T11: SliceSource<T>, 
[src]

[src]

impl<T: ?Sized, T11> SliceSourceCollection<T> for (T11,) where
    T: SliceLike,
    T11: SliceSource<T>, 
[src]

[src]

impl<'b, T: ?Sized, T11> SliceSourceCollection<T> for &'b (T11,) where
    T: SliceLike,
    T11: SliceSource<T>, 
[src]

[src]

Implementors