@@ -7,25 +7,24 @@ use crate::rmeta::{CrateDep, CrateMetadata, CrateNumMap, CrateRoot, MetadataBlob
77use  rustc_ast:: expand:: allocator:: { alloc_error_handler_name,  global_fn_name,  AllocatorKind } ; 
88use  rustc_ast:: { self  as  ast,  * } ; 
99use  rustc_data_structures:: fx:: FxHashSet ; 
10+ use  rustc_data_structures:: owned_slice:: OwnedSlice ; 
1011use  rustc_data_structures:: svh:: Svh ; 
11- use  rustc_data_structures:: sync:: { FreezeReadGuard ,  FreezeWriteGuard } ; 
12+ use  rustc_data_structures:: sync:: { self ,   FreezeReadGuard ,  FreezeWriteGuard } ; 
1213use  rustc_expand:: base:: SyntaxExtension ; 
1314use  rustc_fs_util:: try_canonicalize; 
1415use  rustc_hir:: def_id:: { CrateNum ,  LocalDefId ,  StableCrateId ,  StableCrateIdMap ,  LOCAL_CRATE } ; 
1516use  rustc_hir:: definitions:: Definitions ; 
1617use  rustc_index:: IndexVec ; 
1718use  rustc_middle:: ty:: TyCtxt ; 
1819use  rustc_session:: config:: { self ,  CrateType ,  ExternLocation } ; 
19- use  rustc_session:: cstore:: { 
20-     CrateDepKind ,  CrateSource ,  ExternCrate ,  ExternCrateSource ,  MetadataLoaderDyn , 
21- } ; 
20+ use  rustc_session:: cstore:: { CrateDepKind ,  CrateSource ,  ExternCrate ,  ExternCrateSource } ; 
2221use  rustc_session:: lint; 
2322use  rustc_session:: output:: validate_crate_name; 
2423use  rustc_session:: search_paths:: PathKind ; 
2524use  rustc_span:: edition:: Edition ; 
2625use  rustc_span:: symbol:: { sym,  Symbol } ; 
2726use  rustc_span:: { Span ,  DUMMY_SP } ; 
28- use  rustc_target:: spec:: { PanicStrategy ,  TargetTriple } ; 
27+ use  rustc_target:: spec:: { PanicStrategy ,  Target ,   TargetTriple } ; 
2928
3029use  proc_macro:: bridge:: client:: ProcMacro ; 
3130use  std:: error:: Error ; 
@@ -34,6 +33,17 @@ use std::path::Path;
3433use  std:: time:: Duration ; 
3534use  std:: { cmp,  iter} ; 
3635
36+ /// The backend's way to give the crate store access to the metadata in a library. 
37+ /// Note that it returns the raw metadata bytes stored in the library file, whether 
38+ /// it is compressed, uncompressed, some weird mix, etc. 
39+ /// rmeta files are backend independent and not handled here. 
40+ pub  trait  MetadataLoader  { 
41+     fn  get_rlib_metadata ( & self ,  target :  & Target ,  filename :  & Path )  -> Result < OwnedSlice ,  String > ; 
42+     fn  get_dylib_metadata ( & self ,  target :  & Target ,  filename :  & Path )  -> Result < OwnedSlice ,  String > ; 
43+ } 
44+ 
45+ pub  type  MetadataLoaderDyn  = dyn  MetadataLoader  + Send  + Sync  + sync:: DynSend  + sync:: DynSync ; 
46+ 
3747pub  struct  CStore  { 
3848    metadata_loader :  Box < MetadataLoaderDyn > , 
3949
0 commit comments