Skip to content

Commit 1f51561

Browse files
committed
trace: remove redundant bounds implied by the trait definition
Many methods in DD are requiring the BatchReader and Cursor bounds on the Batch and Cursor associated types of a TraceReader respectively. However these bounds are already implied by the trait definition and can be omitted, resulting in simpler signatures. Signed-off-by: Petros Angelatos <[email protected]>
1 parent 27492f2 commit 1f51561

File tree

15 files changed

+6
-72
lines changed

15 files changed

+6
-72
lines changed

dogsdogsdogs/src/operators/count.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use differential_dataflow::{ExchangeData, Collection, Hashable};
44
use differential_dataflow::difference::{Monoid, Multiply};
55
use differential_dataflow::lattice::Lattice;
66
use differential_dataflow::operators::arrange::Arranged;
7-
use differential_dataflow::trace::{Cursor, TraceReader, BatchReader};
7+
use differential_dataflow::trace::TraceReader;
88

99
/// Reports a number of extensions to a stream of prefixes.
1010
///
@@ -23,8 +23,6 @@ where
2323
G::Timestamp: Lattice,
2424
Tr: TraceReader<Val=(), Time=G::Timestamp, R=isize>+Clone+'static,
2525
Tr::Key: Ord+Hashable+Default,
26-
Tr::Batch: BatchReader<Tr::Key, (), Tr::Time, Tr::R>,
27-
Tr::Cursor: Cursor<Tr::Key, (), Tr::Time, Tr::R>,
2826
R: Monoid+Multiply<Output = R>+ExchangeData,
2927
F: Fn(&P)->Tr::Key+Clone+'static,
3028
P: ExchangeData,

dogsdogsdogs/src/operators/half_join.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ use differential_dataflow::{ExchangeData, Collection, AsCollection, Hashable};
4242
use differential_dataflow::difference::{Monoid, Semigroup};
4343
use differential_dataflow::lattice::Lattice;
4444
use differential_dataflow::operators::arrange::Arranged;
45-
use differential_dataflow::trace::{Cursor, TraceReader, BatchReader};
45+
use differential_dataflow::trace::{Cursor, TraceReader};
4646
use differential_dataflow::consolidation::{consolidate, consolidate_updates};
4747

4848
/// A binary equijoin that responds to updates on only its first input.
@@ -81,8 +81,6 @@ where
8181
Tr: TraceReader<Time=G::Timestamp>+Clone+'static,
8282
Tr::Key: Ord+Hashable+ExchangeData,
8383
Tr::Val: Clone,
84-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
85-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
8684
Tr::R: Monoid+ExchangeData,
8785
FF: Fn(&G::Timestamp) -> G::Timestamp + 'static,
8886
CF: Fn(&G::Timestamp, &G::Timestamp) -> bool + 'static,
@@ -137,8 +135,6 @@ where
137135
Tr: TraceReader<Time=G::Timestamp>+Clone+'static,
138136
Tr::Key: Ord+Hashable+ExchangeData,
139137
Tr::Val: Clone,
140-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
141-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
142138
Tr::R: Monoid+ExchangeData,
143139
FF: Fn(&G::Timestamp) -> G::Timestamp + 'static,
144140
CF: Fn(&G::Timestamp, &G::Timestamp) -> bool + 'static,

dogsdogsdogs/src/operators/lookup_map.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use differential_dataflow::{ExchangeData, Collection, AsCollection, Hashable};
1010
use differential_dataflow::difference::{Semigroup, Monoid};
1111
use differential_dataflow::lattice::Lattice;
1212
use differential_dataflow::operators::arrange::Arranged;
13-
use differential_dataflow::trace::{Cursor, TraceReader, BatchReader};
13+
use differential_dataflow::trace::{Cursor, TraceReader};
1414

1515
/// Proposes extensions to a stream of prefixes.
1616
///
@@ -32,8 +32,6 @@ where
3232
Tr: TraceReader<Time=G::Timestamp>+Clone+'static,
3333
Tr::Key: Ord+Hashable,
3434
Tr::Val: Clone,
35-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
36-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
3735
Tr::R: Monoid+ExchangeData,
3836
F: FnMut(&D, &mut Tr::Key)+Clone+'static,
3937
D: ExchangeData,

dogsdogsdogs/src/operators/propose.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use differential_dataflow::{ExchangeData, Collection, Hashable};
44
use differential_dataflow::difference::{Monoid, Multiply};
55
use differential_dataflow::lattice::Lattice;
66
use differential_dataflow::operators::arrange::Arranged;
7-
use differential_dataflow::trace::{Cursor, TraceReader, BatchReader};
7+
use differential_dataflow::trace::TraceReader;
88

99
/// Proposes extensions to a prefix stream.
1010
///
@@ -25,8 +25,6 @@ where
2525
Tr: TraceReader<Time=G::Timestamp>+Clone+'static,
2626
Tr::Key: Ord+Hashable+Default,
2727
Tr::Val: Clone,
28-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
29-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
3028
Tr::R: Monoid+Multiply<Output = Tr::R>+ExchangeData,
3129
F: Fn(&P)->Tr::Key+Clone+'static,
3230
P: ExchangeData,
@@ -58,8 +56,6 @@ where
5856
Tr: TraceReader<Time=G::Timestamp>+Clone+'static,
5957
Tr::Key: Ord+Hashable+Default,
6058
Tr::Val: Clone,
61-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
62-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
6359
Tr::R: Monoid+Multiply<Output = Tr::R>+ExchangeData,
6460
F: Fn(&P)->Tr::Key+Clone+'static,
6561
P: ExchangeData,

dogsdogsdogs/src/operators/validate.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use differential_dataflow::{ExchangeData, Collection};
66
use differential_dataflow::difference::{Monoid, Multiply};
77
use differential_dataflow::lattice::Lattice;
88
use differential_dataflow::operators::arrange::Arranged;
9-
use differential_dataflow::trace::{Cursor, TraceReader, BatchReader};
9+
use differential_dataflow::trace::TraceReader;
1010

1111
/// Proposes extensions to a stream of prefixes.
1212
///
@@ -24,8 +24,6 @@ where
2424
Tr: TraceReader<Key=(K,V), Val=(), Time=G::Timestamp>+Clone+'static,
2525
K: Ord+Hash+Clone+Default,
2626
V: ExchangeData+Hash+Default,
27-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
28-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, Tr::Time, Tr::R>,
2927
Tr::R: Monoid+Multiply<Output = Tr::R>+ExchangeData,
3028
F: Fn(&P)->K+Clone+'static,
3129
P: ExchangeData,

src/algorithms/graphs/bfs.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ where
3030
G::Timestamp: Lattice+Ord,
3131
N: ExchangeData+Hash,
3232
Tr: TraceReader<Key=N, Val=N, Time=G::Timestamp, R=isize>+Clone+'static,
33-
Tr::Batch: crate::trace::BatchReader<N, N, G::Timestamp, Tr::R>+'static,
34-
Tr::Cursor: crate::trace::Cursor<N, N, G::Timestamp, Tr::R>+'static,
3533
{
3634
// initialize roots as reaching themselves at distance 0
3735
let nodes = roots.map(|x| (x, 0));
@@ -46,4 +44,4 @@ where
4644
.concat(&nodes)
4745
.reduce(|_, s, t| t.push((s[0].0.clone(), 1)))
4846
})
49-
}
47+
}

src/algorithms/graphs/bijkstra.rs

-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ where
4646
G::Timestamp: Lattice+Ord,
4747
N: ExchangeData+Hash,
4848
Tr: TraceReader<Key=N, Val=N, Time=G::Timestamp, R=isize>+Clone+'static,
49-
Tr::Batch: crate::trace::BatchReader<N, N, G::Timestamp, Tr::R>+'static,
50-
Tr::Cursor: crate::trace::Cursor<N, N, G::Timestamp, Tr::R>+'static,
5149
{
5250
forward
5351
.stream

src/algorithms/graphs/propagate.rs

-2
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ where
6565
R: From<i8>,
6666
L: ExchangeData,
6767
Tr: TraceReader<Key=N, Val=N, Time=G::Timestamp, R=R>+Clone+'static,
68-
Tr::Batch: crate::trace::BatchReader<N, N, G::Timestamp, Tr::R>+'static,
69-
Tr::Cursor: crate::trace::Cursor<N, N, G::Timestamp, Tr::R>+'static,
7068
F: Fn(&L)->u64+Clone+'static,
7169
{
7270
// Morally the code performs the following iterative computation. However, in the interest of a simplified

src/operators/arrange/arrangement.rs

-11
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,6 @@ impl<G: Scope, Tr> Clone for Arranged<G, Tr>
6565
where
6666
G::Timestamp: Lattice+Ord,
6767
Tr: TraceReader<Time=G::Timestamp> + Clone,
68-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, G::Timestamp, Tr::R>,
69-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, G::Timestamp, Tr::R>,
7068
{
7169
fn clone(&self) -> Self {
7270
Arranged {
@@ -83,8 +81,6 @@ impl<G: Scope, Tr> Arranged<G, Tr>
8381
where
8482
G::Timestamp: Lattice+Ord,
8583
Tr: TraceReader<Time=G::Timestamp> + Clone,
86-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, G::Timestamp, Tr::R>,
87-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, G::Timestamp, Tr::R>,
8884
{
8985
/// Brings an arranged collection into a nested scope.
9086
///
@@ -425,8 +421,6 @@ impl<'a, G: Scope, Tr> Arranged<Child<'a, G, G::Timestamp>, Tr>
425421
where
426422
G::Timestamp: Lattice+Ord,
427423
Tr: TraceReader<Time=G::Timestamp> + Clone,
428-
Tr::Batch: BatchReader<Tr::Key, Tr::Val, G::Timestamp, Tr::R>,
429-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, G::Timestamp, Tr::R>,
430424
{
431425
/// Brings an arranged collection out of a nested region.
432426
///
@@ -463,7 +457,6 @@ where
463457
R: ExchangeData,
464458
Tr: Trace+TraceReader<Key=K,Val=V,Time=G::Timestamp,R=R>+'static,
465459
Tr::Batch: Batch<K, V, G::Timestamp, R>,
466-
Tr::Cursor: Cursor<K, V, G::Timestamp, R>,
467460
{
468461
self.arrange_named("Arrange")
469462
}
@@ -480,7 +473,6 @@ where
480473
R: ExchangeData,
481474
Tr: Trace+TraceReader<Key=K,Val=V,Time=G::Timestamp,R=R>+'static,
482475
Tr::Batch: Batch<K, V, G::Timestamp, R>,
483-
Tr::Cursor: Cursor<K, V, G::Timestamp, R>,
484476
{
485477
let exchange = Exchange::new(move |update: &((K,V),G::Timestamp,R)| (update.0).0.hashed().into());
486478
self.arrange_core(exchange, name)
@@ -496,7 +488,6 @@ where
496488
P: ParallelizationContract<G::Timestamp, ((K,V),G::Timestamp,R)>,
497489
Tr: Trace+TraceReader<Key=K,Val=V,Time=G::Timestamp,R=R>+'static,
498490
Tr::Batch: Batch<K, V, G::Timestamp, R>,
499-
Tr::Cursor: Cursor<K, V, G::Timestamp, R>,
500491
;
501492
}
502493

@@ -513,7 +504,6 @@ where
513504
P: ParallelizationContract<G::Timestamp, ((K,V),G::Timestamp,R)>,
514505
Tr: Trace+TraceReader<Key=K,Val=V,Time=G::Timestamp,R=R>+'static,
515506
Tr::Batch: Batch<K, V, G::Timestamp, R>,
516-
Tr::Cursor: Cursor<K, V, G::Timestamp, R>,
517507
{
518508
// The `Arrange` operator is tasked with reacting to an advancing input
519509
// frontier by producing the sequence of batches whose lower and upper
@@ -685,7 +675,6 @@ where
685675
P: ParallelizationContract<G::Timestamp, ((K,()),G::Timestamp,R)>,
686676
Tr: Trace+TraceReader<Key=K, Val=(), Time=G::Timestamp, R=R>+'static,
687677
Tr::Batch: Batch<K, (), G::Timestamp, R>,
688-
Tr::Cursor: Cursor<K, (), G::Timestamp, R>,
689678
{
690679
self.map(|k| (k, ()))
691680
.arrange_core(pact, name)

src/operators/arrange/upsert.rs

-1
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ where
146146
Tr::Val: ExchangeData,
147147
Tr: Trace+TraceReader<Time=G::Timestamp,R=isize>+'static,
148148
Tr::Batch: Batch<Tr::Key, Tr::Val, G::Timestamp, isize>,
149-
Tr::Cursor: Cursor<Tr::Key, Tr::Val, G::Timestamp, isize>,
150149
{
151150
let mut reader: Option<TraceAgent<Tr>> = None;
152151

src/operators/count.rs

-2
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ where
7474
T1: TraceReader<Val=(), Time=G::Timestamp>+Clone+'static,
7575
T1::Key: ExchangeData,
7676
T1::R: ExchangeData+Semigroup,
77-
T1::Batch: BatchReader<T1::Key, (), G::Timestamp, T1::R>,
78-
T1::Cursor: Cursor<T1::Key, (), G::Timestamp, T1::R>,
7977
{
8078
fn count_total_core<R2: Semigroup + From<i8>>(&self) -> Collection<G, (T1::Key, T1::R), R2> {
8179

src/operators/join.rs

-16
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,6 @@ where
190190
Tr::Key: Data+Hashable,
191191
Tr::Val: Data,
192192
Tr::R: Semigroup,
193-
Tr::Batch: BatchReader<Tr::Key,Tr::Val,G::Timestamp,Tr::R>+'static,
194-
Tr::Cursor: Cursor<Tr::Key,Tr::Val,G::Timestamp,Tr::R>+'static,
195193
{
196194
fn join_map<V2: ExchangeData, R2: ExchangeData+Semigroup, D: Data, L>(&self, other: &Collection<G, (Tr::Key, V2), R2>, mut logic: L) -> Collection<G, D, <Tr::R as Multiply<R2>>::Output>
197195
where Tr::Key: ExchangeData, Tr::R: Multiply<R2>, <Tr::R as Multiply<R2>>::Output: Semigroup, L: FnMut(&Tr::Key, &Tr::Val, &V2)->D+'static {
@@ -258,8 +256,6 @@ pub trait JoinCore<G: Scope, K: 'static, V: 'static, R: Semigroup> where G::Time
258256
fn join_core<Tr2,I,L> (&self, stream2: &Arranged<G,Tr2>, result: L) -> Collection<G,I::Item,<R as Multiply<Tr2::R>>::Output>
259257
where
260258
Tr2: TraceReader<Key=K, Time=G::Timestamp>+Clone+'static,
261-
Tr2::Batch: BatchReader<K, Tr2::Val, G::Timestamp, Tr2::R>+'static,
262-
Tr2::Cursor: Cursor<K, Tr2::Val, G::Timestamp, Tr2::R>+'static,
263259
Tr2::Val: Ord+Clone+Debug+'static,
264260
Tr2::R: Semigroup,
265261
R: Multiply<Tr2::R>,
@@ -311,8 +307,6 @@ pub trait JoinCore<G: Scope, K: 'static, V: 'static, R: Semigroup> where G::Time
311307
fn join_core_internal_unsafe<Tr2,I,L,D,ROut> (&self, stream2: &Arranged<G,Tr2>, result: L) -> Collection<G,D,ROut>
312308
where
313309
Tr2: TraceReader<Key=K, Time=G::Timestamp>+Clone+'static,
314-
Tr2::Batch: BatchReader<K, Tr2::Val, G::Timestamp, Tr2::R>+'static,
315-
Tr2::Cursor: Cursor<K, Tr2::Val, G::Timestamp, Tr2::R>+'static,
316310
Tr2::Val: Ord+Clone+Debug+'static,
317311
Tr2::R: Semigroup,
318312
D: Data,
@@ -334,8 +328,6 @@ where
334328
fn join_core<Tr2,I,L> (&self, stream2: &Arranged<G,Tr2>, result: L) -> Collection<G,I::Item,<R as Multiply<Tr2::R>>::Output>
335329
where
336330
Tr2: TraceReader<Key=K, Time=G::Timestamp>+Clone+'static,
337-
Tr2::Batch: BatchReader<K, Tr2::Val, G::Timestamp, Tr2::R>+'static,
338-
Tr2::Cursor: Cursor<K, Tr2::Val, G::Timestamp, Tr2::R>+'static,
339331
Tr2::Val: Ord+Clone+Debug+'static,
340332
Tr2::R: Semigroup,
341333
R: Multiply<Tr2::R>,
@@ -351,8 +343,6 @@ where
351343
fn join_core_internal_unsafe<Tr2,I,L,D,ROut> (&self, stream2: &Arranged<G,Tr2>, result: L) -> Collection<G,D,ROut>
352344
where
353345
Tr2: TraceReader<Key=K, Time=G::Timestamp>+Clone+'static,
354-
Tr2::Batch: BatchReader<K, Tr2::Val, G::Timestamp, Tr2::R>+'static,
355-
Tr2::Cursor: Cursor<K, Tr2::Val, G::Timestamp, Tr2::R>+'static,
356346
Tr2::Val: Ord+Clone+Debug+'static,
357347
Tr2::R: Semigroup,
358348
R: Semigroup,
@@ -374,15 +364,11 @@ impl<G, T1> JoinCore<G, T1::Key, T1::Val, T1::R> for Arranged<G,T1>
374364
T1::Key: Ord+Debug+'static,
375365
T1::Val: Ord+Clone+Debug+'static,
376366
T1::R: Semigroup,
377-
T1::Batch: BatchReader<T1::Key,T1::Val,G::Timestamp,T1::R>+'static,
378-
T1::Cursor: Cursor<T1::Key,T1::Val,G::Timestamp,T1::R>+'static,
379367
{
380368
fn join_core<Tr2,I,L>(&self, other: &Arranged<G,Tr2>, mut result: L) -> Collection<G,I::Item,<T1::R as Multiply<Tr2::R>>::Output>
381369
where
382370
Tr2::Val: Ord+Clone+Debug+'static,
383371
Tr2: TraceReader<Key=T1::Key,Time=G::Timestamp>+Clone+'static,
384-
Tr2::Batch: BatchReader<T1::Key, Tr2::Val, G::Timestamp, Tr2::R>+'static,
385-
Tr2::Cursor: Cursor<T1::Key, Tr2::Val, G::Timestamp, Tr2::R>+'static,
386372
Tr2::R: Semigroup,
387373
T1::R: Multiply<Tr2::R>,
388374
<T1::R as Multiply<Tr2::R>>::Output: Semigroup,
@@ -401,8 +387,6 @@ impl<G, T1> JoinCore<G, T1::Key, T1::Val, T1::R> for Arranged<G,T1>
401387
fn join_core_internal_unsafe<Tr2,I,L,D,ROut> (&self, other: &Arranged<G,Tr2>, mut result: L) -> Collection<G,D,ROut>
402388
where
403389
Tr2: TraceReader<Key=T1::Key, Time=G::Timestamp>+Clone+'static,
404-
Tr2::Batch: BatchReader<T1::Key, Tr2::Val, G::Timestamp, Tr2::R>+'static,
405-
Tr2::Cursor: Cursor<T1::Key, Tr2::Val, G::Timestamp, Tr2::R>+'static,
406390
Tr2::Val: Ord+Clone+Debug+'static,
407391
Tr2::R: Semigroup,
408392
D: Data,

src/operators/reduce.rs

-12
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,6 @@ impl<G: Scope, K: Data, V: Data, T1, R: Semigroup> Reduce<G, K, V, R> for Arrang
9090
where
9191
G::Timestamp: Lattice+Ord,
9292
T1: TraceReader<Key=K, Val=V, Time=G::Timestamp, R=R>+Clone+'static,
93-
T1::Batch: BatchReader<K, V, G::Timestamp, R>,
94-
T1::Cursor: Cursor<K, V, G::Timestamp, R>,
9593
{
9694
fn reduce_named<L, V2: Data, R2: Abelian>(&self, name: &str, logic: L) -> Collection<G, (K, V2), R2>
9795
where L: FnMut(&K, &[(&V, R)], &mut Vec<(V2, R2)>)+'static {
@@ -179,8 +177,6 @@ impl<G: Scope, K: Data, T1, R1: Semigroup> Threshold<G, K, R1> for Arranged<G, T
179177
where
180178
G::Timestamp: Lattice+Ord,
181179
T1: TraceReader<Key=K, Val=(), Time=G::Timestamp, R=R1>+Clone+'static,
182-
T1::Batch: BatchReader<K, (), G::Timestamp, R1>,
183-
T1::Cursor: Cursor<K, (), G::Timestamp, R1>,
184180
{
185181
fn threshold_named<R2: Abelian, F: FnMut(&K,&R1)->R2+'static>(&self, name: &str, mut thresh: F) -> Collection<G, K, R2> {
186182
self.reduce_abelian::<_,DefaultKeyTrace<_,_,_>>(name, move |k,s,t| t.push(((), thresh(k, &s[0].1))))
@@ -236,8 +232,6 @@ impl<G: Scope, K: Data, T1, R: Semigroup> Count<G, K, R> for Arranged<G, T1>
236232
where
237233
G::Timestamp: Lattice+Ord,
238234
T1: TraceReader<Key=K, Val=(), Time=G::Timestamp, R=R>+Clone+'static,
239-
T1::Batch: BatchReader<K, (), G::Timestamp, R>,
240-
T1::Cursor: Cursor<K, (), G::Timestamp, R>,
241235
{
242236
fn count_core<R2: Abelian + From<i8>>(&self) -> Collection<G, (K, R), R2> {
243237
self.reduce_abelian::<_,DefaultValTrace<_,_,_,_>>("Count", |_k,s,t| t.push((s[0].1.clone(), R2::from(1i8))))
@@ -283,7 +277,6 @@ pub trait ReduceCore<G: Scope, K: Data, V: Data, R: Semigroup> where G::Timestam
283277
T2::Val: Data,
284278
T2::R: Abelian,
285279
T2::Batch: Batch<K, T2::Val, G::Timestamp, T2::R>,
286-
T2::Cursor: Cursor<K, T2::Val, G::Timestamp, T2::R>,
287280
L: FnMut(&K, &[(&V, R)], &mut Vec<(T2::Val, T2::R)>)+'static,
288281
{
289282
self.reduce_core::<_,T2>(name, move |key, input, output, change| {
@@ -306,7 +299,6 @@ pub trait ReduceCore<G: Scope, K: Data, V: Data, R: Semigroup> where G::Timestam
306299
T2::Val: Data,
307300
T2::R: Semigroup,
308301
T2::Batch: Batch<K, T2::Val, G::Timestamp, T2::R>,
309-
T2::Cursor: Cursor<K, T2::Val, G::Timestamp, T2::R>,
310302
L: FnMut(&K, &[(&V, R)], &mut Vec<(T2::Val,T2::R)>, &mut Vec<(T2::Val,T2::R)>)+'static
311303
;
312304
}
@@ -325,7 +317,6 @@ where
325317
T2::R: Semigroup,
326318
T2: Trace+TraceReader<Key=K, Time=G::Timestamp>+'static,
327319
T2::Batch: Batch<K, T2::Val, G::Timestamp, T2::R>,
328-
T2::Cursor: Cursor<K, T2::Val, G::Timestamp, T2::R>,
329320
L: FnMut(&K, &[(&V, R)], &mut Vec<(T2::Val,T2::R)>, &mut Vec<(T2::Val, T2::R)>)+'static
330321
{
331322
self.arrange_by_key_named(&format!("Arrange: {}", name))
@@ -337,16 +328,13 @@ impl<G: Scope, K: Data, V: Data, T1, R: Semigroup> ReduceCore<G, K, V, R> for Ar
337328
where
338329
G::Timestamp: Lattice+Ord,
339330
T1: TraceReader<Key=K, Val=V, Time=G::Timestamp, R=R>+Clone+'static,
340-
T1::Batch: BatchReader<K, V, G::Timestamp, R>,
341-
T1::Cursor: Cursor<K, V, G::Timestamp, R>,
342331
{
343332
fn reduce_core<L, T2>(&self, name: &str, mut logic: L) -> Arranged<G, TraceAgent<T2>>
344333
where
345334
T2: Trace+TraceReader<Key=K, Time=G::Timestamp>+'static,
346335
T2::Val: Data,
347336
T2::R: Semigroup,
348337
T2::Batch: Batch<K, T2::Val, G::Timestamp, T2::R>,
349-
T2::Cursor: Cursor<K, T2::Val, G::Timestamp, T2::R>,
350338
L: FnMut(&K, &[(&V, R)], &mut Vec<(T2::Val,T2::R)>, &mut Vec<(T2::Val, T2::R)>)+'static {
351339

352340
let mut result_trace = None;

src/operators/threshold.rs

-2
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,6 @@ where
108108
T1: TraceReader<Val=(), Time=G::Timestamp>+Clone+'static,
109109
T1::Key: ExchangeData,
110110
T1::R: ExchangeData+Semigroup,
111-
T1::Batch: BatchReader<T1::Key, (), G::Timestamp, T1::R>,
112-
T1::Cursor: Cursor<T1::Key, (), G::Timestamp, T1::R>,
113111
{
114112
fn threshold_semigroup<R2, F>(&self, mut thresh: F) -> Collection<G, T1::Key, R2>
115113
where

src/trace/wrappers/freeze.rs

-2
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,6 @@ where
4141
T::Key: 'static,
4242
T::Val: 'static,
4343
T::R: 'static,
44-
T::Batch: BatchReader<T::Key, T::Val, G::Timestamp, T::R>,
45-
T::Cursor: Cursor<T::Key, T::Val, G::Timestamp, T::R>,
4644
F: Fn(&G::Timestamp)->Option<G::Timestamp>+'static,
4745
{
4846
let func1 = Rc::new(func);

0 commit comments

Comments
 (0)