Skip to main content

Bits128

Struct Bits128 

Source
pub struct Bits128(pub [u64; 2]);
Expand description

A value flowing through the DAG at runtime.

This is the universal runtime representation for all Polydat data. Every node input and output is a Value. The variant determines the data type:

VariantRust typePolydat DSL typeUsage
U64u64u64Cycle counters, hashes, IDs, bitwise ops
F64f64f64Floating point math, distributions, noise
BoolboolboolConditions, flags
StrStringStringNames, formatted output, templates
BytesVec<u8>bytesRaw binary data, digests
Jsonserde_json::ValuejsonStructured data, vectors
ExtBox<dyn ReflectedValue>adapter-specificCQL UUIDs, timestamps, etc.
NoneUninitialized buffer slot (never flows through wiring)

The assembly phase validates type correctness at compile time. Runtime code can safely use as_u64(), as_f64(), etc. — a type mismatch is a compiler bug, not a user error.

Ext enables adapter-contributed types (e.g., uuid::Uuid from the CQL adapter) to flow through the DAG without the kernel knowing the concrete type. Any consumer can display, serialize, or inspect an Ext value via ReflectedValue. The producing adapter can downcast via as_any(). Two-limb carrier for 128-bit integers inside Value.

Limbs are little-endian ([lo, hi]). Using [u64; 2] instead of a raw u128/i128 field keeps Value’s alignment at 8 and its size inside the 40-byte buffer-slot envelope; reassembly is two register moves.

Tuple Fields§

§0: [u64; 2]

Implementations§

Source§

impl Bits128

Source

pub fn from_u128(v: u128) -> Self

The two-word form of a u128, low word first.

Source

pub fn from_i128(v: i128) -> Self

The two-word form of an i128, low word first.

Source

pub fn as_u128(self) -> u128

The word as a u128.

Source

pub fn as_i128(self) -> i128

The word as an i128.

Source

pub fn to_le_bytes(self) -> [u8; 16]

The word’s sixteen bytes, little-endian.

Source

pub fn from_le_bytes(b: [u8; 16]) -> Self

A word from sixteen little-endian bytes.

Source§

impl Bits128

Source

pub fn lanes_i8(self) -> [i8; 16]

The word as lanes of one element type, lane 0 at the lowest address.

Source

pub fn from_lanes_i8(lanes: [i8; 16]) -> Self

A word from lanes of one element type, lane 0 at the lowest address.

Source§

impl Bits128

Source

pub fn lanes_i16(self) -> [i16; 8]

The word as lanes of one element type, lane 0 at the lowest address.

Source

pub fn from_lanes_i16(lanes: [i16; 8]) -> Self

A word from lanes of one element type, lane 0 at the lowest address.

Source§

impl Bits128

Source

pub fn lanes_i32(self) -> [i32; 4]

The word as lanes of one element type, lane 0 at the lowest address.

Source

pub fn from_lanes_i32(lanes: [i32; 4]) -> Self

A word from lanes of one element type, lane 0 at the lowest address.

Source§

impl Bits128

Source

pub fn lanes_i64(self) -> [i64; 2]

The word as lanes of one element type, lane 0 at the lowest address.

Source

pub fn from_lanes_i64(lanes: [i64; 2]) -> Self

A word from lanes of one element type, lane 0 at the lowest address.

Source§

impl Bits128

Source

pub fn lanes_f32(self) -> [f32; 4]

The word as lanes of one element type, lane 0 at the lowest address.

Source

pub fn from_lanes_f32(lanes: [f32; 4]) -> Self

A word from lanes of one element type, lane 0 at the lowest address.

Source§

impl Bits128

Source

pub fn lanes_f64(self) -> [f64; 2]

The word as lanes of one element type, lane 0 at the lowest address.

Source

pub fn from_lanes_f64(lanes: [f64; 2]) -> Self

A word from lanes of one element type, lane 0 at the lowest address.

Source§

impl Bits128

Source

pub fn lanes_f16(self) -> [f16; 8]

f16 lanes go through the bit-pattern codec (half::f16 has no to_le_bytes).

Source

pub fn from_lanes_f16(lanes: [f16; 8]) -> Self

A word from eight f16 lanes, through the bit-pattern codec.

Trait Implementations§

Source§

impl Clone for Bits128

Source§

fn clone(&self) -> Bits128

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 Copy for Bits128

Source§

impl Debug for Bits128

Source§

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

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

impl Eq for Bits128

Source§

impl Hash for Bits128

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 Bits128

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Bits128

Source§

impl Wire for Bits128

Source§

const PORT: PortType = PortType::Reg128

Static port type for the DSL type-checker.
Source§

const JIT: Option<JitType> = None

JIT carrier classification. Some(_) means the type rides the Phase-2 u64 buffer; None means typed-eval only.
Source§

fn extract(v: &Value) -> Self

Pull a typed value out of a Value wire.
Source§

fn inject(self) -> Value

Push a typed value back into the Value outputs stream.
Source§

const RESOLVER: Option<DefaultResolver> = None

SRD-53 §“Source-string call-site sugar” — auto-resolver for Str-typed upstream wires feeding this slot. None (the default) disables auto-promotion; the workload must supply the wire’s actual port type directly. Set via the Resolved<R, T> marker wrapper.
Source§

const WIRE_COST: WireCost = crate::ast::WireCost::Data

SRD-15 §“WireCost::Config” — cost class for this wire. Defaults to WireCost::Data (cheap per-cycle input). Set to WireCost::Config via the Config<T> marker wrapper to signal that the wire is rarely-changing and the compiler should warn on cycle-time binding.

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more