[][src]Struct gluon_vm::thread::Thread

pub struct Thread { /* fields omitted */ }

Representation of the virtual machine

Methods

impl Thread[src]

pub fn new_thread(&self) -> Result<RootedThread>[src]

Spawns a new gluon thread with its own stack and heap but while still sharing the same global environment

pub fn root_thread(&self) -> RootedThread[src]

Roots self, extending the lifetime of this thread until at least the returned RootedThread is droppped

pub fn spawner(&self) -> Option<&(dyn Spawn + Send + Sync)>[src]

pub fn get_global<'vm, T>(&'vm self, name: &str) -> Result<T> where
    T: for<'value> Getable<'vm, 'value> + VmType
[src]

Retrieves the global called name.

Examples

Bind the (+) function in gluon's prelude standard library to an add function in rust



let vm = new_vm();

vm.run_expr::<OpaqueValue<&Thread, Hole>>("example", r#" import! std.int "#)
    .unwrap_or_else(|err| panic!("{}", err));
let mut add: FunctionRef<fn(i32, i32) -> i32> =
    vm.get_global("std.int.num.(+)").unwrap();
let result = add.call(1, 2);
assert_eq!(result, Ok(3));

Errors

if the global does not exist or it does not have the correct type.

pub fn get_global_type(&self, name: &str) -> Result<ArcType>[src]

pub fn find_type_info(&self, name: &str) -> Result<Alias<Symbol, ArcType>>[src]

Retrieves type information about the type name. Types inside records can be accessed using dot notation (std.prelude.Option)

pub fn get_type<T: ?Sized + Any>(&self) -> Option<ArcType>[src]

Returns the gluon type that was bound to T

pub fn register_type<T: ?Sized + Any>(
    &self,
    name: &str,
    args: &[&str]
) -> Result<ArcType>
[src]

Registers the type T as being a gluon type called name with generic arguments args

pub fn register_type_as(
    &self,
    name: Symbol,
    alias: Alias<Symbol, ArcType>,
    id: TypeId
) -> Result<ArcType>
[src]

pub fn cache_alias(&self, alias: Alias<Symbol, ArcType>) -> ArcType[src]

pub fn get_env<'b>(&'b self) -> VmEnvInstance<'b>[src]

Locks and retrieves the global environment of the vm

pub fn get_macros(&self) -> &MacroEnv[src]

Retrieves the macros defined for this vm

pub fn collect(&self)[src]

Runs a garbage collection.

pub fn push<'vm, T>(&'vm self, v: T) -> Result<()> where
    T: Pushable<'vm>, 
[src]

Pushes a value to the top of the stack

pub fn pop(&self)[src]

Removes the top value from the stack

pub fn allocated_memory(&self) -> usize[src]

pub fn set_memory_limit(&self, memory_limit: usize)[src]

pub fn interrupt(&self)[src]

pub fn interrupted(&self) -> bool[src]

pub fn current_context(&self) -> ActiveThread[src]

Trait Implementations

impl Debug for Thread[src]

impl<'de, 'gc> DeserializeState<'de, DeSeed<'gc>> for Thread[src]

impl Drop for Thread[src]

impl PartialEq<Thread> for Thread[src]

impl PostDeserialize for Thread[src]

impl SerializeState<SeSeed> for Thread[src]

impl<T> SerializeState<Thread> for Opaque<T, str> where
    T: AsValueRef, 
[src]

impl SerializeState<Thread> for Value[src]

impl SerializeState<Thread> for JsonString[src]

impl SerializeState<Thread> for JsonValue[src]

impl ThreadInternal for Thread[src]

fn root_value<'vm, T>(&'vm self, value: Variants) -> RootedValue<T> where
    T: VmRoot<'vm>, 
[src]

Roots a value

fn execute_io<'life0, 'life1, 'async_trait>(
    &'life0 self,
    value: Variants<'life1>
) -> Pin<Box<dyn Future<Output = Result<RootedValue<RootedThread>>> + Send + 'async_trait>> where
    'life0: 'async_trait,
    'life1: 'async_trait,
    Self: 'async_trait, 
[src]

Calls a module, allowed to to run IO expressions

fn call_function<'b>(
    &'b self,
    cx: &mut Context,
    context: OwnedContext<'b>,
    args: VmIndex
) -> Poll<Result<Option<OwnedContext<'b>>>>
[src]

Calls a function on the stack. When this function is called it is expected that the function exists at stack.len() - args - 1 and that the arguments are of the correct type

impl Trace for Thread[src]

impl Userdata for Thread[src]

impl<'a> VmRoot<'a> for &'a Thread[src]

impl<'a> VmRootInternal for &'a Thread[src]

impl VmType for Thread[src]

type Type = Self

A version of Self which implements Any allowing a TypeId to be retrieved

Auto Trait Implementations

impl !RefUnwindSafe for Thread

impl Send for Thread

impl Sync for Thread

impl Unpin for Thread

impl !UnwindSafe for Thread

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Any for T where
    T: Any

impl<'vm, T> AsyncPushable<'vm> for T where
    T: Pushable<'vm>, 
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<'_, T> Captures<'_> for T[src]

impl<Choices> CoproductSubsetter<CNil, HNil> for Choices[src]

type Remainder = Choices

impl<T> Downcast for T where
    T: Any
[src]

impl<T> DowncastArc for T where
    T: Downcast + Send + Sync
[src]

impl<T> DowncastSync for T where
    T: Send + Sync + Any
[src]

impl<T> From<T> for T[src]

impl<D, T> FromPtr<D> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U, I> LiftInto<U, I> for T where
    U: LiftFrom<T, I>, 
[src]

impl<'vm, T> Pushable<'vm> for T where
    T: Userdata
[src]

impl<Source> Sculptor<HNil, HNil> for Source[src]

type Remainder = Source

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.