@@ -10,6 +10,7 @@ use crate::ty::query::Providers;
1010use crate :: ty:: { DefIdTree , ImplSubject , TyCtxt } ;
1111use rustc_data_structures:: fingerprint:: Fingerprint ;
1212use rustc_data_structures:: stable_hasher:: { HashStable , StableHasher } ;
13+ use rustc_data_structures:: sync:: { par_for_each_in, Send , Sync } ;
1314use rustc_hir:: def_id:: { DefId , LocalDefId } ;
1415use rustc_hir:: * ;
1516use rustc_query_system:: ich:: StableHashingContext ;
@@ -61,6 +62,22 @@ impl ModuleItems {
6162 pub fn foreign_items ( & self ) -> impl Iterator < Item = ForeignItemId > + ' _ {
6263 self . foreign_items . iter ( ) . copied ( )
6364 }
65+
66+ pub fn par_items ( & self , f : impl Fn ( ItemId ) + Send + Sync ) {
67+ par_for_each_in ( & self . items [ ..] , |& id| f ( id) )
68+ }
69+
70+ pub fn par_trait_items ( & self , f : impl Fn ( TraitItemId ) + Send + Sync ) {
71+ par_for_each_in ( & self . trait_items [ ..] , |& id| f ( id) )
72+ }
73+
74+ pub fn par_impl_items ( & self , f : impl Fn ( ImplItemId ) + Send + Sync ) {
75+ par_for_each_in ( & self . impl_items [ ..] , |& id| f ( id) )
76+ }
77+
78+ pub fn par_foreign_items ( & self , f : impl Fn ( ForeignItemId ) + Send + Sync ) {
79+ par_for_each_in ( & self . foreign_items [ ..] , |& id| f ( id) )
80+ }
6481}
6582
6683impl < ' tcx > TyCtxt < ' tcx > {
0 commit comments