[−][src]Struct csvsc::Group
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 is group globally from the stream so if the stream is huge you'll have all the rows in memory at the same time.
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> Group<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<Group<I, F>, GroupBuildError> where
H: FnMut(Headers) -> Headers,
[src]
iter: I,
header_map: H,
f: F,
grouping: &[&str]
) -> Result<Group<I, F>, GroupBuildError> where
H: FnMut(Headers) -> Headers,
Trait Implementations
impl<I, F, R> IntoIterator for Group<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<F, R>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Self::IntoIter
[src]
impl<I, F, R> RowStream for Group<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 Group<I, F> where
F: RefUnwindSafe,
I: RefUnwindSafe,
F: RefUnwindSafe,
I: RefUnwindSafe,
impl<I, F> Send for Group<I, F> where
F: Send,
I: Send,
F: Send,
I: Send,
impl<I, F> Sync for Group<I, F> where
F: Sync,
I: Sync,
F: Sync,
I: Sync,
impl<I, F> Unpin for Group<I, F> where
F: Unpin,
I: Unpin,
F: Unpin,
I: Unpin,
impl<I, F> UnwindSafe for Group<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>,