Trait rustc_data_structures::obligation_forest::ObligationProcessor
[−]
[src]
pub trait ObligationProcessor { type Obligation: ForestObligation; type Error: Debug; fn process_obligation(
&mut self,
obligation: &mut Self::Obligation
) -> Result<Option<Vec<Self::Obligation>>, Self::Error>; fn process_backedge<'c, I>(
&mut self,
cycle: I,
_marker: PhantomData<&'c Self::Obligation>
)
where
I: Clone + Iterator<Item = &'c Self::Obligation>; }
🔬 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?
Associated Types
type Obligation: ForestObligation
🔬 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?
type Error: Debug
🔬 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?
Required Methods
fn process_obligation(
&mut self,
obligation: &mut Self::Obligation
) -> Result<Option<Vec<Self::Obligation>>, Self::Error>
&mut self,
obligation: &mut Self::Obligation
) -> Result<Option<Vec<Self::Obligation>>, Self::Error>
🔬 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?
fn process_backedge<'c, I>(
&mut self,
cycle: I,
_marker: PhantomData<&'c Self::Obligation>
) where
I: Clone + Iterator<Item = &'c Self::Obligation>,
&mut self,
cycle: I,
_marker: PhantomData<&'c Self::Obligation>
) where
I: Clone + Iterator<Item = &'c Self::Obligation>,
🔬 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?
As we do the cycle check, we invoke this callback when we
encounter an actual cycle. cycle
is an iterator that starts
at the start of the cycle in the stack and walks toward the
top.
In other words, if we had O1 which required O2 which required O3 which required O1, we would give an iterator yielding O1, O2, O3 (O1 is not yielded twice).