[][src]Struct csvsc::AdjacentGroup

pub struct AdjacentGroup<I, F> { /* fields omitted */ }

Groups data by a set of columns.

The groups are passed to you as a RowStream object that you can use to manipulate them. Data grouped is such that the specified columns have exactly the same values. Once the value changes in the stream a new group is created. It is called adjacent because it does not group globally, i.e. multiple groups with the same grouping keys can be found if they are not adjacent.

If you add or delete headers you're responsible for modifying the headers also, which will be given to you as a parameter of the first closure.

Implementations

impl<I, F, R> AdjacentGroup<I, F> where
    I: RowStream,
    F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
    R: RowStream
[src]

pub fn new<H>(
    iter: I,
    header_map: H,
    f: F,
    grouping: &[&str]
) -> Result<AdjacentGroup<I, F>, GroupBuildError> where
    H: FnMut(Headers) -> Headers
[src]

Trait Implementations

impl<I, F, R> IntoIterator for AdjacentGroup<I, F> where
    I: RowStream,
    F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
    R: RowStream
[src]

type Item = RowResult

The type of the elements being iterated over.

type IntoIter = IntoIter<I::IntoIter, F, R>

Which kind of iterator are we turning this into?

impl<I, F, R> RowStream for AdjacentGroup<I, F> where
    I: RowStream,
    F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
    R: RowStream
[src]

Auto Trait Implementations

impl<I, F> RefUnwindSafe for AdjacentGroup<I, F> where
    F: RefUnwindSafe,
    I: RefUnwindSafe

impl<I, F> Send for AdjacentGroup<I, F> where
    F: Send,
    I: Send

impl<I, F> Sync for AdjacentGroup<I, F> where
    F: Sync,
    I: Sync

impl<I, F> Unpin for AdjacentGroup<I, F> where
    F: Unpin,
    I: Unpin

impl<I, F> UnwindSafe for AdjacentGroup<I, F> where
    F: UnwindSafe,
    I: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

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

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.