Skip to main content

MemoryUnit

Struct MemoryUnit 

Source
pub(crate) struct MemoryUnit<'z3, 'tcx> {
    pub(crate) allocation: Allocation<'z3, 'tcx>,
    pub(crate) content: MemoryContent<'z3, 'tcx>,
}
Expand description

A single allocation: its shape metadata (Allocation) plus its contents (MemoryContent). Splitting the two keeps the identity/layout facts apart from the mutable memory the values live in, while colocating them in one unit so no parallel table can drift out of sync. Facts live in three anchored layers — lifecycle (AllocFacts), content (ContentFacts), and value (ValueFacts on each VmValue) — see each type’s doc.

Fields§

§allocation: Allocation<'z3, 'tcx>

The allocation’s shape and lifecycle facts.

§content: MemoryContent<'z3, 'tcx>

The allocation’s contents (byte layer + typed-value layer) and content facts.

Auto Trait Implementations§

§

impl<'z3, 'tcx> !DynSend for MemoryUnit<'z3, 'tcx>

§

impl<'z3, 'tcx> !DynSync for MemoryUnit<'z3, 'tcx>

§

impl<'z3, 'tcx> !RefUnwindSafe for MemoryUnit<'z3, 'tcx>

§

impl<'z3, 'tcx> !Send for MemoryUnit<'z3, 'tcx>

§

impl<'z3, 'tcx> !Sync for MemoryUnit<'z3, 'tcx>

§

impl<'z3, 'tcx> !UnwindSafe for MemoryUnit<'z3, 'tcx>

§

impl<'z3, 'tcx> Freeze for MemoryUnit<'z3, 'tcx>

§

impl<'z3, 'tcx> Unpin for MemoryUnit<'z3, 'tcx>

§

impl<'z3, 'tcx> UnsafeUnpin for MemoryUnit<'z3, 'tcx>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V