@@ -207,6 +207,10 @@ pub trait MutVisitor: Sized {
207
207
noop_visit_path ( p, self ) ;
208
208
}
209
209
210
+ fn flat_map_path_segment ( & mut self , p : PathSegment ) -> SmallVec < [ PathSegment ; 1 ] > {
211
+ noop_flat_map_path_segment ( p, self )
212
+ }
213
+
210
214
fn visit_qself ( & mut self , qs : & mut Option < P < QSelf > > ) {
211
215
noop_visit_qself ( qs, self ) ;
212
216
}
@@ -565,12 +569,19 @@ fn noop_visit_ident<T: MutVisitor>(Ident { name: _, span }: &mut Ident, vis: &mu
565
569
vis. visit_span ( span) ;
566
570
}
567
571
572
+ fn noop_flat_map_path_segment < T : MutVisitor > (
573
+ mut segment : PathSegment ,
574
+ vis : & mut T ,
575
+ ) -> SmallVec < [ PathSegment ; 1 ] > {
576
+ let PathSegment { ident, id, args } = & mut segment;
577
+ vis. visit_id ( id) ;
578
+ vis. visit_ident ( ident) ;
579
+ visit_opt ( args, |args| vis. visit_generic_args ( args) ) ;
580
+ smallvec ! [ segment]
581
+ }
582
+
568
583
fn noop_visit_path < T : MutVisitor > ( Path { segments, span, tokens } : & mut Path , vis : & mut T ) {
569
- for PathSegment { ident, id, args } in segments {
570
- vis. visit_id ( id) ;
571
- vis. visit_ident ( ident) ;
572
- visit_opt ( args, |args| vis. visit_generic_args ( args) ) ;
573
- }
584
+ segments. flat_map_in_place ( |segment| vis. flat_map_path_segment ( segment) ) ;
574
585
visit_lazy_tts ( tokens, vis) ;
575
586
vis. visit_span ( span) ;
576
587
}
0 commit comments