crate fn deref_tys(&self) -> impl Iterator<Item = Ty<'tcx>> + '_ {
        self.projections.iter().enumerate().rev().filter_map(move |(index, proj)| {
            if ProjectionKind::Deref == proj.kind {
                Some(self.ty_before_projection(index))
            } else {
                None
            }
        })
    }
/// Returns an iterator of the types that have to be dereferenced to access
/// the `Place`.
///
/// The types are in the reverse order that they are applied. So if
/// `x: &*const u32` and the `Place` is `**x`, then the types returned are
///`*const u32` then `&*const u32`.
Returns an iterator of the types that have to be dereferenced to access
the `Place`.

The types are in the reverse order that they are applied.
Returns an iterator of the types that have to be dereferenced to access the ` Place ` . The types are in the reverse order that they are applied .
crate fn deref_tys(&self) -> impl Iterator<Item = Ty<'tcx>> + '_ {
        self.projections.iter().enumerate().rev().filter_map(move |(index, proj)| {
            if ProjectionKind::Deref == proj.kind {
                Some(self.ty_before_projection(index))
            } else {
                None
            }
        })
    }
crate fn deref_tys ( & self ) -> impl Iterator < Item = Ty < ' tcx > > + ' _ { self . projections . iter ( ) . enumerate ( ) . rev ( ) . filter_map ( move | ( index , proj ) | { if ProjectionKind :: Deref == proj . kind { Some ( self . ty_before_projection ( index ) ) } else { None } } ) }
Returns an iterator of the types that have to be dereferenced to access
the `Place`.
Returns an iterator of the types that have to be dereferenced to access the ` Place ` .
&self
&self