Struct gluon::RootedThread [] [src]

pub struct RootedThread(_);

An instance of Thread which is rooted. See the Thread type for documentation on interacting with the type.

Methods

impl RootedThread
[src]

[src]

Creates a new virtual machine with an empty global environment

[src]

Converts a RootedThread into a raw pointer allowing to be passed through a C api. The reference count for the thread is not modified

[src]

Converts a raw pointer into a RootedThread. The reference count for the thread is not modified so it is up to the caller to ensure that the count is correct.

Methods from Deref<Target = Thread>

[src]

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

[src]

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

[src]

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

Examples

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_async::<i32>(&vm, "example", "factorial 5")
    .sync_or_error()
    .unwrap();
let expected = (120, Type::int());

assert_eq!(result, expected);

[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();
Compiler::new()
    .run_expr_async::<OpaqueValue<&Thread, Hole>>(&vm, "example",
        r#" import! "std/int.glu" "#)
    .sync_or_error()
    .unwrap();
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.

[src]

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

[src]

Returns the gluon type that was bound to T

[src]

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

[src]

Locks and retrieves the global environment of the vm

[src]

Retrieves the macros defined for this vm

[src]

Runs a garbage collection.

[src]

Pushes a value to the top of the stack

[src]

Removes the top value from the stack

[src]

Trait Implementations

impl Clone for RootedThread
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl Traverseable for RootedThread
[src]

[src]

impl Drop for RootedThread
[src]

[src]

impl VmType for RootedThread
[src]

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

[src]

Creates an gluon type which maps to Self in rust

[src]

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 Debug for RootedThread
[src]

[src]

Formats the value using the given formatter.

impl Deref for RootedThread
[src]

[src]

impl<'a> VmRoot<'a> for RootedThread
[src]

[src]

impl<'vm> Pushable<'vm> for RootedThread
[src]

[src]