@@ -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
}
@@ -554,12 +558,19 @@ fn noop_visit_ident<T: MutVisitor>(Ident { name: _, span }: &mut Ident, vis: &mu
554
558
vis. visit_span ( span) ;
555
559
}
556
560
561
+ fn noop_flat_map_path_segment < T : MutVisitor > (
562
+ mut segment : PathSegment ,
563
+ vis : & mut T ,
564
+ ) -> SmallVec < [ PathSegment ; 1 ] > {
565
+ let PathSegment { ident, id, args } = & mut segment;
566
+ vis. visit_id ( id) ;
567
+ vis. visit_ident ( ident) ;
568
+ visit_opt ( args, |args| vis. visit_generic_args ( args) ) ;
569
+ smallvec ! [ segment]
570
+ }
571
+
557
572
fn noop_visit_path < T : MutVisitor > ( Path { segments, span, tokens } : & mut Path , vis : & mut T ) {
558
- for PathSegment { ident, id, args } in segments {
559
- vis. visit_id ( id) ;
560
- vis. visit_ident ( ident) ;
561
- visit_opt ( args, |args| vis. visit_generic_args ( args) ) ;
562
- }
573
+ segments. flat_map_in_place ( |segment| vis. flat_map_path_segment ( segment) ) ;
563
574
visit_lazy_tts ( tokens, vis) ;
564
575
vis. visit_span ( span) ;
565
576
}
0 commit comments