pub struct InferOk<'tcx, T> {
    pub value: T,
    pub obligations: PredicateObligations<'tcx>,
}Expand description
InferOk<'tcx, ()> is used a lot. It may seem like a useless wrapper
around PredicateObligations<'tcx>, but it has one important property:
because InferOk is marked with #[must_use], if you have a method
InferCtxt::f that returns InferResult<'tcx, ()> and you call it with
infcx.f()?; you’ll get a warning about the obligations being discarded
without use, which is probably unintentional and has been a source of bugs
in the past.
Fields§
§value: T§obligations: PredicateObligations<'tcx>Implementations§
Source§impl<'tcx, T> InferOk<'tcx, T>
 
impl<'tcx, T> InferOk<'tcx, T>
Sourcepub fn into_value_registering_obligations<E: 'tcx>(
    self,
    infcx: &InferCtxt<'tcx>,
    fulfill_cx: &mut dyn TraitEngine<'tcx, E>,
) -> T
 
pub fn into_value_registering_obligations<E: 'tcx>( self, infcx: &InferCtxt<'tcx>, fulfill_cx: &mut dyn TraitEngine<'tcx, E>, ) -> T
Extracts value, registering any obligations into fulfill_cx.
Source§impl<'tcx> InferOk<'tcx, ()>
 
impl<'tcx> InferOk<'tcx, ()>
pub fn into_obligations(self) -> PredicateObligations<'tcx>
Trait Implementations§
Auto Trait Implementations§
impl<'tcx, T> DynSend for InferOk<'tcx, T>where
    T: DynSend,
impl<'tcx, T> DynSync for InferOk<'tcx, T>where
    T: DynSync,
impl<'tcx, T> Freeze for InferOk<'tcx, T>where
    T: Freeze,
impl<'tcx, T> !RefUnwindSafe for InferOk<'tcx, T>
impl<'tcx, T> Send for InferOk<'tcx, T>where
    T: Send,
impl<'tcx, T> Sync for InferOk<'tcx, T>where
    T: Sync,
impl<'tcx, T> Unpin for InferOk<'tcx, T>where
    T: Unpin,
impl<'tcx, T> !UnwindSafe for InferOk<'tcx, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T, R> CollectAndApply<T, R> for T
 
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Filterable for T
 
impl<T> Filterable for T
Source§fn filterable(
    self,
    filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
 
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
Creates a filterable data provider with the given name for debugging. Read more
Source§impl<T> Instrument for T
 
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
 
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
 
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts 
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
 
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts 
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<P> IntoQueryParam<P> for P
 
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
Source§impl<T> MaybeResult<T> for T
 
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
 
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
    U: UpcastFrom<I, T>,
 
impl<I, T, U> Upcast<I, U> for Twhere
    U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
 
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<Tcx, T> Value<Tcx> for Twhere
    Tcx: DepContext,
 
impl<Tcx, T> Value<Tcx> for Twhere
    Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
Source§impl<T> WithSubscriber for T
 
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
 
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
 
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
    T: 'static,
impl<T> MaybeSendSync for T
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.