Struct rustc_middle::ty::fold::BottomUpFolder
source · pub struct BottomUpFolder<'tcx, F, G, H>where
F: FnMut(Ty<'tcx>) -> Ty<'tcx>,
G: FnMut(Region<'tcx>) -> Region<'tcx>,
H: FnMut(Const<'tcx>) -> Const<'tcx>,{
pub tcx: TyCtxt<'tcx>,
pub ty_op: F,
pub lt_op: G,
pub ct_op: H,
}
Fields§
§tcx: TyCtxt<'tcx>
§ty_op: F
§lt_op: G
§ct_op: H
Trait Implementations§
source§impl<'tcx, F, G, H> TypeFolder<TyCtxt<'tcx>> for BottomUpFolder<'tcx, F, G, H>where
F: FnMut(Ty<'tcx>) -> Ty<'tcx>,
G: FnMut(Region<'tcx>) -> Region<'tcx>,
H: FnMut(Const<'tcx>) -> Const<'tcx>,
impl<'tcx, F, G, H> TypeFolder<TyCtxt<'tcx>> for BottomUpFolder<'tcx, F, G, H>where F: FnMut(Ty<'tcx>) -> Ty<'tcx>, G: FnMut(Region<'tcx>) -> Region<'tcx>, H: FnMut(Const<'tcx>) -> Const<'tcx>,
fn interner(&self) -> TyCtxt<'tcx>
fn fold_ty(&mut self, ty: Ty<'tcx>) -> Ty<'tcx>
fn fold_region(&mut self, r: Region<'tcx>) -> Region<'tcx>
fn fold_const(&mut self, ct: Const<'tcx>) -> Const<'tcx>
fn fold_binder<T>( &mut self, t: <I as Interner>::Binder<T> ) -> <I as Interner>::Binder<T>where T: TypeFoldable<I>, <I as Interner>::Binder<T>: TypeSuperFoldable<I>,
Auto Trait Implementations§
impl<'tcx, F, G, H> !RefUnwindSafe for BottomUpFolder<'tcx, F, G, H>
impl<'tcx, F, G, H> !Send for BottomUpFolder<'tcx, F, G, H>
impl<'tcx, F, G, H> !Sync for BottomUpFolder<'tcx, F, G, H>
impl<'tcx, F, G, H> Unpin for BottomUpFolder<'tcx, F, G, H>where F: Unpin, G: Unpin, H: Unpin,
impl<'tcx, F, G, H> !UnwindSafe for BottomUpFolder<'tcx, F, G, H>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
source§impl<I, F> FallibleTypeFolder<I> for Fwhere
I: Interner,
F: TypeFolder<I>,
impl<I, F> FallibleTypeFolder<I> for Fwhere I: Interner, F: TypeFolder<I>,
type Error = !
fn interner(&self) -> I
fn try_fold_binder<T>( &mut self, t: <I as Interner>::Binder<T> ) -> Result<<I as Interner>::Binder<T>, !>where T: TypeFoldable<I>, <I as Interner>::Binder<T>: TypeSuperFoldable<I>,
fn try_fold_ty( &mut self, t: <I as Interner>::Ty ) -> Result<<I as Interner>::Ty, !>where <I as Interner>::Ty: TypeSuperFoldable<I>,
fn try_fold_region( &mut self, r: <I as Interner>::Region ) -> Result<<I as Interner>::Region, !>
fn try_fold_const( &mut self, c: <I as Interner>::Const ) -> Result<<I as Interner>::Const, !>where <I as Interner>::Const: TypeSuperFoldable<I>,
fn try_fold_predicate( &mut self, p: <I as Interner>::Predicate ) -> Result<<I as Interner>::Predicate, !>where <I as Interner>::Predicate: TypeSuperFoldable<I>,
source§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
source§impl<'tcx, T> ToPredicate<'tcx, T> for T
impl<'tcx, T> ToPredicate<'tcx, T> for T
fn to_predicate(self, _tcx: TyCtxt<'tcx>) -> T
source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle: &[QueryInfo], _guar: ErrorGuaranteed ) -> T
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.