Trait rustc_session::cstore::CrateStore
source · pub trait CrateStore: Debug {
fn as_any(&self) -> &dyn Any;
fn def_key(&self, def: DefId) -> DefKey;
fn def_path(&self, def: DefId) -> DefPath;
fn def_path_hash(&self, def: DefId) -> DefPathHash;
fn crate_name(&self, cnum: CrateNum) -> Symbol;
fn stable_crate_id(&self, cnum: CrateNum) -> StableCrateId;
fn stable_crate_id_to_crate_num(
&self,
stable_crate_id: StableCrateId
) -> CrateNum;
fn def_path_hash_to_def_id(&self, cnum: CrateNum, hash: DefPathHash) -> DefId;
fn expn_hash_to_expn_id(
&self,
sess: &Session,
cnum: CrateNum,
index_guess: u32,
hash: ExpnHash
) -> ExpnId;
fn import_source_files(&self, sess: &Session, cnum: CrateNum);
}
Expand description
A store of Rust crates, through which their metadata can be accessed.
Note that this trait should probably not be expanding today. All new functionality should be driven through queries instead!
If you find a method on this trait named {name}_untracked
it signifies
that it’s not tracked for dependency information throughout compilation
(it’d break incremental compilation) and should only be called pre-HIR (e.g.
during resolve)
Required Methods
source
fn def_path_hash(&self, def: DefId) -> DefPathHash
source
fn crate_name(&self, cnum: CrateNum) -> Symbol
source
fn stable_crate_id(&self, cnum: CrateNum) -> StableCrateId
sourcefn stable_crate_id_to_crate_num(
fn stable_crate_id_to_crate_num(
&self,
stable_crate_id: StableCrateId
) -> CrateNum
sourcefn def_path_hash_to_def_id(&self, cnum: CrateNum, hash: DefPathHash) -> DefId
fn def_path_hash_to_def_id(&self, cnum: CrateNum, hash: DefPathHash) -> DefId
Fetch a DefId from a DefPathHash for a foreign crate.
sourcefn expn_hash_to_expn_id(
fn expn_hash_to_expn_id(
&self,
sess: &Session,
cnum: CrateNum,
index_guess: u32,
hash: ExpnHash
) -> ExpnId
sourcefn import_source_files(&self, sess: &Session, cnum: CrateNum)
fn import_source_files(&self, sess: &Session, cnum: CrateNum)
Imports all SourceFile
s from the given crate into the current session.
This normally happens automatically when we decode a Span
from
that crate’s metadata - however, the incr comp cache needs
to trigger this manually when decoding a foreign Span