pub enum GlobalAlloc<'tcx> {
Function {
instance: Instance<'tcx>,
},
VTable(Ty<'tcx>, &'tcx RawList<(), Binder<TyCtxt<'tcx>, ExistentialPredicate<TyCtxt<'tcx>>>>),
Static(DefId),
Memory(ConstAllocation<'tcx>),
}
Expand description
An allocation in the global (tcx-managed) memory can be either a function pointer, a static, or a “real” allocation with some data in it.
Variants§
Function
The alloc ID is used as a function pointer.
VTable(Ty<'tcx>, &'tcx RawList<(), Binder<TyCtxt<'tcx>, ExistentialPredicate<TyCtxt<'tcx>>>>)
This alloc ID points to a symbolic (not-reified) vtable.
We remember the full dyn type, not just the principal trait, so that
const-eval and Miri can detect UB due to invalid transmutes of
dyn Trait
types.
Static(DefId)
The alloc ID points to a “lazy” static variable that did not get computed (yet). This is also used to break the cycle in recursive statics.
Memory(ConstAllocation<'tcx>)
The alloc ID points to memory.
Auto Trait Implementations§
impl<'tcx> Freeze for GlobalAlloc<'tcx>
impl<'tcx> !RefUnwindSafe for GlobalAlloc<'tcx>
impl<'tcx> Send for GlobalAlloc<'tcx>
impl<'tcx> Sync for GlobalAlloc<'tcx>
impl<'tcx> Unpin for GlobalAlloc<'tcx>
impl<'tcx> !UnwindSafe for GlobalAlloc<'tcx>
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