Skip to content

Commit 25bc4a1

Browse files
committed
Remove default Cursor::get_foo implementations
1 parent 5c020b8 commit 25bc4a1

File tree

11 files changed

+62
-9
lines changed

11 files changed

+62
-9
lines changed

differential-dataflow/src/trace/cursor/cursor_list.rs

+9
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,15 @@ impl<C: Cursor> Cursor for CursorList<C> {
114114
debug_assert!(self.cursors[self.min_val[0]].val_valid(&storage[self.min_val[0]]));
115115
self.cursors[self.min_val[0]].val(&storage[self.min_val[0]])
116116
}
117+
#[inline]
118+
fn get_key<'a>(&self, storage: &'a Vec<C::Storage>) -> Option<Self::Key<'a>> {
119+
self.min_key.get(0).map(|idx| self.cursors[*idx].key(&storage[*idx]))
120+
}
121+
#[inline]
122+
fn get_val<'a>(&self, storage: &'a Vec<C::Storage>) -> Option<Self::Val<'a>> {
123+
self.min_val.get(0).map(|idx| self.cursors[*idx].val(&storage[*idx]))
124+
}
125+
117126
#[inline]
118127
fn map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Vec<C::Storage>, mut logic: L) {
119128
for &index in self.min_val.iter() {

differential-dataflow/src/trace/cursor/mod.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,9 @@ pub trait Cursor {
5050
fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a>;
5151

5252
/// Returns a reference to the current key, if valid.
53-
fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> {
54-
if self.key_valid(storage) { Some(self.key(storage)) } else { None }
55-
}
53+
fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>>;
5654
/// Returns a reference to the current value, if valid.
57-
fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> {
58-
if self.val_valid(storage) { Some(self.val(storage)) } else { None }
59-
}
55+
fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>>;
6056

6157
/// Applies `logic` to each pair of time and difference. Intended for mutation of the
6258
/// closure's scope.

differential-dataflow/src/trace/implementations/mod.rs

+9
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,15 @@ pub mod containers {
483483

484484
/// Reference to the element at this position.
485485
fn index(&self, index: usize) -> Self::ReadItem<'_>;
486+
487+
/// Reference to the element at this position, if it exists.
488+
fn get(&self, index: usize) -> Option<Self::ReadItem<'_>> {
489+
if index < self.len() {
490+
Some(self.index(index))
491+
}
492+
else { None }
493+
}
494+
486495
/// Number of contained elements
487496
fn len(&self) -> usize;
488497
/// Returns the last item if the container is non-empty.

differential-dataflow/src/trace/implementations/ord_neu.rs

+6
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,9 @@ mod val_batch {
493493

494494
type Storage = OrdValBatch<L>;
495495

496+
fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { storage.storage.keys.get(self.key_cursor) }
497+
fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { if self.val_valid(storage) { Some(self.val(storage)) } else { None } }
498+
496499
fn key<'a>(&self, storage: &'a OrdValBatch<L>) -> Self::Key<'a> { storage.storage.keys.index(self.key_cursor) }
497500
fn val<'a>(&self, storage: &'a OrdValBatch<L>) -> Self::Val<'a> { storage.storage.vals.index(self.val_cursor) }
498501
fn map_times<L2: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &OrdValBatch<L>, mut logic: L2) {
@@ -997,6 +1000,9 @@ mod key_batch {
9971000

9981001
type Storage = OrdKeyBatch<L>;
9991002

1003+
fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { storage.storage.keys.get(self.key_cursor) }
1004+
fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<&'a ()> { if self.val_valid(storage) { Some(&()) } else { None } }
1005+
10001006
fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { storage.storage.keys.index(self.key_cursor) }
10011007
fn val<'a>(&self, _storage: &'a Self::Storage) -> &'a () { &() }
10021008
fn map_times<L2: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L2) {

differential-dataflow/src/trace/implementations/rhh.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -666,9 +666,9 @@ mod val_batch {
666666

667667
type Storage = RhhValBatch<L>;
668668

669-
fn key<'a>(&self, storage: &'a RhhValBatch<L>) -> Self::Key<'a> {
670-
storage.storage.keys.index(self.key_cursor)
671-
}
669+
fn get_key<'a>(&self, storage: &'a RhhValBatch<L>) -> Option<Self::Key<'a>> { storage.storage.keys.get(self.key_cursor) }
670+
fn get_val<'a>(&self, storage: &'a RhhValBatch<L>) -> Option<Self::Val<'a>> { if self.val_valid(storage) { storage.storage.vals.get(self.val_cursor) } else { None } }
671+
fn key<'a>(&self, storage: &'a RhhValBatch<L>) -> Self::Key<'a> { storage.storage.keys.index(self.key_cursor) }
672672
fn val<'a>(&self, storage: &'a RhhValBatch<L>) -> Self::Val<'a> { storage.storage.vals.index(self.val_cursor) }
673673
fn map_times<L2: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &RhhValBatch<L>, mut logic: L2) {
674674
let (lower, upper) = storage.storage.updates_for_value(self.val_cursor);

differential-dataflow/src/trace/mod.rs

+3
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,9 @@ pub mod rc_blanket_impls {
403403
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(storage) }
404404
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(storage) }
405405

406+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(storage) }
407+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(storage) }
408+
406409
#[inline]
407410
fn map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, logic: L) {
408411
self.cursor.map_times(storage, logic)

differential-dataflow/src/trace/wrappers/enter.rs

+6
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,9 @@ where
184184
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(storage) }
185185
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(storage) }
186186

187+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(storage) }
188+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(storage) }
189+
187190
#[inline]
188191
fn map_times<L: FnMut(&TInner, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L) {
189192
use crate::IntoOwned;
@@ -238,6 +241,9 @@ where
238241
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(&storage.batch) }
239242
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(&storage.batch) }
240243

244+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(&storage.batch) }
245+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(&storage.batch) }
246+
241247
#[inline]
242248
fn map_times<L: FnMut(&TInner, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L) {
243249
use crate::IntoOwned;

differential-dataflow/src/trace/wrappers/enter_at.rs

+6
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,9 @@ where
211211
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(storage) }
212212
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(storage) }
213213

214+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(storage) }
215+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(storage) }
216+
214217
#[inline]
215218
fn map_times<L: FnMut(&TInner, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L) {
216219
let key = self.key(storage);
@@ -270,6 +273,9 @@ where
270273
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(&storage.batch) }
271274
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(&storage.batch) }
272275

276+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(&storage.batch) }
277+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(&storage.batch) }
278+
273279
#[inline]
274280
fn map_times<L: FnMut(&TInner, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L) {
275281
let key = self.key(storage);

differential-dataflow/src/trace/wrappers/filter.rs

+6
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,9 @@ where
148148
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(storage) }
149149
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(storage) }
150150

151+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(storage) }
152+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(storage) }
153+
151154
#[inline]
152155
fn map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, logic: L) {
153156
let key = self.key(storage);
@@ -203,6 +206,9 @@ where
203206
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(&storage.batch) }
204207
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(&storage.batch) }
205208

209+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(&storage.batch) }
210+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(&storage.batch) }
211+
206212
#[inline]
207213
fn map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, logic: L) {
208214
let key = self.key(storage);

differential-dataflow/src/trace/wrappers/freeze.rs

+6
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,9 @@ where
199199
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(storage) }
200200
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(storage) }
201201

202+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(storage) }
203+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(storage) }
204+
202205
#[inline] fn map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L) {
203206
let func = &self.func;
204207
self.cursor.map_times(storage, |time, diff| {
@@ -251,6 +254,9 @@ where
251254
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(&storage.batch) }
252255
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(&storage.batch) }
253256

257+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(&storage.batch) }
258+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(&storage.batch) }
259+
254260
#[inline] fn map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L) {
255261
let func = &self.func;
256262
self.cursor.map_times(&storage.batch, |time, diff| {

differential-dataflow/src/trace/wrappers/frontier.rs

+6
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,9 @@ impl<C: Cursor> Cursor for CursorFrontier<C, C::Time> {
143143
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(storage) }
144144
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(storage) }
145145

146+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(storage) }
147+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(storage) }
148+
146149
#[inline]
147150
fn map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L) {
148151
let since = self.since.borrow();
@@ -206,6 +209,9 @@ where
206209
#[inline] fn key<'a>(&self, storage: &'a Self::Storage) -> Self::Key<'a> { self.cursor.key(&storage.batch) }
207210
#[inline] fn val<'a>(&self, storage: &'a Self::Storage) -> Self::Val<'a> { self.cursor.val(&storage.batch) }
208211

212+
#[inline] fn get_key<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Key<'a>> { self.cursor.get_key(&storage.batch) }
213+
#[inline] fn get_val<'a>(&self, storage: &'a Self::Storage) -> Option<Self::Val<'a>> { self.cursor.get_val(&storage.batch) }
214+
209215
#[inline]
210216
fn map_times<L: FnMut(Self::TimeGat<'_>, Self::DiffGat<'_>)>(&mut self, storage: &Self::Storage, mut logic: L) {
211217
let since = self.since.borrow();

0 commit comments

Comments
 (0)