Function rustc::traits::normalize_projection_type [] [src]

pub fn normalize_projection_type<'a, 'b, 'gcx, 'tcx>(selcx: &'a mut SelectionContext<'b, 'gcx, 'tcx>,
                                                     projection_ty: ProjectionTy<'tcx>,
                                                     cause: ObligationCause<'tcx>,
                                                     depth: usize)
                                                     -> Normalized<'tcx, Ty<'tcx>>
🔬 This is a nightly-only experimental API. (rustc_private)

The guts of normalize: normalize a specific projection like <T as Trait>::Item. The result is always a type (and possibly additional obligations). If ambiguity arises, which implies that there are unresolved type variables in the projection, we will substitute a fresh type variable $X and generate a new obligation <T as Trait>::Item == $X for later.