Skip to main content

TypedScalar

Struct TypedScalar 

Source
#[repr(C)]
pub struct TypedScalar { pub kind: ScalarKind, pub payload_lo: u64, pub payload_hi: u64, }
Expand description

Type-preserving scalar value for VM↔JIT boundary exchange.

Carries an explicit type discriminator (kind) so that integer 42 and float 42.0 are distinguishable even when their f64 bit patterns would be identical.

payload_hi is zero for all types smaller than 128 bits.

Fields§

§kind: ScalarKind§payload_lo: u64§payload_hi: u64

Second 64-bit word — only used for I128/U128. Zero otherwise.

Implementations§

Source§

impl TypedScalar

Source

pub fn i64(v: i64) -> Self

Create an I64 scalar.

Source

pub fn f64(v: f64) -> Self

Create an F64 scalar from a value.

Source

pub fn f64_from_bits(bits: u64) -> Self

Create an F64 scalar from raw bits.

Source

pub fn bool(v: bool) -> Self

Create a Bool scalar.

Source

pub fn none() -> Self

Create a None scalar.

Source

pub fn unit() -> Self

Create a Unit scalar.

Source

pub fn i8(v: i8) -> Self

Create an I8 scalar.

Source

pub fn u8(v: u8) -> Self

Create a U8 scalar.

Source

pub fn i16(v: i16) -> Self

Create an I16 scalar.

Source

pub fn u16(v: u16) -> Self

Create a U16 scalar.

Source

pub fn i32(v: i32) -> Self

Create an I32 scalar.

Source

pub fn u32(v: u32) -> Self

Create a U32 scalar.

Source

pub fn u64(v: u64) -> Self

Create a U64 scalar.

Source

pub fn f32(v: f32) -> Self

Create an F32 scalar.

Source

pub fn as_i64(&self) -> Option<i64>

Extract as i64 (only valid if kind is an integer type). Returns None for U64 values > i64::MAX (use as_u64() instead).

Source

pub fn as_u64(&self) -> Option<u64>

Extract as u64 (only valid if kind is an unsigned integer type).

Source

pub fn as_f64(&self) -> Option<f64>

Extract as f64 (only valid if kind is F64 or F32).

Source

pub fn as_bool(&self) -> Option<bool>

Extract as bool (only valid if kind is Bool).

Source

pub fn to_f64_lossy(&self) -> Option<f64>

Interpret this scalar as an f64 regardless of kind (for numeric comparison). Integer kinds are cast; float kinds use their stored value; non-numeric returns None.

Trait Implementations§

Source§

impl Clone for TypedScalar

Source§

fn clone(&self) -> TypedScalar

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TypedScalar

Source§

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

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

impl PartialEq for TypedScalar

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 TypedScalar

Source§

impl StructuralPartialEq for TypedScalar

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, 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.
Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,