[][src]Struct gluon::RootedThread

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]

Creates a new virtual machine with an empty global environment

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

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>

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.

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::<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.

Examples

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



let vm = new_vm();

Compiler::new()
    .run_expr::<OpaqueValue<&Thread, Hole>>(&vm, "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.

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Drop for RootedThread
[src]

Executes the destructor for this type. Read more

impl Debug for RootedThread
[src]

Formats the value using the given formatter. Read more

impl SerializeState<SeSeed> for RootedThread
[src]

Placeholder

impl Deref for RootedThread
[src]

The resulting type after dereferencing.

Dereferences the value.

impl<'vm, 'value> Getable<'vm, 'value> for RootedThread
[src]

impl VmType for RootedThread
[src]

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

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

Roots a value

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

Pushes self to stack. If the call is successful a single element should have been added to the stack and Ok(()) should be returned. If the call is unsuccessful Status:Error should be returned and the stack should be left intact Read more

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

Deserializes Self using seed and the deserializer

Auto Trait Implementations

impl Send for RootedThread

impl Sync for RootedThread

Blanket Implementations

impl<T> From for T
[src]

Performs the conversion.

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

Performs the conversion.

impl<T> ToOwned for T where
    T: Clone
[src]

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

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

Immutably borrows from an owned value. Read more

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

Mutably borrows from an owned value. Read more

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

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

🔬 This is a nightly-only experimental API. (try_from)

Performs the conversion.

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

🔬 This is a nightly-only experimental API. (get_type_id)

this method will likely be replaced by an associated static

Gets the TypeId of self. Read more

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

impl<T> CloneAny for T where
    T: Clone + Any
[src]

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

Pushes self to stack. If the call is successful a single element should have been added to the stack and Ok(()) should be returned. If the call is unsuccessful Status:Error should be returned and the stack should be left intact. Read more

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

Pushes self to stack. If the call is successful a single element should have been added to the stack and Ok(()) should be returned. If the call is unsuccessful Status:Error should be returned and the stack should be left intact Read more

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

impl<Choices> CoproductSubsetter for Choices
[src]

Extract a subset of the possible types in a coproduct (or get the remaining possibilities) Read more

impl<Source> Sculptor for Source
[src]

Consumes the current HList and returns an HList with the requested shape. Read more

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

Performs the indexed conversion.

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

impl<T> Erased for T
[src]