# Function rustc_trait_selection::traits::fully_normalize

source ·

    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(-Znext-solver): 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.