Skip to content

Commit 9c9d4ae

Browse files
codex suggestions
1 parent ba3d886 commit 9c9d4ae

3 files changed

Lines changed: 16 additions & 16 deletions

File tree

storage/src/index/ordered.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
77
use crate::{
88
index::{
9-
storage::{Cursor as CursorImpl, ImmutableCursor, IndexEntry, Record},
9+
storage::{insert_front, Cursor as CursorImpl, ImmutableCursor, IndexEntry, Record},
1010
Cursor as CursorTrait, Ordered, Unordered,
1111
},
1212
translator::Translator,
@@ -245,16 +245,11 @@ impl<T: Translator, V: Eq + Send + Sync> Unordered for Index<T, V> {
245245
}
246246
}
247247

248-
fn insert(&mut self, key: &[u8], mut value: V) {
248+
fn insert(&mut self, key: &[u8], value: V) {
249249
let k = self.translator.transform(key);
250250
match self.map.entry(k) {
251251
BTreeEntry::Occupied(mut entry) => {
252-
let record = entry.get_mut();
253-
std::mem::swap(&mut record.value, &mut value);
254-
record.next = Some(Box::new(Record {
255-
value,
256-
next: record.next.take(),
257-
}));
252+
insert_front(entry.get_mut(), value);
258253
self.items.inc();
259254
}
260255
BTreeEntry::Vacant(entry) => {

storage/src/index/storage.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ pub(super) struct Record<V: Eq + Send + Sync> {
1818
pub(super) next: Option<Box<Self>>,
1919
}
2020

21+
pub(super) fn insert_front<V: Eq + Send + Sync>(record: &mut Record<V>, mut value: V) {
22+
std::mem::swap(&mut record.value, &mut value);
23+
record.next = Some(Box::new(Record {
24+
value,
25+
next: record.next.take(),
26+
}));
27+
}
28+
2129
pub(super) trait IndexEntry<V: Eq + Send + Sync>: Send + Sync {
2230
fn get_mut(&mut self) -> &mut Record<V>;
2331
fn remove(self);
@@ -167,6 +175,7 @@ impl<V: Eq + Send + Sync, E: IndexEntry<V>> CursorTrait for Cursor<'_, V, E> {
167175
let entry_record = self.entry.as_mut().unwrap().get_mut();
168176
entry_record.value = v;
169177
entry_record.next = None;
178+
self.prev = None;
170179
self.current = Some(Self::record_ptr(entry_record));
171180
self.state = State::Done;
172181
}
@@ -182,6 +191,7 @@ impl<V: Eq + Send + Sync, E: IndexEntry<V>> CursorTrait for Cursor<'_, V, E> {
182191
}));
183192
Self::record_ptr(last_record.next.as_deref_mut().unwrap())
184193
};
194+
self.prev = last;
185195
self.current = Some(inserted);
186196
self.state = State::Done;
187197
}

storage/src/index/unordered.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
55
use crate::{
66
index::{
7-
storage::{Cursor as CursorImpl, ImmutableCursor, IndexEntry, Record},
7+
storage::{insert_front, Cursor as CursorImpl, ImmutableCursor, IndexEntry, Record},
88
Cursor as CursorTrait, Unordered,
99
},
1010
translator::Translator,
@@ -165,16 +165,11 @@ impl<T: Translator, V: Eq + Send + Sync> Unordered for Index<T, V> {
165165
}
166166
}
167167

168-
fn insert(&mut self, key: &[u8], mut v: V) {
168+
fn insert(&mut self, key: &[u8], v: V) {
169169
let k = self.translator.transform(key);
170170
match self.map.entry(k) {
171171
Entry::Occupied(mut entry) => {
172-
let record = entry.get_mut();
173-
std::mem::swap(&mut record.value, &mut v);
174-
record.next = Some(Box::new(Record {
175-
value: v,
176-
next: record.next.take(),
177-
}));
172+
insert_front(entry.get_mut(), v);
178173
self.items.inc();
179174
}
180175
Entry::Vacant(entry) => {

0 commit comments

Comments
 (0)