Skip to main content

Value

Enum Value 

Source
pub enum Value {
    Int(i64),
    Float(f64),
    Str(Rc<str>),
    Bool(bool),
    None,
    List(Rc<RefCell<Vec<Value>>>),
    Dict(Rc<RefCell<OrderedMap>>),
    Object(Rc<RefCell<ObjectData>>),
    Function(Rc<FunctionData>),
    Class(Rc<FunctionData>),
    BoundMethod(Rc<BoundMethodData>),
    Error(Rc<ErrorData>),
}
Expand description

A dynamically typed Doge value.

Variants§

§

Int(i64)

§

Float(f64)

§

Str(Rc<str>)

§

Bool(bool)

§

None

§

List(Rc<RefCell<Vec<Value>>>)

§

Dict(Rc<RefCell<OrderedMap>>)

§

Object(Rc<RefCell<ObjectData>>)

§

Function(Rc<FunctionData>)

§

Class(Rc<FunctionData>)

A class name used as a value: a callable that constructs an instance. It carries the same FunctionData a function value does — its fn_id is a constructor arm in the call_function dispatcher — so the whole indirect call path works unchanged, but it keeps a distinct identity (prints <class Name>, type Class) rather than masquerading as a function.

§

BoundMethod(Rc<BoundMethodData>)

A method bound to its receiver: such f = a.speak captures both the object (or List/Dict) and the method name, so calling f(...) dispatches exactly as a.speak(...) would. Name-based, like a direct method call — it carries no fn_id, so both engines route it back through their method dispatch. Prints <method Class.name>, type Method, equal only to the same method bound to the very same receiver.

§

Error(Rc<ErrorData>)

Implementations§

Source§

impl Value

Source

pub fn str(s: impl AsRef<str>) -> Value

Build a Str value from anything string-like.

Source

pub fn list(items: Vec<Value>) -> Value

Build a List value from a vector of elements.

Source

pub fn dict(entries: OrderedMap) -> Value

Build a Dict value from an insertion-ordered map.

Source

pub fn object(class_id: u32, class_name: &str) -> Value

Build a fresh instance of the class with class_id/class_name and no fields yet — the constructor fills them in with attr_set.

Source

pub fn error(kind: ErrorKind, message: &str, file: Rc<str>, line: u32) -> Value

Build a caught Error value from a raised error’s category, message, and the file/line it was raised at (err.type / err.message / err.file / err.line). Built by crate::error::error_value at each catch site.

Source

pub fn function(fn_id: u32, name: &str, captures: Vec<Cell>) -> Value

Build a first-class function value with fn_id, display name, and the captured captures cells (empty for a top-level function or a closure that captures nothing).

Source

pub fn bound_method(receiver: Value, method: &str) -> Value

Build a bound-method value capturing receiver and the method name. The receiver is any value method dispatch accepts — a many instance, or a List/Dict for its collection methods.

Source

pub fn class(fn_id: u32, name: &str) -> Value

Build a class value from the constructor arm fn_id and the class name. A class captures nothing — calling it always builds a fresh instance — so its captures are empty and two values for the same class compare equal.

Source

pub fn dict_from_pairs(pairs: Vec<(Value, Value)>) -> DogeResult

Build a Dict from key/value pairs evaluated by a dict literal. Every key must be a Str; anything else is a catchable type error. Pairs are inserted in order, so when a key repeats the last entry wins.

Source

pub fn truthy(&self) -> bool

Python-style truthiness: 0, 0.0, "", empty list/dict, none and false are falsy; everything else is truthy.

Source

pub fn type_name(&self) -> &'static str

The user-facing type name, used in error messages.

Source

pub fn describe(&self) -> String

The type name with the right English article, for error messages — "a Str", "an Int". Single source so every diagnostic reads the same.

Trait Implementations§

Source§

impl Clone for Value

Source§

fn clone(&self) -> Value

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 Value

Source§

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

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

impl Display for Value

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !RefUnwindSafe for Value

§

impl !Send for Value

§

impl !Sync for Value

§

impl !UnwindSafe for Value

§

impl Freeze for Value

§

impl Unpin for Value

§

impl UnsafeUnpin for Value

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.