Skip to content

Commit b89c6da

Browse files
Dedupe code
1 parent df7ffb0 commit b89c6da

File tree

1 file changed

+18
-29
lines changed

1 file changed

+18
-29
lines changed

libixx/src/index.rs

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -193,43 +193,32 @@ impl IndexBuilder {
193193
}
194194
}
195195

196+
#[must_use]
197+
fn push_segment(&mut self, segment: &[u8], label_idx: u8) -> Label {
198+
if let Some((entry_idx, label_idx)) = self.label_cache.get(segment) {
199+
return Label::Reference(Reference {
200+
entry_idx: *entry_idx as u64,
201+
label_idx: *label_idx,
202+
});
203+
}
204+
205+
self
206+
.label_cache
207+
.insert(segment.to_vec(), (self.index.entries.len(), label_idx));
208+
209+
Label::InPlace(segment.to_vec())
210+
}
211+
196212
pub fn push(&mut self, scope_id: u8, name: &str) {
197213
// optimize, if there is no dot in the name, compression does not make sense
198214
let labels = if name.contains('.') {
199215
name
200216
.split('.')
201217
.enumerate()
202-
.map(|(label_idx, segment)| {
203-
let segment = segment.as_bytes();
204-
205-
if let Some((entry_idx, label_idx)) = self.label_cache.get(segment) {
206-
return Label::Reference(Reference {
207-
entry_idx: *entry_idx as u64,
208-
label_idx: *label_idx,
209-
});
210-
}
211-
212-
self
213-
.label_cache
214-
.insert(segment.to_vec(), (self.index.entries.len(), label_idx as u8));
215-
216-
Label::InPlace(segment.to_vec())
217-
})
218+
.map(|(label_idx, segment)| self.push_segment(segment.as_bytes(), label_idx as u8))
218219
.collect()
219220
} else {
220-
let segment = name.as_bytes();
221-
222-
if let Some((entry_idx, label_idx)) = self.label_cache.get(segment) {
223-
vec![Label::Reference(Reference {
224-
entry_idx: *entry_idx as u64,
225-
label_idx: *label_idx,
226-
})]
227-
} else {
228-
self
229-
.label_cache
230-
.insert(segment.to_vec(), (self.index.entries.len(), 0));
231-
vec![Label::InPlace(name.into())]
232-
}
221+
vec![self.push_segment(name.as_bytes(), 0)]
233222
};
234223

235224
self.index.entries.push(Entry { scope_id, labels });

0 commit comments

Comments
 (0)