#[repr(transparent)]pub struct VirtualAddress(MemoryAddress);Expand description
Virtual memory address.
A thin wrapper around MemoryAddress that denotes virtual addresses.
It does not validate canonicality at runtime; it only carries the kind of
address at the type level so you don’t accidentally mix virtual and physical
values.
§Semantics
- Use
VirtualAddress::page/VirtualAddress::offset/VirtualAddress::splitto derive the page base and the in-page offset for a concretePageSize. - Combine a
VirtualPage<S>and aMemoryAddressOffset<S>withVirtualPage::jointo reconstruct aVirtualAddress.
§Invariants
- No invariant beyond “this is intended to be a virtual address”.
- Alignment is only guaranteed for values returned from
page::<S>().
§Examples
let va = VirtualAddress::new(0xFFFF_FFFF_8000_1234);
let (vp, off) = va.split::<Size4K>();
assert_eq!(vp.base().as_u64() & (Size4K::SIZE - 1), 0);
assert_eq!(vp.join(off).as_u64(), va.as_u64());Tuple Fields§
§0: MemoryAddressImplementations§
Source§impl VirtualAddress
impl VirtualAddress
pub fn from_nonnull<T>(ptr: NonNull<T>) -> Self
pub fn from_ptr<T>(ptr: *const T) -> Self
pub const fn new(v: u64) -> Self
pub const fn as_u64(self) -> u64
pub const fn page<S: PageSize>(self) -> VirtualPage<S>
pub const fn offset<S: PageSize>(self) -> MemoryAddressOffset<S>
pub const fn split<S: PageSize>( self, ) -> (VirtualPage<S>, MemoryAddressOffset<S>)
Trait Implementations§
Source§impl Clone for VirtualAddress
impl Clone for VirtualAddress
Source§fn clone(&self) -> VirtualAddress
fn clone(&self) -> VirtualAddress
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for VirtualAddress
impl Debug for VirtualAddress
Source§impl Default for VirtualAddress
impl Default for VirtualAddress
Source§fn default() -> VirtualAddress
fn default() -> VirtualAddress
Returns the “default value” for a type. Read more
Source§impl Display for VirtualAddress
impl Display for VirtualAddress
Source§impl<S> From<VirtualPage<S>> for VirtualAddresswhere
S: PageSize,
impl<S> From<VirtualPage<S>> for VirtualAddresswhere
S: PageSize,
Source§fn from(value: VirtualPage<S>) -> Self
fn from(value: VirtualPage<S>) -> Self
Converts to this type from the input type.
Source§impl From<u64> for VirtualAddress
impl From<u64> for VirtualAddress
Source§impl Hash for VirtualAddress
impl Hash for VirtualAddress
Source§impl Ord for VirtualAddress
impl Ord for VirtualAddress
Source§fn cmp(&self, other: &VirtualAddress) -> Ordering
fn cmp(&self, other: &VirtualAddress) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for VirtualAddress
impl PartialEq for VirtualAddress
Source§impl PartialOrd for VirtualAddress
impl PartialOrd for VirtualAddress
impl Copy for VirtualAddress
impl Eq for VirtualAddress
impl StructuralPartialEq for VirtualAddress
Auto Trait Implementations§
impl Freeze for VirtualAddress
impl RefUnwindSafe for VirtualAddress
impl Send for VirtualAddress
impl Sync for VirtualAddress
impl Unpin for VirtualAddress
impl UnwindSafe for VirtualAddress
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