[−][src]Struct gluon_vm::thread::RootedThread
An instance of Thread
which is rooted. See the Thread
type for documentation on interacting
with the type.
Implementations
impl RootedThread
[src]
pub fn new() -> RootedThread
[src]
Creates a new virtual machine with an empty global environment
pub fn with_global_state(global_state: GlobalVmState) -> RootedThread
[src]
pub fn into_raw(self) -> *const Thread
[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
pub unsafe fn from_raw(ptr: *const Thread) -> RootedThread
[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>
pub fn new_thread(&self) -> Result<RootedThread>
[src]
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]
Roots self
, extending the lifetime of this thread until at least the returned
RootedThread
is droppped
pub fn spawner(&self) -> Option<&(dyn Spawn + Send + Sync)>
[src]
pub fn get_global<'vm, T>(&'vm self, name: &str) -> Result<T> where
T: for<'value> Getable<'vm, 'value> + VmType,
[src]
T: for<'value> Getable<'vm, 'value> + 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_async().await; vm.run_expr_async::<OpaqueValue<&Thread, Hole>>("example", r#" import! std.int "#) .await .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_async(1, 2).await; assert_eq!(result, Ok(3));
Errors
if the global does not exist or it does not have the correct type.
pub fn get_global_type(&self, name: &str) -> Result<ArcType>
[src]
pub fn find_type_info(&self, name: &str) -> Result<Alias<Symbol, ArcType>>
[src]
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]
Returns the gluon type that was bound to T
pub fn register_type<T: ?Sized + Any>(
&self,
name: &str,
args: &[&str]
) -> Result<ArcType>
[src]
&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]
&self,
name: Symbol,
alias: Alias<Symbol, ArcType>,
id: TypeId
) -> Result<ArcType>
pub fn cache_alias(&self, alias: Alias<Symbol, ArcType>) -> ArcType
[src]
pub fn get_env<'b>(&'b self) -> VmEnvInstance<'b>
[src]
Locks and retrieves the global environment of the vm
pub fn get_macros(&self) -> &MacroEnv
[src]
Retrieves the macros defined for this vm
pub fn collect(&self)
[src]
Runs a garbage collection.
pub fn push<'vm, T>(&'vm self, v: T) -> Result<()> where
T: Pushable<'vm>,
[src]
T: Pushable<'vm>,
Pushes a value to the top of the stack
pub fn pop(&self)
[src]
Removes the top value from the stack
pub fn allocated_memory(&self) -> usize
[src]
pub fn set_memory_limit(&self, memory_limit: usize)
[src]
pub fn interrupt(&self)
[src]
pub fn interrupted(&self) -> bool
[src]
pub fn current_context(&self) -> ActiveThread
[src]
Trait Implementations
impl Clone for RootedThread
[src]
fn clone(&self) -> RootedThread
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for RootedThread
[src]
impl Deref for RootedThread
[src]
impl<'de, 'gc> DeserializeState<'de, DeSeed<'gc>> for RootedThread
[src]
fn deserialize_state<D>(
seed: &mut DeSeed<'gc>,
deserializer: D
) -> StdResult<Self, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
[src]
seed: &mut DeSeed<'gc>,
deserializer: D
) -> StdResult<Self, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
impl Drop for RootedThread
[src]
impl<'vm, 'value> Getable<'vm, 'value> for RootedThread
[src]
type Proxy = Variants<'value>
fn to_proxy(_vm: &'vm Thread, value: Variants<'value>) -> Result<Self::Proxy>
[src]
fn from_proxy(vm: &'vm Thread, proxy: &'value mut Self::Proxy) -> Self
[src]
fn from_value(_: &'vm Thread, value: Variants<'value>) -> Self
[src]
impl<'vm> Pushable<'vm> for RootedThread
[src]
fn push(self, context: &mut ActiveThread<'vm>) -> Result<()>
[src]
fn status_push(self, context: &mut ActiveThread<'vm>) -> Status where
Self: Sized,
[src]
Self: Sized,
unsafe fn marshal_unrooted(self, vm: &'vm Thread) -> Result<Value> where
Self: Sized,
[src]
Self: Sized,
fn marshal<T>(self, vm: &'vm Thread) -> Result<RootedValue<T>> where
Self: Sized,
T: VmRoot<'vm>,
[src]
Self: Sized,
T: VmRoot<'vm>,
impl SerializeState<SeSeed> for RootedThread
[src]
fn serialize_state<__S>(
&self,
__serializer: __S,
__seed: &SeSeed
) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
[src]
&self,
__serializer: __S,
__seed: &SeSeed
) -> Result<__S::Ok, __S::Error> where
__S: Serializer,
impl Trace for RootedThread
[src]
impl<'a> VmRoot<'a> for RootedThread
[src]
impl VmRootInternal for RootedThread
[src]
fn root_vm(&mut self)
[src]
fn unroot_vm(&mut self)
[src]
unsafe fn root_value_with_self(self, value: &Value) -> RootedValue<Self> where
Self: Sized,
[src]
Self: Sized,
impl VmType for RootedThread
[src]
Auto Trait Implementations
impl !RefUnwindSafe for RootedThread
impl Send for RootedThread
impl Sync for RootedThread
impl Unpin for RootedThread
impl !UnwindSafe for RootedThread
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Any for T where
T: Any,
T: Any,
impl<'vm, T> AsyncPushable<'vm> for T where
T: Pushable<'vm>,
[src]
T: Pushable<'vm>,
fn async_push(
Self,
&mut ActiveThread<'vm>,
Lock,
u32
) -> Poll<Result<(), Error>>
[src]
Self,
&mut ActiveThread<'vm>,
Lock,
u32
) -> Poll<Result<(), Error>>
fn async_status_push(
self,
context: &mut ActiveThread<'vm>,
lock: Lock,
frame_index: VmIndex
) -> Status where
Self: Sized,
[src]
self,
context: &mut ActiveThread<'vm>,
lock: Lock,
frame_index: VmIndex
) -> Status where
Self: Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<'_, T> Captures<'_> for T
[src]
impl<T> CloneAny for T where
T: Clone + Any,
T: Clone + Any,
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
[src]
type Remainder = Choices
fn subset(
self
) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>
[src]
self
) -> Result<CNil, <Choices as CoproductSubsetter<CNil, HNil>>::Remainder>
impl<T> Downcast for T where
T: Any,
[src]
T: Any,
fn into_any(self: Box<T>) -> Box<dyn Any + 'static>
[src]
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
[src]
fn as_any(&self) -> &(dyn Any + 'static)
[src]
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
[src]
impl<T> DowncastArc for T where
T: Downcast + Send + Sync,
[src]
T: Downcast + Send + Sync,
impl<T> DowncastSync for T where
T: Send + Sync + Any,
[src]
T: Send + Sync + Any,
impl<T> From<T> for T
[src]
impl<D, T> FromPtr<D> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U, I> LiftInto<U, I> for T where
U: LiftFrom<T, I>,
[src]
U: LiftFrom<T, I>,
impl<'vm, T> Pushable<'vm> for T where
T: Userdata,
[src]
T: Userdata,
fn push(Self, &mut ActiveThread<'vm>) -> Result<(), Error>
[src]
fn status_push(self, context: &mut ActiveThread<'vm>) -> Status where
Self: Sized,
[src]
Self: Sized,
unsafe fn marshal_unrooted(self, vm: &'vm Thread) -> Result<Value> where
Self: Sized,
[src]
Self: Sized,
fn marshal<T>(self, vm: &'vm Thread) -> Result<RootedValue<T>> where
Self: Sized,
T: VmRoot<'vm>,
[src]
Self: Sized,
T: VmRoot<'vm>,
impl<Source> Sculptor<HNil, HNil> for Source
[src]
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,