Struct gluon_vm::thread::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]
impl RootedThread
pub fn new() -> RootedThread
[src]
pub fn new() -> RootedThread
Creates a new virtual machine with an empty global environment
pub fn with_global_state(global_state: GlobalVmState) -> RootedThread
[src]
pub fn with_global_state(global_state: GlobalVmState) -> RootedThread
pub fn into_raw(self) -> *const Thread
[src]
pub 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
pub unsafe fn from_raw(ptr: *const Thread) -> RootedThread
[src]
pub 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>
pub fn new_thread(&self) -> Result<RootedThread>
[src]
pub fn new_thread(&self) -> Result<RootedThread>
Spawns a new gluon thread with its own stack and heap but while still sharing the same global environment
pub fn root_thread(&self) -> RootedThread
[src]
pub fn root_thread(&self) -> RootedThread
Roots self
, extending the lifetime of this thread until at least the returned
RootedThread
is droppped
pub fn define_global<'vm, T>(&'vm self, name: &str, value: T) -> Result<()> where
T: Pushable<'vm> + VmType,
[src]
pub fn define_global<'vm, T>(&'vm self, name: &str, value: T) -> Result<()> where
T: Pushable<'vm> + VmType,
: 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_async::<i32>(&vm, "example", "factorial 5") .sync_or_error() .unwrap_or_else(|err| panic!("{}", err)); let expected = (120, Type::int()); assert_eq!(result, expected);
pub fn get_global<'vm, T>(&'vm self, name: &str) -> Result<T> where
T: Getable<'vm> + VmType,
[src]
pub fn get_global<'vm, T>(&'vm self, name: &str) -> Result<T> where
T: Getable<'vm> + VmType,
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.
pub fn find_type_info(&self, name: &str) -> Result<Alias<Symbol, ArcType>>
[src]
pub fn find_type_info(&self, name: &str) -> Result<Alias<Symbol, ArcType>>
Retrieves type information about the type name
. Types inside records can be accessed
using dot notation (std.prelude.Option)
pub fn get_type<T: ?Sized + Any>(&self) -> Option<ArcType>
[src]
pub fn get_type<T: ?Sized + Any>(&self) -> Option<ArcType>
Returns the gluon type that was bound to T
pub fn register_type<T: ?Sized + Any>(
&self,
name: &str,
args: &[&str]
) -> Result<ArcType>
[src]
pub fn register_type<T: ?Sized + Any>(
&self,
name: &str,
args: &[&str]
) -> Result<ArcType>
Registers the type T
as being a gluon type called name
with generic arguments args
pub fn register_type_as(
&self,
name: Symbol,
alias: Alias<Symbol, ArcType>,
id: TypeId
) -> Result<ArcType>
[src]
pub fn register_type_as(
&self,
name: Symbol,
alias: Alias<Symbol, ArcType>,
id: TypeId
) -> Result<ArcType>
pub fn get_env<'b>(&'b self) -> RwLockReadGuard<'b, VmEnv>
[src]
pub fn get_env<'b>(&'b self) -> RwLockReadGuard<'b, VmEnv>
Locks and retrieves the global environment of the vm
pub fn get_macros(&self) -> &MacroEnv
[src]
pub fn get_macros(&self) -> &MacroEnv
Retrieves the macros defined for this vm
pub fn get_event_loop(&self) -> Option<Remote>
[src]
pub fn get_event_loop(&self) -> Option<Remote>
pub fn collect(&self)
[src]
pub fn collect(&self)
Runs a garbage collection.
pub fn push<'vm, T>(&'vm self, v: T) -> Result<()> where
T: Pushable<'vm>,
[src]
pub fn push<'vm, T>(&'vm self, v: T) -> Result<()> where
T: Pushable<'vm>,
Pushes a value to the top of the stack
pub fn pop(&self)
[src]
pub fn pop(&self)
Removes the top value from the stack
pub fn set_memory_limit(&self, memory_limit: usize)
[src]
pub fn set_memory_limit(&self, memory_limit: usize)
pub fn interrupt(&self)
[src]
pub fn interrupt(&self)
pub fn interrupted(&self) -> bool
[src]
pub fn interrupted(&self) -> bool
Trait Implementations
impl VmType for RootedThread
[src]
impl VmType for RootedThread
type Type = Thread
A version of Self
which implements Any
allowing a TypeId
to be retrieved
fn make_forall_type(vm: &Thread) -> ArcType
[src]
fn make_forall_type(vm: &Thread) -> ArcType
fn make_type(vm: &Thread) -> ArcType
[src]
fn make_type(vm: &Thread) -> ArcType
Creates an gluon type which maps to Self
in rust
fn extra_args() -> VmIndex
[src]
fn extra_args() -> VmIndex
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
[src]
impl<'vm> Pushable<'vm> for RootedThread
fn push(self, _vm: &'vm Thread, context: &mut Context) -> Result<()>
[src]
fn push(self, _vm: &'vm Thread, context: &mut Context) -> Result<()>
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
fn status_push(self, vm: &'vm Thread, context: &mut Context) -> Status where
Self: Sized,
[src]
fn status_push(self, vm: &'vm Thread, context: &mut Context) -> Status where
Self: Sized,
unsafe fn marshal_unrooted(self, vm: &'vm Thread) -> Result<Value> where
Self: Sized,
[src]
unsafe fn marshal_unrooted(self, vm: &'vm Thread) -> Result<Value> where
Self: Sized,
fn marshal<T>(self, vm: &'vm Thread) -> Result<RootedValue<T>> where
Self: Sized,
T: VmRoot<'vm>,
[src]
fn marshal<T>(self, vm: &'vm Thread) -> Result<RootedValue<T>> where
Self: Sized,
T: VmRoot<'vm>,
impl<'vm> Getable<'vm> for RootedThread
[src]
impl<'vm> Getable<'vm> for RootedThread
fn from_value(_: &'vm Thread, value: Variants) -> Self
[src]
fn from_value(_: &'vm Thread, value: Variants) -> Self
unsafe fn from_value_unsafe(vm: &'vm Thread, value: Variants) -> Self
[src]
unsafe fn from_value_unsafe(vm: &'vm Thread, value: Variants) -> Self
unsafe version of from_value which allows references to the internal of GcPtr's to be extracted if value
is rooted Read more
impl Debug for RootedThread
[src]
impl Debug for RootedThread
fn fmt(&self, f: &mut Formatter) -> Result
[src]
fn fmt(&self, f: &mut Formatter) -> Result
Formats the value using the given formatter. Read more
impl Drop for RootedThread
[src]
impl Drop for RootedThread
impl Deref for RootedThread
[src]
impl Deref for RootedThread
type Target = Thread
The resulting type after dereferencing.
fn deref(&self) -> &Thread
[src]
fn deref(&self) -> &Thread
Dereferences the value.
impl Clone for RootedThread
[src]
impl Clone for RootedThread
fn clone(&self) -> RootedThread
[src]
fn clone(&self) -> RootedThread
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Traverseable for RootedThread
[src]
impl Traverseable for RootedThread
impl<'a> VmRoot<'a> for RootedThread
[src]
impl<'a> VmRoot<'a> for RootedThread
fn root(thread: &'a Thread) -> Self
[src]
fn root(thread: &'a Thread) -> Self
fn root_value_with_self(self, value: Value) -> RootedValue<Self>
[src]
fn root_value_with_self(self, value: Value) -> RootedValue<Self>
Roots a value
Auto Trait Implementations
impl Send for RootedThread
impl Send for RootedThread
impl Sync for RootedThread
impl Sync for RootedThread