@@ -195,33 +195,26 @@ impl IndexBuilder {
195195
196196 pub fn push ( & mut self , scope_id : u8 , name : & str ) {
197197 // optimize, if there is no dot in the name, compression does not make sense
198- let labels = if name. contains ( '.' ) {
199- name
200- . split ( '.' )
201- . 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- }
198+ let labels = name
199+ . split ( '.' )
200+ . enumerate ( )
201+ . map ( |( label_idx, segment) | {
202+ let segment = segment. as_bytes ( ) ;
203+
204+ if let Some ( ( entry_idx, label_idx) ) = self . label_cache . get ( segment) {
205+ return Label :: Reference ( Reference {
206+ entry_idx : * entry_idx as u64 ,
207+ label_idx : * label_idx,
208+ } ) ;
209+ }
211210
212- self
213- . label_cache
214- . insert ( segment. to_vec ( ) , ( self . index . entries . len ( ) , label_idx as u8 ) ) ;
211+ self
212+ . label_cache
213+ . insert ( segment. to_vec ( ) , ( self . index . entries . len ( ) , label_idx as u8 ) ) ;
215214
216- Label :: InPlace ( segment. to_vec ( ) )
217- } )
218- . collect ( )
219- } else {
220- self
221- . label_cache
222- . insert ( name. as_bytes ( ) . to_vec ( ) , ( self . index . entries . len ( ) , 0 ) ) ;
223- vec ! [ Label :: InPlace ( name. into( ) ) ]
224- } ;
215+ Label :: InPlace ( segment. to_vec ( ) )
216+ } )
217+ . collect ( ) ;
225218
226219 self . index . entries . push ( Entry { scope_id, labels } ) ;
227220 }
@@ -498,21 +491,19 @@ mod tests {
498491
499492 assert_eq ! ( index. entries[ 0 ] . labels. len( ) , 2 ) ;
500493 match & index. entries [ 0 ] . labels [ 0 ] {
501- Label :: Reference ( reference) => {
502- assert_eq ! ( reference. entry_idx, 0 ) ;
503- assert_eq ! ( reference. label_idx, 0 ) ;
504- }
505494 Label :: InPlace ( label) => assert_eq ! ( label, b"nixosTests" ) ,
495+ _ => unreachable ! ( "Expected Reference label" ) ,
506496 }
507497 match & index. entries [ 0 ] . labels [ 1 ] {
508498 Label :: InPlace ( label) => assert_eq ! ( label, b"pretalx" ) ,
509- _ => unreachable ! ( "Expected no InPlace label" ) ,
499+ _ => unreachable ! ( "Expected InPlace label" ) ,
510500 }
511501
512502 assert_eq ! ( index. entries[ 1 ] . labels. len( ) , 1 ) ;
513503 match & index. entries [ 1 ] . labels [ 0 ] {
514- Label :: InPlace ( label) => { // TODO!!! this should be a Reference!
515- assert_eq ! ( label, b"pretalx" ) ;
504+ Label :: Reference ( reference) => {
505+ assert_eq ! ( reference. entry_idx, 0 ) ;
506+ assert_eq ! ( reference. label_idx, 1 ) ;
516507 }
517508 _ => unreachable ! ( "Expected no Reference label" ) ,
518509 }
0 commit comments