diff --git a/timely/src/dataflow/operators/aggregation/aggregate.rs b/timely/src/dataflow/operators/aggregation/aggregate.rs index 196f1c5d0..d8262010a 100644 --- a/timely/src/dataflow/operators/aggregation/aggregate.rs +++ b/timely/src/dataflow/operators/aggregation/aggregate.rs @@ -67,7 +67,7 @@ pub trait Aggregate { hash: H) -> Stream where S::Timestamp: Eq; } -impl Aggregate for Stream { +impl, K: ExchangeData+Hash+Eq, V: ExchangeData> Aggregate for Stream { fn aggregateR+'static, H: Fn(&K)->u64+'static>( &self, diff --git a/timely/src/dataflow/operators/capability.rs b/timely/src/dataflow/operators/capability.rs index 6235572e6..17cd1f86c 100644 --- a/timely/src/dataflow/operators/capability.rs +++ b/timely/src/dataflow/operators/capability.rs @@ -205,7 +205,7 @@ impl PartialOrder for Capability { } } -impl ::std::hash::Hash for Capability { +impl ::std::hash::Hash for Capability { fn hash(&self, state: &mut H) { self.time.hash(state); } diff --git a/timely/src/dataflow/operators/count.rs b/timely/src/dataflow/operators/count.rs index 89e650b2b..264c72cd6 100644 --- a/timely/src/dataflow/operators/count.rs +++ b/timely/src/dataflow/operators/count.rs @@ -48,7 +48,7 @@ pub trait Accumulate { } } -impl Accumulate for Stream { +impl, D: Data> Accumulate for Stream { fn accumulate(&self, default: A, logic: impl Fn(&mut A, &mut Vec)+'static) -> Stream { let mut accums = HashMap::new(); diff --git a/timely/src/dataflow/operators/delay.rs b/timely/src/dataflow/operators/delay.rs index 8638bfd08..02febfa27 100644 --- a/timely/src/dataflow/operators/delay.rs +++ b/timely/src/dataflow/operators/delay.rs @@ -94,7 +94,7 @@ pub trait Delay { fn delay_batchG::Timestamp+'static>(&self, func: L) -> Self; } -impl Delay for Stream { +impl, D: Data> Delay for Stream { fn delayG::Timestamp+'static>(&self, mut func: L) -> Self { let mut elements = HashMap::new(); self.unary_notify(Pipeline, "Delay", vec![], move |input, output, notificator| { diff --git a/timely/src/progress/timestamp.rs b/timely/src/progress/timestamp.rs index 6dfc8e89a..f3fbf1d40 100644 --- a/timely/src/progress/timestamp.rs +++ b/timely/src/progress/timestamp.rs @@ -3,7 +3,6 @@ use std::fmt::Debug; use std::any::Any; use std::default::Default; -use std::hash::Hash; use crate::ExchangeData; use crate::order::PartialOrder; @@ -12,7 +11,7 @@ use crate::order::PartialOrder; /// /// By implementing this trait, you promise that the type's [PartialOrder] implementation /// is compatible with [Ord], such that if `a.less_equal(b)` then `a <= b`. -pub trait Timestamp: Clone+Eq+PartialOrder+Debug+Send+Any+ExchangeData+Hash+Ord { +pub trait Timestamp: Clone+Eq+PartialOrder+Ord+Debug+Any+ExchangeData { /// A type summarizing action on a timestamp along a dataflow path. type Summary : PathSummary + 'static; /// A unique minimum value in our partial order. @@ -22,7 +21,7 @@ pub trait Timestamp: Clone+Eq+PartialOrder+Debug+Send+Any+ExchangeData+Hash+Ord } /// A summary of how a timestamp advances along a timely dataflow path. -pub trait PathSummary : Clone+'static+Eq+PartialOrder+Debug+Default { +pub trait PathSummary : Clone+Eq+PartialOrder+Debug+Default { /// Advances a timestamp according to the timestamp actions on the path. /// /// The path may advance the timestamp sufficiently that it is no longer valid, for example if