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