diff --git a/amadeus-core/src/par_sink.rs b/amadeus-core/src/par_sink.rs index 9be34c70..b9228586 100644 --- a/amadeus-core/src/par_sink.rs +++ b/amadeus-core/src/par_sink.rs @@ -13,9 +13,9 @@ mod histogram; mod max; mod pipe; mod sample; +mod stats; mod sum; mod tuple; -mod stats; use super::par_pipe::*; use crate::{pipe::Sink, pool::ProcessSend}; diff --git a/amadeus-core/src/par_sink/combine.rs b/amadeus-core/src/par_sink/combine.rs index 87ba1554..fa6f2624 100644 --- a/amadeus-core/src/par_sink/combine.rs +++ b/amadeus-core/src/par_sink/combine.rs @@ -35,8 +35,9 @@ where }); } } - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } #[derive(new)] diff --git a/amadeus-core/src/par_sink/combiner.rs b/amadeus-core/src/par_sink/combiner.rs index 06b5640e..f7a93cf7 100644 --- a/amadeus-core/src/par_sink/combiner.rs +++ b/amadeus-core/src/par_sink/combiner.rs @@ -72,6 +72,7 @@ where }); } } - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } diff --git a/amadeus-core/src/par_sink/count.rs b/amadeus-core/src/par_sink/count.rs index 6b770707..8c6da904 100644 --- a/amadeus-core/src/par_sink/count.rs +++ b/amadeus-core/src/par_sink/count.rs @@ -39,6 +39,7 @@ impl FolderSync for CountFolder { *state += 1; } #[inline(always)] - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } diff --git a/amadeus-core/src/par_sink/fold.rs b/amadeus-core/src/par_sink/fold.rs index bcaf6037..fbf96069 100644 --- a/amadeus-core/src/par_sink/fold.rs +++ b/amadeus-core/src/par_sink/fold.rs @@ -59,8 +59,9 @@ where fn push(&mut self, state: &mut Self::State, item: Item) { replace_with_or_abort(state, |state| self.op.call_mut((state, Either::Left(item)))) } - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } impl FolderSync for FoldFolder where @@ -79,6 +80,7 @@ where }) } #[inline(always)] - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } diff --git a/amadeus-core/src/par_sink/folder.rs b/amadeus-core/src/par_sink/folder.rs index 129ff2a5..050695f2 100644 --- a/amadeus-core/src/par_sink/folder.rs +++ b/amadeus-core/src/par_sink/folder.rs @@ -65,8 +65,7 @@ pub trait FolderSync { fn zero(&mut self) -> Self::State; fn push(&mut self, state: &mut Self::State, item: Item); - fn done(&mut self, state: Self::State) -> Self::Done; - + fn done(&mut self, state: Self::State) -> Self::Done; } #[derive(Educe, Serialize, Deserialize, new)] diff --git a/amadeus-core/src/par_sink/histogram.rs b/amadeus-core/src/par_sink/histogram.rs index e93e4c74..ae40d391 100644 --- a/amadeus-core/src/par_sink/histogram.rs +++ b/amadeus-core/src/par_sink/histogram.rs @@ -47,8 +47,9 @@ where fn push(&mut self, state: &mut Self::Done, item: Item) { *state.entry(item).or_insert(0) += 1; } - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } impl FolderSync> for HistogramFolder where @@ -77,8 +78,9 @@ where .collect() }) } - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } impl FolderSync> for HistogramFolder where @@ -106,6 +108,7 @@ where }) } #[inline(always)] - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } diff --git a/amadeus-core/src/par_sink/sample.rs b/amadeus-core/src/par_sink/sample.rs index c3ac861f..abcbd4f3 100644 --- a/amadeus-core/src/par_sink/sample.rs +++ b/amadeus-core/src/par_sink/sample.rs @@ -47,8 +47,9 @@ impl FolderSync for SampleUnstableFolder { fn push(&mut self, state: &mut Self::State, item: Item) { state.push(item, &mut thread_rng()) } - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } #[derive(new)] @@ -95,8 +96,9 @@ where fn push(&mut self, state: &mut Self::State, item: Item) { state.push(item, &1) } - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } #[derive(new)] @@ -152,6 +154,7 @@ where fn push(&mut self, state: &mut Self::State, item: (A, B)) { state.push(item.0, &item.1) } - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } diff --git a/amadeus-core/src/par_sink/stats.rs b/amadeus-core/src/par_sink/stats.rs index a04e7666..7bca46e3 100644 --- a/amadeus-core/src/par_sink/stats.rs +++ b/amadeus-core/src/par_sink/stats.rs @@ -2,26 +2,24 @@ extern crate num; use derive_new::new; use educe::Educe; +use num::ToPrimitive; use serde::{Deserialize, Serialize}; use std::{iter, marker::PhantomData, mem}; -use num::ToPrimitive; -use super::{ - folder_par_sink, FolderSync, FolderSyncReducer, ParallelPipe, ParallelSink -}; +use super::{folder_par_sink, FolderSync, FolderSyncReducer, ParallelPipe, ParallelSink}; #[derive(new)] #[must_use] pub struct Mean { - pipe: P, - marker: PhantomData B>, + pipe: P, + marker: PhantomData B>, } impl_par_dist! { - impl, Item, B> ParallelSink for Mean - where - B: iter::Sum + iter::Sum + Send + 'static, - { + impl, Item, B> ParallelSink for Mean + where + B: iter::Sum + iter::Sum + Send + 'static, + { folder_par_sink!( MeanFolder, MeanFolder, @@ -37,7 +35,7 @@ impl_par_dist! { #[serde(bound = "")] pub struct MeanFolder { - marker: PhantomData (B, Step)>, + marker: PhantomData (B, Step)>, } pub struct StepA; @@ -45,64 +43,60 @@ pub struct StepB; impl FolderSync for MeanFolder where - B: iter::Sum + iter::Sum + ToPrimitive, + B: iter::Sum + iter::Sum + ToPrimitive, { - type State = (B, usize); - type Done = f64; + type State = (B, usize); + type Done = f64; - #[inline(always)] - fn zero(&mut self) -> Self::State { - (iter::empty::().sum(),0) - } + #[inline(always)] + fn zero(&mut self) -> Self::State { + (iter::empty::().sum(), 0) + } - #[inline(always)] + #[inline(always)] fn push(&mut self, state: &mut Self::State, item: Item) { - let zero = iter::empty::().sum(); - let left = mem::replace(&mut state.0, zero); - let right = iter::once(item).sum::(); - - state.0 = B::sum(iter::once(left).chain(iter::once(right))); - state.1 += 1; - } - - #[inline(always)] - fn done(&mut self, state: Self::State) -> Self::Done { - let sum = state.0; - let count = state.1 as f64; - B::to_f64(&sum).map(|sum| sum / count).unwrap() - } -} + let zero = iter::empty::().sum(); + let left = mem::replace(&mut state.0, zero); + let right = iter::once(item).sum::(); + state.0 = B::sum(iter::once(left).chain(iter::once(right))); + state.1 += 1; + } + #[inline(always)] + fn done(&mut self, state: Self::State) -> Self::Done { + let sum = state.0; + let count = state.1 as f64; + B::to_f64(&sum).map(|sum| sum / count).unwrap() + } +} impl FolderSync<(B, usize)> for MeanFolder where - B: iter::Sum + ToPrimitive, + B: iter::Sum + ToPrimitive, { - type State = (B, usize); - type Done = f64; + type State = (B, usize); + type Done = f64; - #[inline(always)] - fn zero(&mut self) -> Self::State { - (iter::empty().sum(),0) - } + #[inline(always)] + fn zero(&mut self) -> Self::State { + (iter::empty().sum(), 0) + } - #[inline(always)] + #[inline(always)] fn push(&mut self, state: &mut Self::State, item: (B, usize)) { - let zero = iter::empty().sum(); - let left = mem::replace(&mut state.0, zero); - let right = iter::once(item.0).sum(); - - state.0 = B::sum(iter::once(left).chain(iter::once(right))); - state.1 += 1; - } - - #[inline(always)] - fn done(&mut self, state: Self::State) -> Self::Done { - let sum = state.0; - let count = state.1 as f64; - B::to_f64(&sum).map(|sum| sum / count).unwrap() - - } + let zero = iter::empty().sum(); + let left = mem::replace(&mut state.0, zero); + let right = iter::once(item.0).sum(); + state.0 = B::sum(iter::once(left).chain(iter::once(right))); + state.1 += 1; + } + + #[inline(always)] + fn done(&mut self, state: Self::State) -> Self::Done { + let sum = state.0; + let count = state.1 as f64; + B::to_f64(&sum).map(|sum| sum / count).unwrap() + } } diff --git a/amadeus-core/src/par_sink/sum.rs b/amadeus-core/src/par_sink/sum.rs index b4014bc9..65d952c4 100644 --- a/amadeus-core/src/par_sink/sum.rs +++ b/amadeus-core/src/par_sink/sum.rs @@ -55,8 +55,9 @@ where } #[inline(always)] - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } } #[derive(Clone, Serialize, Deserialize)] @@ -91,6 +92,7 @@ where } #[inline(always)] - fn done(&mut self, state: Self::State) -> Self::Done { state } - + fn done(&mut self, state: Self::State) -> Self::Done { + state + } }