Struct gluon::Thread[][src]

pub struct Thread { /* fields omitted */ }

Representation of the virtual machine


impl Thread

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

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

Deprecated since 0.7.0

: Use gluon::import::add_extern_module instead

Creates a new global value at name. Fails if a global called name already exists.


Load the factorial rust function into gluon and evaluate factorial 5

fn factorial(x: i32) -> i32 {
    if x <= 1 { 1 } else { x * factorial(x - 1) }

let vm = new_vm();

vm.define_global("factorial", primitive!(1, factorial)).unwrap();

let result = Compiler::new()
    .run_expr::<i32>(&vm, "example", "factorial 5")
    .unwrap_or_else(|err| panic!("{}", err));
let expected = (120, Type::int());

assert_eq!(result, expected);

Retrieves the global called name.


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

let vm = new_vm();

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


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

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

Returns the gluon type that was bound to T

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

Locks and retrieves the global environment of the vm

Retrieves the macros defined for this vm

Runs a garbage collection.

Pushes a value to the top of the stack

Removes the top value from the stack

Trait Implementations

impl Userdata for Thread

impl VmType for Thread

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

Creates an gluon type which maps to Self in rust

How many extra arguments a function returning this type requires. Used for abstract types which when used in return position should act like they still need more arguments before they are called Read more

impl<'a> VmRoot<'a> for &'a Thread

Roots a value

impl Traverseable for Thread

impl ThreadInternal for Thread

Locks and retrives this threads stack

Roots a value

Evaluates a zero argument function (a thunk)

Calls a module, allowed to to run IO expressions

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

owner is theread that owns value which is not necessarily the same as self

Important traits for Box<W>

Important traits for Box<W>

impl Debug for Thread

Formats the value using the given formatter. Read more

impl<'de> DeserializeState<'de, DeSeed> for Thread

Deserializes Self using seed and the deserializer

impl SerializeState<Thread> for Value


impl SerializeState<Thread> for JsonValue


impl SerializeState<SeSeed> for Thread


impl SerializeState<Thread> for JsonString


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


impl PartialEq<Thread> for Thread

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

Auto Trait Implementations

impl Send for Thread

impl Sync for Thread