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

fn new() -> RootedThread

Creates a new virtual machine with an empty global environment

fn into_raw(self) -> *const Thread

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

unsafe fn from_raw(ptr: *const Thread) -> RootedThread

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>

fn new_thread(&self) -> RootedThread

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

fn define_global<'vm, T>(&'vm self, name: &str, value: T) -> Result<(), Error> where T: Pushable<'vm> + VMType

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

fn get_global<'vm, T>(&'vm self, name: &str) -> Result<T, Error> where T: Getable<'vm> + VMType

Retrieves the global called name. Fails if the global does not exist or it does not have the correct type.

fn find_type_info(&self, name: &str) -> Result<Alias<Symbol, ArcType<Symbol>>, Error>

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

fn get_type<T>(&self) -> ArcType<Symbol> where T: Any + ?Sized

Returns the gluon type that was bound to T

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

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

fn get_env(&'b self) -> RwLockReadGuard<'b, VMEnv>

Locks and retrieves the global environment of the vm

fn get_stack(&self) -> MutexGuard<Stack>

Locks and retrives this threads stack

fn get_macros(&self) -> &MacroEnv

Retrieves the macros defined for this vm

fn collect(&self)

Runs a garbage collection.

fn push<'vm, T>(&'vm self, v: T) where T: Pushable<'vm>

Pushes a value to the top of the stack

fn pop(&self)

Removes the top value from the stack

Trait Implementations

impl VMType for RootedThread

type Type = RootedThread

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

fn make_type(vm: &Thread) -> ArcType<Symbol>

Creates an gluon type which maps to Self in rust

fn extra_args() -> u32

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<'vm> Pushable<'vm> for RootedThread

fn push(self, _vm: &'vm Thread, stack: &mut Stack) -> Status

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

impl Drop for RootedThread

fn drop(&mut self)

impl Deref for RootedThread

type Target = Thread

fn deref(&self) -> &Thread

impl Clone for RootedThread

fn clone(&self) -> RootedThread

Returns a copy of the value. Read more

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

Performs copy-assignment from source. Read more

impl Traverseable for RootedThread

fn traverse(&self, gc: &mut Gc)