[][src]Trait rustc_data_structures::obligation_forest::ObligationProcessor

pub trait ObligationProcessor {
    type Obligation: ForestObligation;
    type Error: Debug;
    fn process_obligation(
        &mut self,
        obligation: &mut Self::Obligation
    ) -> ProcessResult<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 an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Associated Types

type Obligation: ForestObligation

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

type Error: Debug

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Loading content...

Required methods

fn process_obligation(
    &mut self,
    obligation: &mut Self::Obligation
) -> ProcessResult<Self::Obligation, Self::Error>

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

fn process_backedge<'c, I>(
    &mut self,
    cycle: I,
    _marker: PhantomData<&'c Self::Obligation>
) where
    I: Clone + Iterator<Item = &'c Self::Obligation>, 

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

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).

Loading content...

Implementors

Loading content...