pub fn fully_normalize<'tcx, T>(
    infcx: &InferCtxt<'tcx>,
    cause: ObligationCause<'tcx>,
    param_env: ParamEnv<'tcx>,
    value: T
) -> Result<T, Vec<FulfillmentError<'tcx>>>
where T: TypeFoldable<TyCtxt<'tcx>>,
Expand description

Normalize a type and process all resulting obligations, returning any errors.

FIXME(-Ztrait-solver=next): This should be replaced by At::deeply_normalize which has the same behavior with the new solver. Because using a separate fulfillment context worsens caching in the old solver, At::deeply_normalize is still lazy with the old solver as it otherwise negatively impacts perf.