pub struct StateID(/* private fields */);
Expand description
The identifier of a finite automaton state, represented by a
SmallIndex
.
Most regex engines in this crate are built on top of finite automata. Each
state in a finite automaton defines transitions from its state to another.
Those transitions point to other states via their identifiers, i.e., a
StateID
. Since finite automata tend to contain many transitions, it is
much more memory efficient to define state IDs as small indices.
See the SmallIndex
type for more information about what it means for
a state ID to be a “small index.”
Implementations§
Source§impl StateID
impl StateID
Sourcepub const LIMIT: usize = 2_147_483_647usize
pub const LIMIT: usize = 2_147_483_647usize
The total number of values that can be represented.
Sourcepub fn new(value: usize) -> Result<StateID, StateIDError>
pub fn new(value: usize) -> Result<StateID, StateIDError>
Create a new value that is represented by a “small index.”
If the given index exceeds the maximum allowed value, then this returns an error.
Sourcepub const fn new_unchecked(value: usize) -> StateID
pub const fn new_unchecked(value: usize) -> StateID
Create a new value without checking whether the given argument exceeds the maximum.
Using this routine with an invalid value will result in unspecified behavior, but not undefined behavior. In particular, an invalid ID value is likely to cause panics or possibly even silent logical errors.
Callers must never rely on this type to be within a certain range for memory safety.
Sourcepub const fn as_usize(&self) -> usize
pub const fn as_usize(&self) -> usize
Return the internal value as a usize
. This is guaranteed to
never overflow usize
.
Sourcepub const fn as_u64(&self) -> u64
pub const fn as_u64(&self) -> u64
Return the internal value as a u64
. This is guaranteed to
never overflow.
Sourcepub const fn as_u32(&self) -> u32
pub const fn as_u32(&self) -> u32
Return the internal value as a u32
. This is guaranteed to
never overflow u32
.
Sourcepub const fn as_i32(&self) -> i32
pub const fn as_i32(&self) -> i32
Return the internal value as a i32. This is guaranteed to never overflow an
i32`.
Sourcepub fn one_more(&self) -> usize
pub fn one_more(&self) -> usize
Returns one more than this value as a usize.
Since values represented by a “small index” have constraints
on their maximum value, adding 1
to it will always fit in a
usize
, u32
and a i32
.
Sourcepub fn from_ne_bytes(bytes: [u8; 4]) -> Result<StateID, StateIDError>
pub fn from_ne_bytes(bytes: [u8; 4]) -> Result<StateID, StateIDError>
Decode this value from the bytes given using the native endian byte order for the current target.
If the decoded integer is not representable as a small index for the current target, then this returns an error.
Sourcepub fn from_ne_bytes_unchecked(bytes: [u8; 4]) -> StateID
pub fn from_ne_bytes_unchecked(bytes: [u8; 4]) -> StateID
Decode this value from the bytes given using the native endian byte order for the current target.
This is analogous to new_unchecked
in that is does not check
whether the decoded integer is representable as a small index.
Sourcepub fn to_ne_bytes(&self) -> [u8; 4]
pub fn to_ne_bytes(&self) -> [u8; 4]
Return the underlying integer as raw bytes in native endian format.
Trait Implementations§
Source§impl Ord for StateID
impl Ord for StateID
Source§impl PartialOrd for StateID
impl PartialOrd for StateID
impl Copy for StateID
impl Eq for StateID
impl StructuralPartialEq for StateID
Auto Trait Implementations§
impl Freeze for StateID
impl RefUnwindSafe for StateID
impl Send for StateID
impl Sync for StateID
impl Unpin for StateID
impl UnwindSafe for StateID
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 4 bytes