pub struct Version(/* private fields */);Expand description
Represents the version of a slot, combining generation and state.
The lowest 2 bits represent the state:
- 0b00: Vacant
- 0b01: Reserved
- 0b11: Occupied
The upper 30 bits represent the generation.
表示 slot 的版本,结合了代数(generation)和状态。
最低 2 位表示状态:
- 0b00: 空闲 (Vacant)
- 0b01: 预留 (Reserved)
- 0b11: 占用 (Occupied)
高 30 位表示代数。
Implementations§
Source§impl Version
impl Version
Sourcepub fn new(generation: Generation, state: u32) -> Self
pub fn new(generation: Generation, state: u32) -> Self
Create a new Version with specified generation and state
使用指定的代数和状态创建一个新 Version
Sourcepub fn generation(&self) -> Generation
pub fn generation(&self) -> Generation
Get the generation part
获取代数部分
Sourcepub fn is_reserved(&self) -> bool
pub fn is_reserved(&self) -> bool
Check if logic state is Reserved (0b01)
检查逻辑状态是否为预留 (0b01)
Sourcepub fn is_occupied(&self) -> bool
pub fn is_occupied(&self) -> bool
Check if logic state is Occupied (0b11)
检查逻辑状态是否被占用 (0b11)
Sourcepub fn vacant_to_reserved(&mut self)
pub fn vacant_to_reserved(&mut self)
Transition: Vacant -> Reserved
Increases value by 1 (0bXX00 -> 0bXX01)
状态转换:空闲 -> 预留
值增加 1 (0bXX00 -> 0bXX01)
Sourcepub fn reserved_to_occupied(&mut self)
pub fn reserved_to_occupied(&mut self)
Transition: Reserved -> Occupied
Increases value by 2 (0bXX01 -> 0bXX11)
状态转换:预留 -> 占用
值增加 2 (0bXX01 -> 0bXX11)
Sourcepub fn occupied_to_vacant(&mut self)
pub fn occupied_to_vacant(&mut self)
Transition: Occupied -> Vacant (Next Generation)
Increases value by 1 (0bXX11 -> 0bYY00), handles generation wrap
状态转换:占用 -> 空闲(下一代)
值增加 1 (0bXX11 -> 0bYY00),处理代数回绕
Sourcepub fn reserved_to_vacant(&mut self)
pub fn reserved_to_vacant(&mut self)
Transition: Reserved -> Vacant (Next Generation)
Used when releasing a handle. Increases value by 3 (0bXX01 -> 0bYY00), handles generation wrap
状态转换:预留 -> 空闲(下一代)
用于释放 handle 时。 值增加 3 (0bXX01 -> 0bYY00),处理代数回绕