[−][src]Struct csvsc::AdjacentGroup
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]
I: RowStream,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
pub fn new<H>(
iter: I,
header_map: H,
f: F,
grouping: &[&str]
) -> Result<AdjacentGroup<I, F>, GroupBuildError> where
H: FnMut(Headers) -> Headers,
[src]
iter: I,
header_map: H,
f: F,
grouping: &[&str]
) -> Result<AdjacentGroup<I, F>, GroupBuildError> where
H: FnMut(Headers) -> Headers,
Trait Implementations
impl<I, F, R> IntoIterator for AdjacentGroup<I, F> where
I: RowStream,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
[src]
I: RowStream,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
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?
fn into_iter(self) -> Self::IntoIter
[src]
impl<I, F, R> RowStream for AdjacentGroup<I, F> where
I: RowStream,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
[src]
I: RowStream,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
fn headers(&self) -> &Headers
[src]
fn add(self, column: ColSpec) -> Result<Add<Self>, BuildError> where
Self: Sized,
[src]
Self: Sized,
fn del(self, columns: Vec<&str>) -> Del<Self> where
Self: Sized,
[src]
Self: Sized,
fn add_with<F>(
self,
colname: &str,
f: F
) -> Result<AddWith<Self, F>, BuildError> where
Self: Sized,
F: FnMut(&Headers, &Row) -> Result<String, BuildError>,
[src]
self,
colname: &str,
f: F
) -> Result<AddWith<Self, F>, BuildError> where
Self: Sized,
F: FnMut(&Headers, &Row) -> Result<String, BuildError>,
fn reduce(
self,
columns: Vec<Box<dyn Aggregate>>
) -> Result<Reduce<Self>, BuildError> where
Self: Sized,
[src]
self,
columns: Vec<Box<dyn Aggregate>>
) -> Result<Reduce<Self>, BuildError> where
Self: Sized,
fn adjacent_group<H, F, R>(
self,
header_map: H,
f: F,
grouping: &[&str]
) -> Result<AdjacentGroup<Self, F>, GroupBuildError> where
H: FnMut(Headers) -> Headers,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
Self: Sized,
[src]
self,
header_map: H,
f: F,
grouping: &[&str]
) -> Result<AdjacentGroup<Self, F>, GroupBuildError> where
H: FnMut(Headers) -> Headers,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
Self: Sized,
fn group<H, F, R>(
self,
header_map: H,
f: F,
grouping: &[&str]
) -> Result<Group<Self, F>, GroupBuildError> where
H: FnMut(Headers) -> Headers,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
Self: Sized,
[src]
self,
header_map: H,
f: F,
grouping: &[&str]
) -> Result<Group<Self, F>, GroupBuildError> where
H: FnMut(Headers) -> Headers,
F: FnMut(MockStream<IntoIter<RowResult>>) -> R,
R: RowStream,
Self: Sized,
fn flush(self, target: FlushTarget) -> Result<Flush<Self>, Error> where
Self: Sized,
[src]
Self: Sized,
fn inspect<F>(self, f: F) -> Inspect<Self, F> where
Self: Sized,
F: FnMut(&Headers, &RowResult),
[src]
Self: Sized,
F: FnMut(&Headers, &RowResult),
fn rename(self, name_map: &HashMap<&str, &str>) -> Rename<Self> where
Self: Sized,
[src]
Self: Sized,
fn map_row<F>(self, f: F) -> MapRow<Self, F> where
Self: Sized,
F: Fn(&Headers, &Row) -> RowResult,
[src]
Self: Sized,
F: Fn(&Headers, &Row) -> RowResult,
fn map_col<F>(self, col: String, f: F) -> MapCol<Self, F> where
Self: Sized,
F: Fn(&str) -> Result<String, BuildError>,
[src]
Self: Sized,
F: Fn(&str) -> Result<String, BuildError>,
Auto Trait Implementations
impl<I, F> RefUnwindSafe for AdjacentGroup<I, F> where
F: RefUnwindSafe,
I: RefUnwindSafe,
F: RefUnwindSafe,
I: RefUnwindSafe,
impl<I, F> Send for AdjacentGroup<I, F> where
F: Send,
I: Send,
F: Send,
I: Send,
impl<I, F> Sync for AdjacentGroup<I, F> where
F: Sync,
I: Sync,
F: Sync,
I: Sync,
impl<I, F> Unpin for AdjacentGroup<I, F> where
F: Unpin,
I: Unpin,
F: Unpin,
I: Unpin,
impl<I, F> UnwindSafe for AdjacentGroup<I, F> where
F: UnwindSafe,
I: UnwindSafe,
F: UnwindSafe,
I: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<I> IntoIterator for I where
I: Iterator,
[src]
I: Iterator,
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?
fn into_iter(self) -> I
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,