Enum netsblox_vm::runtime::Value
source · pub enum Value<'gc, C: CustomTypes<S>, S: System<C>> {
Bool(bool),
Number(Number),
String(Rc<String>),
Image(Rc<Vec<u8>>),
Audio(Rc<Vec<u8>>),
Native(Rc<C::NativeValue>),
List(Gc<'gc, RefLock<VecDeque<Value<'gc, C, S>>>>),
Closure(Gc<'gc, RefLock<Closure<'gc, C, S>>>),
Entity(Gc<'gc, RefLock<Entity<'gc, C, S>>>),
}Expand description
Any primitive value.
Variants§
Bool(bool)
A primitive boolean value.
Number(Number)
A primitive numeric value. Snap! and NetsBlox use 64-bit floating point values for all numbers.
String(Rc<String>)
A primitive string value, which is an immutable reference type.
Image(Rc<Vec<u8>>)
An image stored as a binary buffer.
Audio(Rc<Vec<u8>>)
An audio clip stored as as a binary buffer.
Native(Rc<C::NativeValue>)
A reference to a native object handle produced by System.
List(Gc<'gc, RefLock<VecDeque<Value<'gc, C, S>>>>)
A primitive list type, which is a mutable reference type.
Closure(Gc<'gc, RefLock<Closure<'gc, C, S>>>)
A closure/lambda function. This contains information about the closure’s bytecode location, parameters, and captures from the parent scope.
Entity(Gc<'gc, RefLock<Entity<'gc, C, S>>>)
A reference to an Entity in the environment.
Implementations§
source§impl<'gc, C: CustomTypes<S>, S: System<C>> Value<'gc, C, S>
impl<'gc, C: CustomTypes<S>, S: System<C>> Value<'gc, C, S>
sourcepub fn to_json(&self) -> Result<Json, ToJsonError<C, S>>
pub fn to_json(&self) -> Result<Json, ToJsonError<C, S>>
sourcepub fn identity(&self) -> Identity<'gc, C, S>
pub fn identity(&self) -> Identity<'gc, C, S>
Returns a value representing this object that implements Eq such that
two values are equal if and only if they are references to the same object.
This is primarily useful for testing for reference equality of lists.
sourcepub fn to_bool(&self) -> Result<bool, ConversionError<C, S>>
pub fn to_bool(&self) -> Result<bool, ConversionError<C, S>>
Attempts to interpret this value as a bool.
sourcepub fn to_number(&self) -> Result<Number, ConversionError<C, S>>
pub fn to_number(&self) -> Result<Number, ConversionError<C, S>>
Attempts to interpret this value as a number.
sourcepub fn to_string(&self) -> Result<Cow<'_, str>, ConversionError<C, S>>
pub fn to_string(&self) -> Result<Cow<'_, str>, ConversionError<C, S>>
Attempts to interpret this value as a string.
sourcepub fn as_image(&self) -> Result<&Rc<Vec<u8>>, ConversionError<C, S>>
pub fn as_image(&self) -> Result<&Rc<Vec<u8>>, ConversionError<C, S>>
Attempts to interpret this value as an image.
sourcepub fn as_list(
&self
) -> Result<Gc<'gc, RefLock<VecDeque<Value<'gc, C, S>>>>, ConversionError<C, S>>
pub fn as_list( &self ) -> Result<Gc<'gc, RefLock<VecDeque<Value<'gc, C, S>>>>, ConversionError<C, S>>
Attempts to interpret this value as a list.
sourcepub fn as_closure(
&self
) -> Result<Gc<'gc, RefLock<Closure<'gc, C, S>>>, ConversionError<C, S>>
pub fn as_closure( &self ) -> Result<Gc<'gc, RefLock<Closure<'gc, C, S>>>, ConversionError<C, S>>
Attempts to interpret this value as a closure.
Trait Implementations§
source§impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Value<'gc, C, S>where
bool: 'static,
Number: 'static,
Rc<String>: 'static,
Rc<Vec<u8>>: 'static,
Rc<C::NativeValue>: 'static,
impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Value<'gc, C, S>where bool: 'static, Number: 'static, Rc<String>: 'static, Rc<Vec<u8>>: 'static, Rc<C::NativeValue>: 'static,
source§fn needs_trace() -> bool
fn needs_trace() -> bool
Gc pointer and trace is unnecessary
to call, you may implement this method and return false. The default implementation returns
true, signaling that Collect::trace must be called.source§fn trace(&self, cc: &Collection)
fn trace(&self, cc: &Collection)
Collect::trace on all held Gc pointers. If this type holds inner types that
implement Collect, a valid implementation would simply call Collect::trace on all the
held values to ensure this.