Enum Value

Source
pub enum Value<'gc, C: CustomTypes<S>, S: System<C>> {
    Bool(bool),
    Number(Number),
    Text(Text),
    Image(Rc<Image>),
    Audio(Rc<Audio>),
    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.

§

Text(Text)

A primitive text value, which is an immutable reference type.

§

Image(Rc<Image>)

An image stored as a binary buffer.

§

Audio(Rc<Audio>)

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>

Source

pub fn to_simple(&self) -> Result<SimpleValue, ToSimpleError<C, S>>

Converts this Value into a SimpleValue for use outside the VM.

Source

pub fn from_simple(mc: &Mutation<'gc>, value: SimpleValue) -> Self

Converts a SimpleValue into a Value for use inside the VM.

Examples found in repository?
examples/basic.rs (line 70)
69    fn from_intermediate<'gc>(mc: &Mutation<'gc>, value: Self::Intermediate) -> Value<'gc, C, StdSystem<C>> {
70        Value::from_simple(mc, value)
71    }
Source

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.

Source

pub fn as_bool(&self) -> Result<bool, ConversionError<C, S>>

Attempts to interpret this value as a bool.

Source

pub fn as_number(&self) -> Result<Number, ConversionError<C, S>>

Attempts to interpret this value as a number.

Source

pub fn as_text(&self) -> Result<Text, ConversionError<C, S>>

Attempts to interpret this value as a string.

Source

pub fn as_image(&self) -> Result<&Rc<Image>, ConversionError<C, S>>

Attempts to interpret this value as an image.

Source

pub fn as_audio(&self) -> Result<&Rc<Audio>, ConversionError<C, S>>

Attempts to interpret this value as an audio clip.

Source

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.

Source

pub fn as_closure( &self, ) -> Result<Gc<'gc, RefLock<Closure<'gc, C, S>>>, ConversionError<C, S>>

Attempts to interpret this value as a closure.

Source

pub fn as_entity( &self, ) -> Result<Gc<'gc, RefLock<Entity<'gc, C, S>>>, ConversionError<C, S>>

Attempts to interpret this value as an entity.

Trait Implementations§

Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> Clone for Value<'gc, C, S>
where bool: Clone, Number: Clone, Text: Clone, Rc<Image>: Clone, Rc<Audio>: Clone, Rc<C::NativeValue>: Clone, Gc<'gc, RefLock<VecDeque<Value<'gc, C, S>>>>: Clone, Gc<'gc, RefLock<Closure<'gc, C, S>>>: Clone, Gc<'gc, RefLock<Entity<'gc, C, S>>>: Clone,

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
Source§

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

Performs copy-assignment from source. Read more
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> Collect for Value<'gc, C, S>
where bool: 'static, Number: 'static, Text: 'static, Rc<Image>: 'static, Rc<Audio>: 'static, Rc<C::NativeValue>: 'static,

Source§

fn needs_trace() -> bool

As an optimization, if this type can never hold a 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)

Must call 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.
Source§

impl<C: CustomTypes<S>, S: System<C>> Debug for Value<'_, C, S>

Source§

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

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

impl<C: CustomTypes<S>, S: System<C>> Display for Value<'_, C, S>

Source§

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

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

impl<'gc, C: CustomTypes<S>, S: System<C>> From<CheckedFloat<f64, NumberChecker>> for Value<'gc, C, S>

Source§

fn from(v: Number) -> Self

Converts to this type from the input type.
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> From<Gc<'gc, RefLock<Closure<'gc, C, S>>>> for Value<'gc, C, S>

Source§

fn from(v: Gc<'gc, RefLock<Closure<'gc, C, S>>>) -> Self

Converts to this type from the input type.
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> From<Gc<'gc, RefLock<Entity<'gc, C, S>>>> for Value<'gc, C, S>

Source§

fn from(v: Gc<'gc, RefLock<Entity<'gc, C, S>>>) -> Self

Converts to this type from the input type.
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> From<Gc<'gc, RefLock<VecDeque<Value<'gc, C, S>>>>> for Value<'gc, C, S>

Source§

fn from(v: Gc<'gc, RefLock<VecDeque<Value<'gc, C, S>>>>) -> Self

Converts to this type from the input type.
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> From<OurString<RcBytes, INLINE_SIZE>> for Value<'gc, C, S>

Source§

fn from(v: Text) -> Self

Converts to this type from the input type.
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> From<bool> for Value<'gc, C, S>

Source§

fn from(v: bool) -> Self

Converts to this type from the input type.
Source§

impl<'gc, C: CustomTypes<S>, S: System<C>> GetType for Value<'gc, C, S>

Source§

type Output = Type<C, S>

Source§

fn get_type(&self) -> Self::Output

Gets the type of value that is stored.

Auto Trait Implementations§

§

impl<'gc, C, S> Freeze for Value<'gc, C, S>

§

impl<'gc, C, S> !RefUnwindSafe for Value<'gc, C, S>

§

impl<'gc, C, S> !Send for Value<'gc, C, S>

§

impl<'gc, C, S> !Sync for Value<'gc, C, S>

§

impl<'gc, C, S> Unpin for Value<'gc, C, S>

§

impl<'gc, C, S> !UnwindSafe for Value<'gc, C, S>

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> 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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: 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: 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToCompactString for T
where T: Display,

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> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

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

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

impl<T> ErasedDestructor for T
where T: 'static,