pub trait InferCtxtExt<'tcx> {
    fn report_fulfillment_errors(
        &self,
        errors: &[FulfillmentError<'tcx>],
        body_id: Option<BodyId>,
        fallback_has_occurred: bool
    ) -> ErrorGuaranteed; fn report_overflow_error<T>(
        &self,
        obligation: &Obligation<'tcx, T>,
        suggest_increasing_limit: bool
    ) -> !
   where
        T: Display + TypeFoldable<'tcx>
; fn report_overflow_error_cycle(
        &self,
        cycle: &[PredicateObligation<'tcx>]
    ) -> !; fn report_selection_error(
        &self,
        obligation: PredicateObligation<'tcx>,
        root_obligation: &PredicateObligation<'tcx>,
        error: &SelectionError<'tcx>,
        fallback_has_occurred: bool
    ); fn get_fn_like_arguments(
        &self,
        node: Node<'_>
    ) -> Option<(Span, Vec<ArgKind>)>; fn report_arg_count_mismatch(
        &self,
        span: Span,
        found_span: Option<Span>,
        expected_args: Vec<ArgKind>,
        found_args: Vec<ArgKind>,
        is_closure: bool
    ) -> DiagnosticBuilder<'tcx, ErrorGuaranteed>; fn type_implements_fn_trait(
        &self,
        param_env: ParamEnv<'tcx>,
        ty: Binder<'tcx, Ty<'tcx>>,
        constness: BoundConstness,
        polarity: ImplPolarity
    ) -> Result<(ClosureKind, Binder<'tcx, Ty<'tcx>>), ()>; }

Required Methods

The root_obligation parameter should be the root_obligation field from a FulfillmentError. If no FulfillmentError is available, then it should be the same as obligation.

Given some node representing a fn-like thing in the HIR map, returns a span and ArgKind information that describes the arguments it expects. This can be supplied to report_arg_count_mismatch.

Reports an error when the number of arguments needed by a trait match doesn’t match the number that the expression provides.

Checks if the type implements one of Fn, FnMut, or FnOnce in that order, and returns the generic type corresponding to the argument of that trait (corresponding to the closure arguments).

Implementors