Enum ConstValue

Source
pub enum ConstValue {
    Null,
    Bool(bool),
    Int(i64),
    Str(&'static str),
    Float(F64),
    BitVector(usize, u64),
    Expr(&'static Expr),
}
Expand description

Represents a constant value that abstracts various literal types and expressions. This type encapsulates null, boolean, integer, string, floating-point, and expression values, each with respective formatting behavior for debugging and display purposes.

Variants§

§

Null

§

Bool(bool)

§

Int(i64)

§

Str(&'static str)

§

Float(F64)

§

BitVector(usize, u64)

§

Expr(&'static Expr)

Implementations§

Source§

impl ConstValue

Source

pub fn parse(pair: Pair<'_, Rule>) -> Result<Self, Error>

Parses a Pair of '_, Rule> into a ConstValue, returning a result with either the parsed constant or an error.

Source§

impl ConstValue

Source

pub fn ty(&self) -> Type

Returns the type corresponding to a constant value instance. This function maps each variant of the constant value to its respective type: integer, boolean, string, float, or null, with the expression variant treated as null.

Source

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

Returns an optional boolean extracted from the constant. This function checks if the constant holds a boolean value, and if so, returns it wrapped in Some; otherwise, it returns None.

Source

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

Returns the contained integer value if the input represents one. This function checks if the instance holds an integer and, if so, returns it inside an Option; otherwise, it yields None.

Source

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

Returns the contained integer value if the input represents one. This function checks if the instance holds an integer and, if so, returns it inside an Option; otherwise, it yields None.

Source

pub fn as_usize(&self) -> Option<usize>

Converts the integer variant of a constant value into a usize if applicable.

Returns an Option containing the usize representation when the constant is an integer; otherwise, it produces None.

Source

pub fn as_str(&self) -> Option<&'static str>

Returns an Option wrapping a static string reference if the constant holds a string value, or None otherwise. This method inspects the constant value and, when it represents a string, provides access to the underlying static string slice, enabling string-specific processing while gracefully handling non-string cases.

Source

pub fn as_float(&self) -> Option<F64>

Returns the floating-point value contained in the constant, if available.

Checks whether the constant is of the float variant, and if so, returns its underlying value wrapped in an Option; otherwise, it produces None.

Source

pub fn as_expr(&self) -> Option<&'static Expr>

Returns an optional static reference to an expression if the constant value represents an expression variant. This function checks whether the constant holds an expression and, if so, returns it wrapped in an option; otherwise, it returns None.

Source

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

Extracts a floating-point value from a constant if it represents a float. This function checks the internal variant and, when it holds a float, retrieves the underlying f64 value wrapped in an Option; otherwise, it returns None.

Source

pub fn is_null(&self) -> bool

Checks whether a constant value is null.

Determines if the constant value represents a null literal and returns true if so, otherwise false.

Source

pub fn value(&self, len: usize) -> Value

Converts a constant configuration into a collection value by replicating its underlying data over a specified length.

Matches on the constant variant to determine the appropriate data type and constructs a value by repeatedly inserting the constant element for each index in the specified range. For boolean, integer, string, and float constants, a collection of repeated elements is created, while attempting to convert a null or expression constant results in a panic.

Trait Implementations§

Source§

impl Clone for ConstValue

Source§

fn clone(&self) -> ConstValue

Returns a copy 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 ConstValue

Source§

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

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

impl Display for ConstValue

Source§

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

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

impl From<&'static Expr> for ConstValue

Source§

fn from(original: &'static Expr) -> ConstValue

Converts to this type from the input type.
Source§

impl From<&'static str> for ConstValue

Source§

fn from(original: &'static str) -> ConstValue

Converts to this type from the input type.
Source§

impl From<()> for ConstValue

Source§

fn from(original: ()) -> ConstValue

Converts to this type from the input type.
Source§

impl From<(usize, u64)> for ConstValue

Source§

fn from(original: (usize, u64)) -> ConstValue

Converts to this type from the input type.
Source§

impl From<F64> for ConstValue

Source§

fn from(original: F64) -> ConstValue

Converts to this type from the input type.
Source§

impl From<bool> for ConstValue

Source§

fn from(original: bool) -> ConstValue

Converts to this type from the input type.
Source§

impl From<i64> for ConstValue

Source§

fn from(original: i64) -> ConstValue

Converts to this type from the input type.
Source§

impl From<u32> for ConstValue

Source§

fn from(value: u32) -> Self

Converts an unsigned 32-bit integer into a constant integer value.

This function takes a u32 as input and returns the corresponding constant integer value by converting the input to a 64-bit integer internally.

Source§

impl From<usize> for ConstValue

Source§

fn from(value: usize) -> Self

Converts a usize value into a constant integer by casting it into a 64-bit integer.

Transforms a usize into its integer representation wrapped as a constant, enabling its use in contexts where a constant of integer type is expected.

Source§

impl Hash for ConstValue

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 ConstValue

Source§

fn eq(&self, other: &ConstValue) -> 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 ConstValue

Source§

impl Eq for ConstValue

Source§

impl StructuralPartialEq for ConstValue

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> AllocForAny<T> for T

Source§

fn galloc(self) -> &'static T

Provides a method to allocate an instance of T on the heap with a static lifetime.

This implementation of galloc takes ownership of the T instance and uses the alloc function to place it in a location with a static lifetime, presumably managing it in a way that ensures its persistence for the duration of the program. This can be particularly useful for scenarios where a static lifetime is required, such as when interfacing with systems or patterns that necessitate global state or long-lived data.

Source§

fn galloc_mut(self) -> &'static T

Provides a method that moves the instance and returns a reference to it allocated with a static lifetime.

This method utilizes alloc_mut to perform the allocation, likely involving allocating the resource in a manner that ensures it lives for the entire duration of the application. These semantics allow the user to safely assume that the reference will not expire during the program’s execution, making it suitable for long-lived data structures or operations that require such guarantees.

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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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<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> 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> 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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V