pub enum MetaSlotStorage {
Empty([u8; 39]),
Untyped,
FrameLink(StoredLink),
PTNode(StoredPageTablePageMeta),
}Variants§
Implementations§
Source§impl MetaSlotStorage
impl MetaSlotStorage
pub fn arrow_0(self) -> StoredPageTablePageMeta
pub fn arrow_Empty_0(self) -> [u8; 39]
pub fn arrow_FrameLink_0(self) -> StoredLink
pub fn arrow_PTNode_0(self) -> StoredPageTablePageMeta
Trait Implementations§
Source§impl AnyFrameMeta for MetaSlotStorage
MetaSlotStorage is an inductive tagged union of all of the frame meta types that
we work with in this development. So, it should itself implement AnyFrameMeta, and
it can then be used to stand in for dyn AnyFrameMeta.
impl AnyFrameMeta for MetaSlotStorage
MetaSlotStorage is an inductive tagged union of all of the frame meta types that
we work with in this development. So, it should itself implement AnyFrameMeta, and
it can then be used to stand in for dyn AnyFrameMeta.
Source§uninterp spec fn vtable_ptr(&self) -> usize
uninterp spec fn vtable_ptr(&self) -> usize
Source§fn on_drop_pre(
&self,
reader: VmReader<'_, Infallible>,
regions: MetaRegionOwners,
vm_io_owner: VmIoOwner,
) -> bool
fn on_drop_pre( &self, reader: VmReader<'_, Infallible>, regions: MetaRegionOwners, vm_io_owner: VmIoOwner, ) -> bool
Source§fn on_drop(
&mut self,
_reader: &mut VmReader<'_, Infallible>,
verus_tmp__regions: Tracked<&mut MetaRegionOwners>,
verus_tmp__vm_io_owner: Tracked<&mut VmIoOwner>,
)
fn on_drop( &mut self, _reader: &mut VmReader<'_, Infallible>, verus_tmp__regions: Tracked<&mut MetaRegionOwners>, verus_tmp__vm_io_owner: Tracked<&mut VmIoOwner>, )
Source§fn is_untyped(&self) -> bool
fn is_untyped(&self) -> bool
Source§impl<M: AnyFrameMeta + Repr<MetaSlotSmall>> Repr<MetaSlotStorage> for Link<M>
impl<M: AnyFrameMeta + Repr<MetaSlotSmall>> Repr<MetaSlotStorage> for Link<M>
Source§open spec fn wf(r: MetaSlotStorage, perm: LinkInnerPerms<M>) -> bool
open spec fn wf(r: MetaSlotStorage, perm: LinkInnerPerms<M>) -> bool
{
match r {
MetaSlotStorage::FrameLink(link) => (
&&& M::wf(link.slot, perm.storage)
&&& (link.next is Some) == (perm.next_ptr is Some)
&&& (link.prev is Some) == (perm.prev_ptr is Some)
&&& link.next is Some ==> link.next->0 == perm.next_ptr->0.addr()
&&& link.prev is Some ==> link.prev->0 == perm.prev_ptr->0.addr()
),
_ => false,
}
}Source§open spec fn to_repr_spec(
self,
perm: LinkInnerPerms<M>,
) -> (MetaSlotStorage, LinkInnerPerms<M>)
open spec fn to_repr_spec( self, perm: LinkInnerPerms<M>, ) -> (MetaSlotStorage, LinkInnerPerms<M>)
{
let (slot, storage) = self.meta.to_repr_spec(perm.storage);
(
MetaSlotStorage::FrameLink(StoredLink {
next: match self.next {
Some(ptr) => Some(ptr.ptr.addr()),
None => None,
},
prev: match self.prev {
Some(ptr) => Some(ptr.ptr.addr()),
None => None,
},
slot,
}),
LinkInnerPerms {
storage,
next_ptr: match self.next {
Some(ptr) => Some(ptr.ptr),
None => None,
},
prev_ptr: match self.prev {
Some(ptr) => Some(ptr.ptr),
None => None,
},
},
)
}Source§exec fn to_repr(
self,
Tracked(perm): Tracked<&mut LinkInnerPerms<M>>,
) -> MetaSlotStorage
exec fn to_repr( self, Tracked(perm): Tracked<&mut LinkInnerPerms<M>>, ) -> MetaSlotStorage
Source§open spec fn from_repr_spec(r: MetaSlotStorage, perm: LinkInnerPerms<M>) -> Self
open spec fn from_repr_spec(r: MetaSlotStorage, perm: LinkInnerPerms<M>) -> Self
{
match r {
MetaSlotStorage::FrameLink(link) => {
Link {
next: match link.next {
Some(addr) => {
Some(ReprPtr {
ptr: perm.next_ptr->0,
_T: PhantomData,
})
}
None => None,
},
prev: match link.prev {
Some(addr) => {
Some(ReprPtr {
ptr: perm.prev_ptr->0,
_T: PhantomData,
})
}
None => None,
},
meta: M::from_repr_spec(link.slot, perm.storage),
}
}
_ => {
Link {
next: None,
prev: None,
meta: M::from_repr_spec(MetaSlotSmall, perm.storage),
}
}
}
}Source§exec fn from_repr(
r: MetaSlotStorage,
Tracked(perm): Tracked<&LinkInnerPerms<M>>,
) -> Self
exec fn from_repr( r: MetaSlotStorage, Tracked(perm): Tracked<&LinkInnerPerms<M>>, ) -> Self
Source§exec fn from_borrowed<'a>(
r: &'a MetaSlotStorage,
Tracked(perm): Tracked<&'a LinkInnerPerms<M>>,
) -> &'a Self
exec fn from_borrowed<'a>( r: &'a MetaSlotStorage, Tracked(perm): Tracked<&'a LinkInnerPerms<M>>, ) -> &'a Self
Source§exec fn from_borrowed_mut<'a>(
r: &'a mut MetaSlotStorage,
Tracked(perm): Tracked<&'a mut LinkInnerPerms<M>>,
) -> &'a mut Self
exec fn from_borrowed_mut<'a>( r: &'a mut MetaSlotStorage, Tracked(perm): Tracked<&'a mut LinkInnerPerms<M>>, ) -> &'a mut Self
Source§proof fn from_to_repr(self, perm: LinkInnerPerms<M>)
proof fn from_to_repr(self, perm: LinkInnerPerms<M>)
Source§proof fn to_from_repr(r: MetaSlotStorage, perm: LinkInnerPerms<M>)
proof fn to_from_repr(r: MetaSlotStorage, perm: LinkInnerPerms<M>)
Source§proof fn to_repr_wf(self, perm: LinkInnerPerms<M>)
proof fn to_repr_wf(self, perm: LinkInnerPerms<M>)
Source§type ReprPerm = LinkInnerPerms<M>
type ReprPerm = LinkInnerPerms<M>
If the underlying representation contains cells, the translation may require permission objects that access them.
Source§impl Repr<MetaSlotStorage> for MetaSlotStorage
impl Repr<MetaSlotStorage> for MetaSlotStorage
Source§open spec fn to_repr_spec(self, perm: ()) -> (MetaSlotStorage, ())
open spec fn to_repr_spec(self, perm: ()) -> (MetaSlotStorage, ())
{ (self, ()) }Source§exec fn to_repr(self, Tracked(perm): Tracked<&mut ()>) -> MetaSlotStorage
exec fn to_repr(self, Tracked(perm): Tracked<&mut ()>) -> MetaSlotStorage
Source§open spec fn from_repr_spec(slot: MetaSlotStorage, perm: ()) -> Self
open spec fn from_repr_spec(slot: MetaSlotStorage, perm: ()) -> Self
{ slot }Source§exec fn from_repr(slot: MetaSlotStorage, Tracked(perm): Tracked<&()>) -> Self
exec fn from_repr(slot: MetaSlotStorage, Tracked(perm): Tracked<&()>) -> Self
Source§exec fn from_borrowed<'a>(
slot: &'a MetaSlotStorage,
Tracked(perm): Tracked<&'a ()>,
) -> &'a Self
exec fn from_borrowed<'a>( slot: &'a MetaSlotStorage, Tracked(perm): Tracked<&'a ()>, ) -> &'a Self
Source§exec fn from_borrowed_mut<'a>(
slot: &'a mut MetaSlotStorage,
Tracked(perm): Tracked<&'a mut ()>,
) -> &'a mut Self
exec fn from_borrowed_mut<'a>( slot: &'a mut MetaSlotStorage, Tracked(perm): Tracked<&'a mut ()>, ) -> &'a mut Self
Source§proof fn from_to_repr(self, perm: ())
proof fn from_to_repr(self, perm: ())
Source§proof fn to_from_repr(slot: MetaSlotStorage, perm: ())
proof fn to_from_repr(slot: MetaSlotStorage, perm: ())
Source§proof fn to_repr_wf(self, perm: ())
proof fn to_repr_wf(self, perm: ())
Source§impl<C: PageTableConfig> Repr<MetaSlotStorage> for PageTablePageMeta<C>
impl<C: PageTableConfig> Repr<MetaSlotStorage> for PageTablePageMeta<C>
Source§open spec fn wf(r: MetaSlotStorage, perm: ()) -> bool
open spec fn wf(r: MetaSlotStorage, perm: ()) -> bool
{ matches!(r, MetaSlotStorage::PTNode(_)) }Source§open spec fn to_repr_spec(self, perm: ()) -> (MetaSlotStorage, ())
open spec fn to_repr_spec(self, perm: ()) -> (MetaSlotStorage, ())
{ (MetaSlotStorage::PTNode(self.into_spec()), ()) }Source§exec fn to_repr(self, Tracked(perm): Tracked<&mut ()>) -> MetaSlotStorage
exec fn to_repr(self, Tracked(perm): Tracked<&mut ()>) -> MetaSlotStorage
Source§open spec fn from_repr_spec(r: MetaSlotStorage, perm: ()) -> Self
open spec fn from_repr_spec(r: MetaSlotStorage, perm: ()) -> Self
{
match r {
MetaSlotStorage::PTNode(node) => node.into_spec::<C>(),
_ => arbitrary(),
}
}Source§exec fn from_repr(r: MetaSlotStorage, Tracked(perm): Tracked<&()>) -> Self
exec fn from_repr(r: MetaSlotStorage, Tracked(perm): Tracked<&()>) -> Self
Source§exec fn from_borrowed<'a>(
r: &'a MetaSlotStorage,
Tracked(perm): Tracked<&'a ()>,
) -> &'a Self
exec fn from_borrowed<'a>( r: &'a MetaSlotStorage, Tracked(perm): Tracked<&'a ()>, ) -> &'a Self
Source§exec fn from_borrowed_mut<'a>(
r: &'a mut MetaSlotStorage,
Tracked(perm): Tracked<&'a mut ()>,
) -> &'a mut Self
exec fn from_borrowed_mut<'a>( r: &'a mut MetaSlotStorage, Tracked(perm): Tracked<&'a mut ()>, ) -> &'a mut Self
Source§proof fn from_to_repr(self, perm: ())
proof fn from_to_repr(self, perm: ())
Source§proof fn to_from_repr(r: MetaSlotStorage, perm: ())
proof fn to_from_repr(r: MetaSlotStorage, perm: ())
Source§proof fn to_repr_wf(self, perm: ())
proof fn to_repr_wf(self, perm: ())
Auto Trait Implementations§
impl !Freeze for MetaSlotStorage
impl !RefUnwindSafe for MetaSlotStorage
impl Send for MetaSlotStorage
impl Sync for MetaSlotStorage
impl Unpin for MetaSlotStorage
impl UnsafeUnpin for MetaSlotStorage
impl UnwindSafe for MetaSlotStorage
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: From<T>,
impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: From<T>,
fn obeys_from_spec() -> bool
fn from_spec(v: T) -> VERUS_SPEC__A
§impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: Into<T>,
impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__Awhere
VERUS_SPEC__A: Into<T>,
fn obeys_into_spec() -> bool
fn into_spec(self) -> T
§impl<T, U> IntoSpecImpl<U> for Twhere
U: From<T>,
impl<T, U> IntoSpecImpl<U> for Twhere
U: From<T>,
fn obeys_into_spec() -> bool
fn into_spec(self) -> U
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.impl<A> SpecEq<&A> for Awhere
A: ?Sized,
impl<A> SpecEq<&mut A> for Awhere
A: ?Sized,
impl<A> SpecEq<A> for Awhere
A: ?Sized,
impl<A> SpecEq<Ghost<A>> for A
impl<A> SpecEq<Tracked<A>> for A
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.