Struct rustc::dep_graph::graph::DepGraph [−][src]
pub struct DepGraph { data: Option<Lrc<DepGraphData>>, fingerprints: Lrc<Lock<IndexVec<DepNodeIndex, Fingerprint>>>, }
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Fields
data: Option<Lrc<DepGraphData>>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fingerprints: Lrc<Lock<IndexVec<DepNodeIndex, Fingerprint>>>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Methods
impl DepGraph
[src]
impl DepGraph
pub fn new(
prev_graph: PreviousDepGraph,
prev_work_products: FxHashMap<WorkProductId, WorkProduct>
) -> DepGraph
[src]
pub fn new(
prev_graph: PreviousDepGraph,
prev_work_products: FxHashMap<WorkProductId, WorkProduct>
) -> DepGraph
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn new_disabled() -> DepGraph
[src]
pub fn new_disabled() -> DepGraph
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn is_fully_enabled(&self) -> bool
[src]
pub fn is_fully_enabled(&self) -> bool
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
True if we are actually building the full dep-graph.
pub fn query(&self) -> DepGraphQuery
[src]
pub fn query(&self) -> DepGraphQuery
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn assert_ignored(&self)
[src]
pub fn assert_ignored(&self)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn with_ignore<OP, R>(&self, op: OP) -> R where
OP: FnOnce() -> R,
[src]
pub fn with_ignore<OP, R>(&self, op: OP) -> R where
OP: FnOnce() -> R,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn with_task<'gcx, C, A, R>(
&self,
key: DepNode,
cx: C,
arg: A,
task: fn(_: C, _: A) -> R
) -> (R, DepNodeIndex) where
C: DepGraphSafe + StableHashingContextProvider<'gcx>,
R: HashStable<StableHashingContext<'gcx>>,
[src]
pub fn with_task<'gcx, C, A, R>(
&self,
key: DepNode,
cx: C,
arg: A,
task: fn(_: C, _: A) -> R
) -> (R, DepNodeIndex) where
C: DepGraphSafe + StableHashingContextProvider<'gcx>,
R: HashStable<StableHashingContext<'gcx>>,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Starts a new dep-graph task. Dep-graph tasks are specified
using a free function (task
) and not a closure -- this
is intentional because we want to exercise tight control over
what state they have access to. In particular, we want to
prevent implicit 'leaks' of tracked state into the task (which
could then be read without generating correct edges in the
dep-graph -- see the rustc guide for more details on
the dep-graph). To this end, the task function gets exactly two
pieces of state: the context cx
and an argument arg
. Both
of these bits of state must be of some type that implements
DepGraphSafe
and hence does not leak.
The choice of two arguments is not fundamental. One argument
would work just as well, since multiple values can be
collected using tuples. However, using two arguments works out
to be quite convenient, since it is common to need a context
(cx
) and some argument (e.g., a DefId
identifying what
item to process).
For cases where you need some other number of arguments:
- If you only need one argument, just use
()
for thearg
parameter. - If you need 3+ arguments, use a tuple for the
arg
parameter.
pub fn input_task<'gcx, C, R>(
&self,
key: DepNode,
cx: C,
input: R
) -> (R, DepNodeIndex) where
C: DepGraphSafe + StableHashingContextProvider<'gcx>,
R: HashStable<StableHashingContext<'gcx>>,
[src]
pub fn input_task<'gcx, C, R>(
&self,
key: DepNode,
cx: C,
input: R
) -> (R, DepNodeIndex) where
C: DepGraphSafe + StableHashingContextProvider<'gcx>,
R: HashStable<StableHashingContext<'gcx>>,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Creates a new dep-graph input with value input
fn with_task_impl<'gcx, C, A, R>(
&self,
key: DepNode,
cx: C,
arg: A,
no_tcx: bool,
task: fn(_: C, _: A) -> R,
create_task: fn(_: DepNode) -> OpenTask,
finish_task_and_alloc_depnode: fn(_: &Lock<CurrentDepGraph>, _: DepNode, _: OpenTask) -> DepNodeIndex
) -> (R, DepNodeIndex) where
C: DepGraphSafe + StableHashingContextProvider<'gcx>,
R: HashStable<StableHashingContext<'gcx>>,
[src]
fn with_task_impl<'gcx, C, A, R>(
&self,
key: DepNode,
cx: C,
arg: A,
no_tcx: bool,
task: fn(_: C, _: A) -> R,
create_task: fn(_: DepNode) -> OpenTask,
finish_task_and_alloc_depnode: fn(_: &Lock<CurrentDepGraph>, _: DepNode, _: OpenTask) -> DepNodeIndex
) -> (R, DepNodeIndex) where
C: DepGraphSafe + StableHashingContextProvider<'gcx>,
R: HashStable<StableHashingContext<'gcx>>,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn with_anon_task<OP, R>(
&self,
dep_kind: DepKind,
op: OP
) -> (R, DepNodeIndex) where
OP: FnOnce() -> R,
[src]
pub fn with_anon_task<OP, R>(
&self,
dep_kind: DepKind,
op: OP
) -> (R, DepNodeIndex) where
OP: FnOnce() -> R,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Execute something within an "anonymous" task, that is, a task the DepNode of which is determined by the list of inputs it read from.
pub fn with_eval_always_task<'gcx, C, A, R>(
&self,
key: DepNode,
cx: C,
arg: A,
task: fn(_: C, _: A) -> R
) -> (R, DepNodeIndex) where
C: DepGraphSafe + StableHashingContextProvider<'gcx>,
R: HashStable<StableHashingContext<'gcx>>,
[src]
pub fn with_eval_always_task<'gcx, C, A, R>(
&self,
key: DepNode,
cx: C,
arg: A,
task: fn(_: C, _: A) -> R
) -> (R, DepNodeIndex) where
C: DepGraphSafe + StableHashingContextProvider<'gcx>,
R: HashStable<StableHashingContext<'gcx>>,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Execute something within an "eval-always" task which is a task
pub fn read(&self, v: DepNode)
[src]
pub fn read(&self, v: DepNode)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn read_index(&self, dep_node_index: DepNodeIndex)
[src]
pub fn read_index(&self, dep_node_index: DepNodeIndex)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn dep_node_index_of(&self, dep_node: &DepNode) -> DepNodeIndex
[src]
pub fn dep_node_index_of(&self, dep_node: &DepNode) -> DepNodeIndex
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn dep_node_exists(&self, dep_node: &DepNode) -> bool
[src]
pub fn dep_node_exists(&self, dep_node: &DepNode) -> bool
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn fingerprint_of(&self, dep_node_index: DepNodeIndex) -> Fingerprint
[src]
pub fn fingerprint_of(&self, dep_node_index: DepNodeIndex) -> Fingerprint
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn prev_fingerprint_of(&self, dep_node: &DepNode) -> Option<Fingerprint>
[src]
pub fn prev_fingerprint_of(&self, dep_node: &DepNode) -> Option<Fingerprint>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn prev_dep_node_index_of(
&self,
dep_node: &DepNode
) -> SerializedDepNodeIndex
[src]
pub fn prev_dep_node_index_of(
&self,
dep_node: &DepNode
) -> SerializedDepNodeIndex
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn previous_work_product(&self, v: &WorkProductId) -> Option<WorkProduct>
[src]
pub fn previous_work_product(&self, v: &WorkProductId) -> Option<WorkProduct>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Check whether a previous work product exists for v
and, if
so, return the path that leads to it. Used to skip doing work.
pub fn previous_work_products(&self) -> &FxHashMap<WorkProductId, WorkProduct>
[src]
pub fn previous_work_products(&self) -> &FxHashMap<WorkProductId, WorkProduct>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Access the map of work-products created during the cached run. Only used during saving of the dep-graph.
pub fn register_dep_node_debug_str<F>(
&self,
dep_node: DepNode,
debug_str_gen: F
) where
F: FnOnce() -> String,
[src]
pub fn register_dep_node_debug_str<F>(
&self,
dep_node: DepNode,
debug_str_gen: F
) where
F: FnOnce() -> String,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub(super) fn dep_node_debug_str(
&self,
dep_node: DepNode
) -> Option<String>
[src]
pub(super) fn dep_node_debug_str(
&self,
dep_node: DepNode
) -> Option<String>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn edge_deduplication_data(&self) -> (u64, u64)
[src]
pub fn edge_deduplication_data(&self) -> (u64, u64)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn serialize(&self) -> SerializedDepGraph
[src]
pub fn serialize(&self) -> SerializedDepGraph
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn node_color(&self, dep_node: &DepNode) -> Option<DepNodeColor>
[src]
pub fn node_color(&self, dep_node: &DepNode) -> Option<DepNodeColor>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn try_mark_green<'tcx>(
&self,
tcx: TyCtxt<'_, 'tcx, 'tcx>,
dep_node: &DepNode
) -> Option<DepNodeIndex>
[src]
pub fn try_mark_green<'tcx>(
&self,
tcx: TyCtxt<'_, 'tcx, 'tcx>,
dep_node: &DepNode
) -> Option<DepNodeIndex>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn is_green(&self, dep_node: &DepNode) -> bool
[src]
pub fn is_green(&self, dep_node: &DepNode) -> bool
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn exec_cache_promotions<'a, 'tcx>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>)
[src]
pub fn exec_cache_promotions<'a, 'tcx>(&self, tcx: TyCtxt<'a, 'tcx, 'tcx>)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn mark_loaded_from_cache(&self, dep_node_index: DepNodeIndex, state: bool)
[src]
pub fn mark_loaded_from_cache(&self, dep_node_index: DepNodeIndex, state: bool)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn was_loaded_from_cache(&self, dep_node: &DepNode) -> Option<bool>
[src]
pub fn was_loaded_from_cache(&self, dep_node: &DepNode) -> Option<bool>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?