Skip to main content

WordVal

Enum WordVal 

Source
pub enum WordVal {
    W32(Word32),
    W64(Word64),
}
Expand description

A fixed-width wrapping integer of either supported width — the single runtime carrier for Word32/Word64 across the interpreter, VM, and wire, so the rest of the system matches on one Word value rather than a variant per width. Binary ops require matching widths; a width mismatch is a type error the caller reports (the ops return None).

Variants§

§

W32(Word32)

A 32-bit wrapping value.

§

W64(Word64)

A 64-bit wrapping value.

Implementations§

Source§

impl WordVal

Source

pub const fn width(self) -> u32

Bit width, 32 or 64.

Source

pub const fn to_u64(self) -> u64

The value zero-extended to u64 — the canonical scalar form for display, hashing into other contexts, and the wire.

Source

pub const fn from_u64(width: u32, bits: u64) -> Option<Self>

Build a word of the given width from the low bits of bits (32 → truncates to u32).

Source

pub fn add(self, o: Self) -> Option<Self>

Wrapping addition; None on a width mismatch.

Source

pub fn sub(self, o: Self) -> Option<Self>

Wrapping subtraction; None on a width mismatch.

Source

pub fn mul(self, o: Self) -> Option<Self>

Wrapping multiplication; None on a width mismatch.

Source

pub fn bitand(self, o: Self) -> Option<Self>

Bitwise AND; None on a width mismatch.

Source

pub fn bitor(self, o: Self) -> Option<Self>

Bitwise OR; None on a width mismatch.

Source

pub fn bitxor(self, o: Self) -> Option<Self>

Bitwise XOR; None on a width mismatch.

Source

pub const fn not(self) -> Self

Bitwise complement (width-preserving).

Source

pub const fn shl(self, n: u32) -> Self

Logical left shift by n (width-preserving).

Source

pub const fn shr(self, n: u32) -> Self

Logical right shift by n (width-preserving).

Source

pub const fn rotl(self, n: u32) -> Self

Left rotation by n (width-preserving) — the bit-permutation crypto needs.

Source

pub const fn rotr(self, n: u32) -> Self

Right rotation by n (width-preserving).

Trait Implementations§

Source§

impl Clone for WordVal

Source§

fn clone(&self) -> WordVal

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for WordVal

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for WordVal

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

A word renders as its unsigned decimal value (no width suffix), so a Word32 holding 5 and an Int 5 print identically — the value is what Show reports.

Source§

impl Hash for WordVal

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for WordVal

Source§

fn eq(&self, other: &WordVal) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for WordVal

Source§

impl Eq for WordVal

Source§

impl StructuralPartialEq for WordVal

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.