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(&'tcx Const<'tcx>) -> &'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: Flt_op: Gct_op: HTrait Implementations
sourceimpl<'tcx, F, G, H> TypeFolder<'tcx> for BottomUpFolder<'tcx, F, G, H> where
F: FnMut(Ty<'tcx>) -> Ty<'tcx>,
G: FnMut(Region<'tcx>) -> Region<'tcx>,
H: FnMut(&'tcx Const<'tcx>) -> &'tcx Const<'tcx>,
impl<'tcx, F, G, H> TypeFolder<'tcx> for BottomUpFolder<'tcx, F, G, H> where
F: FnMut(Ty<'tcx>) -> Ty<'tcx>,
G: FnMut(Region<'tcx>) -> Region<'tcx>,
H: FnMut(&'tcx Const<'tcx>) -> &'tcx Const<'tcx>,
fn tcx<'b>(&'b 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: &'tcx Const<'tcx>) -> &'tcx Const<'tcx>
type Error = !
fn fold_binder<T>(&mut self, t: Binder<'tcx, T>) -> Binder<'tcx, T> where
T: TypeFoldable<'tcx>,
Self: TypeFolder<'tcx, Error = !>,
fn fold_predicate(&mut self, p: Predicate<'tcx>) -> Predicate<'tcx> where
Self: TypeFolder<'tcx, Error = !>,
fn fold_mir_const(&mut self, c: ConstantKind<'tcx>) -> ConstantKind<'tcx> where
Self: TypeFolder<'tcx, Error = !>,
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
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<'tcx, F> FallibleTypeFolder<'tcx> for F where
F: TypeFolder<'tcx, Error = !>,
impl<'tcx, F> FallibleTypeFolder<'tcx> for F where
F: TypeFolder<'tcx, Error = !>,
fn try_fold_binder<T>(
&mut self,
t: Binder<'tcx, T>
) -> Result<Binder<'tcx, T>, Self::Error> where
T: TypeFoldable<'tcx>,
fn try_fold_ty(&mut self, t: Ty<'tcx>) -> Result<Ty<'tcx>, Self::Error>
fn try_fold_region(
&mut self,
r: Region<'tcx>
) -> Result<Region<'tcx>, Self::Error>
fn try_fold_const(
&mut self,
c: &'tcx Const<'tcx>
) -> Result<&'tcx Const<'tcx>, Self::Error>
fn try_fold_predicate(
&mut self,
p: Predicate<'tcx>
) -> Result<Predicate<'tcx>, Self::Error>
fn try_fold_mir_const(
&mut self,
c: ConstantKind<'tcx>
) -> Result<ConstantKind<'tcx>, Self::Error>
sourceimpl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
impl<'a, T> Captures<'a> for T where
T: ?Sized,
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.