PageNum

Trait PageNum 

Source
pub trait PageNum:
    CalcOps
    + UsizeConvert
    + Copy
    + Clone
    + PartialEq
    + PartialOrd
    + Eq
    + Ord {
    type TAddress: Address + AlignOps;

    // Provided methods
    fn step(&mut self) { ... }
    fn step_by(&mut self, offset: usize) { ... }
    fn step_back(&mut self) { ... }
    fn step_back_by(&mut self, offset: usize) { ... }
    fn from_addr_floor(addr: Self::TAddress) -> Self { ... }
    fn from_addr_ceil(addr: Self::TAddress) -> Self { ... }
    fn start_addr(self) -> Self::TAddress { ... }
    fn end_addr(self) -> Self::TAddress { ... }
    fn diff(self, other: Self) -> isize { ... }
}
Expand description

§PageNum Trait

表示一个页码的 Trait。所有页码类型 (如 Ppn 和 Vpn) 必须实现此 Trait。

它依赖于 CalcOps (算术和位操作) 和 UsizeConvert (与 usize 转换)。

Required Associated Types§

Source

type TAddress: Address + AlignOps

此页码类型关联的地址类型(例如 Ppn 关联 Paddr,Vpn 关联 Vaddr)。

Provided Methods§

Source

fn step(&mut self)

将页码增加 1。

Source

fn step_by(&mut self, offset: usize)

将页码增加给定的偏移量 (页数)。

§参数
  • offset: 要增加的页数。
Source

fn step_back(&mut self)

将页码减少 1。

Source

fn step_back_by(&mut self, offset: usize)

将页码减少给定的偏移量 (页数)。

§参数
  • offset: 要减少的页数。
Source

fn from_addr_floor(addr: Self::TAddress) -> Self

将地址转换为页码 (向下取整,即页的起始页码)。

§参数
  • addr: 要转换的地址。
§返回

包含该地址的页的页码。

Source

fn from_addr_ceil(addr: Self::TAddress) -> Self

将地址转换为页码 (向上取整,即如果地址未对齐,则指向下一个页码)。

§参数
  • addr: 要转换的地址。
§返回

包含该地址的页码。如果地址位于页内,则返回该页页码;如果地址是页的起始,则返回该页页码; 如果地址是页的结束(例如 0x1000),则返回下一页的页码(例如 1)。

Source

fn start_addr(self) -> Self::TAddress

获取该页码对应的起始地址。

§返回

页的起始地址。

Source

fn end_addr(self) -> Self::TAddress

获取该页码对应的结束地址 (即下一页的起始地址)。

§返回

页的结束地址 (不包含在页内)。

Source

fn diff(self, other: Self) -> isize

计算两个页码之间的页数差。

§参数
  • other: 另一个页码。
§返回

两个页码之间的带符号整数差值。

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§