Trait rustc_trait_selection::traits::query::type_op::TypeOp[−][src]

pub trait TypeOp<'tcx>: Sized + Debug {
    type Output;
    fn fully_perform(
        self,
        infcx: &InferCtxt<'_, 'tcx>
    ) -> Fallible<(Self::Output, Option<Rc<QueryRegionConstraints<'tcx>>>)>; }

“Type ops” are used in NLL to perform some particular action and extract out the resulting region constraints (or an error if it cannot be completed).

Associated Types

type Output[src]

Loading content...

Required methods

fn fully_perform(
    self,
    infcx: &InferCtxt<'_, 'tcx>
) -> Fallible<(Self::Output, Option<Rc<QueryRegionConstraints<'tcx>>>)>
[src]

Processes the operation and all resulting obligations, returning the final result along with any region constraints (they will be given over to the NLL region solver).

Loading content...

Implementations on Foreign Types

impl<'tcx, Q> TypeOp<'tcx> for ParamEnvAnd<'tcx, Q> where
    Q: QueryTypeOp<'tcx>, 
[src]

type Output = Q::QueryResponse

Loading content...

Implementors

impl<'tcx, F, R, G> TypeOp<'tcx> for CustomTypeOp<F, G> where
    F: for<'a, 'cx> FnOnce(&'a InferCtxt<'cx, 'tcx>) -> Fallible<InferOk<'tcx, R>>,
    G: Fn() -> String, 
[src]

type Output = R

fn fully_perform(
    self,
    infcx: &InferCtxt<'_, 'tcx>
) -> Fallible<(Self::Output, Option<Rc<QueryRegionConstraints<'tcx>>>)>
[src]

Processes the operation and all resulting obligations, returning the final result along with any region constraints (they will be given over to the NLL region solver).

Loading content...