Struct rustc_trait_selection::traits::fulfill::FulfillProcessor [−][src]
struct FulfillProcessor<'a, 'b, 'tcx> {
selcx: &'a mut SelectionContext<'b, 'tcx>,
register_region_obligations: bool,
}Fields
selcx: &'a mut SelectionContext<'b, 'tcx>register_region_obligations: boolImplementations
impl<'a, 'b, 'tcx> FulfillProcessor<'a, 'b, 'tcx>[src]
impl<'a, 'b, 'tcx> FulfillProcessor<'a, 'b, 'tcx>[src]fn progress_changed_obligations(
&mut self,
pending_obligation: &mut PendingPredicateObligation<'tcx>
) -> ProcessResult<PendingPredicateObligation<'tcx>, FulfillmentErrorCode<'tcx>>[src]
&mut self,
pending_obligation: &mut PendingPredicateObligation<'tcx>
) -> ProcessResult<PendingPredicateObligation<'tcx>, FulfillmentErrorCode<'tcx>>
fn process_trait_obligation(
&mut self,
obligation: &PredicateObligation<'tcx>,
trait_obligation: TraitObligation<'tcx>,
stalled_on: &mut Vec<TyOrConstInferVar<'tcx>>
) -> ProcessResult<PendingPredicateObligation<'tcx>, FulfillmentErrorCode<'tcx>>[src]
&mut self,
obligation: &PredicateObligation<'tcx>,
trait_obligation: TraitObligation<'tcx>,
stalled_on: &mut Vec<TyOrConstInferVar<'tcx>>
) -> ProcessResult<PendingPredicateObligation<'tcx>, FulfillmentErrorCode<'tcx>>
fn process_projection_obligation(
&mut self,
project_obligation: Obligation<'tcx, PolyProjectionPredicate<'tcx>>,
stalled_on: &mut Vec<TyOrConstInferVar<'tcx>>
) -> ProcessResult<PendingPredicateObligation<'tcx>, FulfillmentErrorCode<'tcx>>[src]
&mut self,
project_obligation: Obligation<'tcx, PolyProjectionPredicate<'tcx>>,
stalled_on: &mut Vec<TyOrConstInferVar<'tcx>>
) -> ProcessResult<PendingPredicateObligation<'tcx>, FulfillmentErrorCode<'tcx>>
Trait Implementations
impl<'a, 'b, 'tcx> ObligationProcessor for FulfillProcessor<'a, 'b, 'tcx>[src]
impl<'a, 'b, 'tcx> ObligationProcessor for FulfillProcessor<'a, 'b, 'tcx>[src]fn process_obligation(
&mut self,
pending_obligation: &mut Self::Obligation
) -> ProcessResult<Self::Obligation, Self::Error>[src]
fn process_obligation(
&mut self,
pending_obligation: &mut Self::Obligation
) -> ProcessResult<Self::Obligation, Self::Error>[src]Processes a predicate obligation and returns either:
Changed(v)if the predicate is true, presuming thatvare also trueUnchangedif we don’t have enough info to be sureError(e)if the predicate does not hold
This is always inlined, despite its size, because it has a single callsite and it is called very frequently.
type Obligation = PendingPredicateObligation<'tcx>
type Error = FulfillmentErrorCode<'tcx>
fn process_backedge<'c, I>(
&mut self,
cycle: I,
_marker: PhantomData<&'c PendingPredicateObligation<'tcx>>
) where
I: Clone + Iterator<Item = &'c PendingPredicateObligation<'tcx>>, [src]
fn process_backedge<'c, I>(
&mut self,
cycle: I,
_marker: PhantomData<&'c PendingPredicateObligation<'tcx>>
) where
I: Clone + Iterator<Item = &'c PendingPredicateObligation<'tcx>>, [src]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. Read more
Auto Trait Implementations
impl<'a, 'b, 'tcx> !RefUnwindSafe for FulfillProcessor<'a, 'b, 'tcx>
impl<'a, 'b, 'tcx> !Send for FulfillProcessor<'a, 'b, 'tcx>
impl<'a, 'b, 'tcx> !Sync for FulfillProcessor<'a, 'b, 'tcx>
impl<'a, 'b, 'tcx> Unpin for FulfillProcessor<'a, 'b, 'tcx> where
'b: 'a,
'tcx: 'a,
'b: 'a,
'tcx: 'a,
impl<'a, 'b, 'tcx> !UnwindSafe for FulfillProcessor<'a, 'b, 'tcx>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]