Struct ra_ap_base_db::CrateGraph
source · pub struct CrateGraph { /* private fields */ }Expand description
CrateGraph is a bit of information which turns a set of text files into a
number of Rust crates.
Each crate is defined by the FileId of its root module, the set of enabled
cfg flags and the set of dependencies.
Note that, due to cfg’s, there might be several crates for a single FileId!
For the purposes of analysis, a crate does not have a name. Instead, names are specified on dependency edges. That is, a crate might be known under different names in different dependent crates.
Note that CrateGraph is build-system agnostic: it’s a concept of the Rust
language proper, not a concept of the build system. In practice, we get
CrateGraph by lowering cargo metadata output.
CrateGraph is !Serialize by design, see
https://github.com/rust-lang/rust-analyzer/blob/master/docs/dev/architecture.md#serialization
Implementations
sourceimpl CrateGraph
impl CrateGraph
pub fn add_crate_root(
&mut self,
root_file_id: FileId,
edition: Edition,
display_name: Option<CrateDisplayName>,
version: Option<String>,
cfg_options: CfgOptions,
potential_cfg_options: CfgOptions,
env: Env,
proc_macro: ProcMacroLoadResult,
is_proc_macro: bool,
origin: CrateOrigin
) -> CrateId
pub fn add_dep(
&mut self,
from: CrateId,
dep: Dependency
) -> Result<(), CyclicDependenciesError>
pub fn is_empty(&self) -> bool
pub fn iter(&self) -> impl Iterator<Item = CrateId> + '_
sourcepub fn transitive_deps(&self, of: CrateId) -> impl Iterator<Item = CrateId>
pub fn transitive_deps(&self, of: CrateId) -> impl Iterator<Item = CrateId>
Returns an iterator over all transitive dependencies of the given crate, including the crate itself.
sourcepub fn transitive_rev_deps(&self, of: CrateId) -> impl Iterator<Item = CrateId>
pub fn transitive_rev_deps(&self, of: CrateId) -> impl Iterator<Item = CrateId>
Returns all transitive reverse dependencies of the given crate, including the crate itself.
sourcepub fn crates_in_topological_order(&self) -> Vec<CrateId>
pub fn crates_in_topological_order(&self) -> Vec<CrateId>
Returns all crates in the graph, sorted in topological order (ie. dependencies of a crate come before the crate itself).
pub fn crate_id_for_crate_root(&self, file_id: FileId) -> Option<CrateId>
sourcepub fn extend(&mut self, other: CrateGraph) -> u32
pub fn extend(&mut self, other: CrateGraph) -> u32
Extends this crate graph by adding a complete disjoint second crate graph.
The ids of the crates in the other graph are shifted by the return
amount.
pub fn patch_cfg_if(&mut self) -> bool
Trait Implementations
sourceimpl Clone for CrateGraph
impl Clone for CrateGraph
sourcefn clone(&self) -> CrateGraph
fn clone(&self) -> CrateGraph
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more