pub struct Function<T, F>where
T: VmRootInternal,{ /* private fields */ }
Expand description
Type which represents an function in gluon
Implementations§
source§impl<T, F> Function<T, F>where
T: VmRootInternal,
impl<T, F> Function<T, F>where
T: VmRootInternal,
source§impl<T, R> Function<T, fn() -> IO<R>>
impl<T, R> Function<T, fn() -> IO<R>>
pub async fn call_async(&mut self) -> Result<IO<R>>
source§impl<T, A, R> Function<T, fn(_: A) -> R>
impl<T, A, R> Function<T, fn(_: A) -> R>
pub async fn call_async(&mut self, A: A) -> Result<R>
source§impl<T, A, B, R> Function<T, fn(_: A, _: B) -> R>
impl<T, A, B, R> Function<T, fn(_: A, _: B) -> R>
pub async fn call_async(&mut self, A: A, B: B) -> Result<R>
source§impl<T, A, B, C, R> Function<T, fn(_: A, _: B, _: C) -> R>
impl<T, A, B, C, R> Function<T, fn(_: A, _: B, _: C) -> R>
pub async fn call_async(&mut self, A: A, B: B, C: C) -> Result<R>
source§impl<T, A, B, C, D, R> Function<T, fn(_: A, _: B, _: C, _: D) -> R>
impl<T, A, B, C, D, R> Function<T, fn(_: A, _: B, _: C, _: D) -> R>
pub async fn call_async(&mut self, A: A, B: B, C: C, D: D) -> Result<R>
source§impl<T, A, B, C, D, E, R> Function<T, fn(_: A, _: B, _: C, _: D, _: E) -> R>
impl<T, A, B, C, D, E, R> Function<T, fn(_: A, _: B, _: C, _: D, _: E) -> R>
pub async fn call_async(&mut self, A: A, B: B, C: C, D: D, E: E) -> Result<R>
source§impl<T, A, B, C, D, E, F, R> Function<T, fn(_: A, _: B, _: C, _: D, _: E, _: F) -> R>where
A: for<'vm> Pushable<'vm>,
B: for<'vm> Pushable<'vm>,
C: for<'vm> Pushable<'vm>,
D: for<'vm> Pushable<'vm>,
E: for<'vm> Pushable<'vm>,
F: for<'vm> Pushable<'vm>,
T: VmRootInternal + Clone + Send,
R: VmType + for<'x, 'value> Getable<'x, 'value> + Send + Sync + 'static,
<R as VmType>::Type: Sized,
R::Type: Sized,
impl<T, A, B, C, D, E, F, R> Function<T, fn(_: A, _: B, _: C, _: D, _: E, _: F) -> R>where
A: for<'vm> Pushable<'vm>,
B: for<'vm> Pushable<'vm>,
C: for<'vm> Pushable<'vm>,
D: for<'vm> Pushable<'vm>,
E: for<'vm> Pushable<'vm>,
F: for<'vm> Pushable<'vm>,
T: VmRootInternal + Clone + Send,
R: VmType + for<'x, 'value> Getable<'x, 'value> + Send + Sync + 'static,
<R as VmType>::Type: Sized,
R::Type: Sized,
pub async fn call_async( &mut self, A: A, B: B, C: C, D: D, E: E, F: F ) -> Result<R>
source§impl<T, A, B, C, D, E, F, G, R> Function<T, fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> R>where
A: for<'vm> Pushable<'vm>,
B: for<'vm> Pushable<'vm>,
C: for<'vm> Pushable<'vm>,
D: for<'vm> Pushable<'vm>,
E: for<'vm> Pushable<'vm>,
F: for<'vm> Pushable<'vm>,
G: for<'vm> Pushable<'vm>,
T: VmRootInternal,
R: VmType + for<'x, 'value> Getable<'x, 'value>,
<R as VmType>::Type: Sized,
R::Type: Sized,
impl<T, A, B, C, D, E, F, G, R> Function<T, fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> R>where
A: for<'vm> Pushable<'vm>,
B: for<'vm> Pushable<'vm>,
C: for<'vm> Pushable<'vm>,
D: for<'vm> Pushable<'vm>,
E: for<'vm> Pushable<'vm>,
F: for<'vm> Pushable<'vm>,
G: for<'vm> Pushable<'vm>,
T: VmRootInternal,
R: VmType + for<'x, 'value> Getable<'x, 'value>,
<R as VmType>::Type: Sized,
R::Type: Sized,
source§impl<T, A, B, C, D, E, F, G, R> Function<T, fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> R>where
A: for<'vm> Pushable<'vm>,
B: for<'vm> Pushable<'vm>,
C: for<'vm> Pushable<'vm>,
D: for<'vm> Pushable<'vm>,
E: for<'vm> Pushable<'vm>,
F: for<'vm> Pushable<'vm>,
G: for<'vm> Pushable<'vm>,
T: VmRootInternal + Clone + Send,
R: VmType + for<'x, 'value> Getable<'x, 'value> + Send + Sync + 'static,
<R as VmType>::Type: Sized,
R::Type: Sized,
impl<T, A, B, C, D, E, F, G, R> Function<T, fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> R>where
A: for<'vm> Pushable<'vm>,
B: for<'vm> Pushable<'vm>,
C: for<'vm> Pushable<'vm>,
D: for<'vm> Pushable<'vm>,
E: for<'vm> Pushable<'vm>,
F: for<'vm> Pushable<'vm>,
G: for<'vm> Pushable<'vm>,
T: VmRootInternal + Clone + Send,
R: VmType + for<'x, 'value> Getable<'x, 'value> + Send + Sync + 'static,
<R as VmType>::Type: Sized,
R::Type: Sized,
pub async fn call_async( &mut self, A: A, B: B, C: C, D: D, E: E, F: F, G: G ) -> Result<R>
source§impl<'vm, T, F> Function<T, F>where
T: VmRootInternal + 'vm,
F: VmType,
impl<'vm, T, F> Function<T, F>where
T: VmRootInternal + 'vm,
F: VmType,
pub fn cast<F2>(self) -> Result<Function<T, F2>>where
F2: VmType,
sourcepub fn call_any<A, R>(&'vm self, args: impl IntoIterator<Item = A>) -> Result<R>
pub fn call_any<A, R>(&'vm self, args: impl IntoIterator<Item = A>) -> Result<R>
Calls self
with a number of arguments that is only known at runtime.
WARNING: No check is done that the number of arguments is correct. The VM may return an error or panic if an incorrect number of arguments is passed.
Trait Implementations§
source§impl<'de, V> Deserialize<'de> for Function<RootedThread, V>
impl<'de, V> Deserialize<'de> for Function<RootedThread, V>
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<'vm, 'value, F> Getable<'vm, 'value> for Function<RootedThread, F>
impl<'vm, 'value, F> Getable<'vm, 'value> for Function<RootedThread, F>
source§impl<'vm, T, F> Pushable<'vm> for Function<T, F>
impl<'vm, T, F> Pushable<'vm> for Function<T, F>
source§fn vm_push(self, context: &mut ActiveThread<'vm>) -> Result<()>
fn vm_push(self, context: &mut ActiveThread<'vm>) -> 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 intactfn status_push(self, context: &mut ActiveThread<'vm>) -> Statuswhere
Self: Sized,
unsafe fn marshal_unrooted(self, vm: &'vm Thread) -> Result<Value>where
Self: Sized,
fn marshal<T>(self, vm: &'vm Thread) -> Result<RootedValue<T>>
source§impl<T, F> VmType for Function<T, F>where
T: VmRootInternal,
F: VmType,
impl<T, F> VmType for Function<T, F>where
T: VmRootInternal,
F: VmType,
§type Type = <F as VmType>::Type
type Type = <F as VmType>::Type
A version of
Self
which implements Any
allowing a TypeId
to be retrievedfn make_forall_type(vm: &Thread) -> ArcType
source§const EXTRA_ARGS: VmIndex = 0u32
const EXTRA_ARGS: VmIndex = 0u32
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
Auto Trait Implementations§
impl<T, F> !RefUnwindSafe for Function<T, F>
impl<T, F> Send for Function<T, F>
impl<T, F> Sync for Function<T, F>
impl<T, F> Unpin for Function<T, F>
impl<T, F> !UnwindSafe for Function<T, F>
Blanket Implementations§
source§impl<'vm, T> AsyncPushable<'vm> for Twhere
T: Pushable<'vm>,
impl<'vm, T> AsyncPushable<'vm> for Twhere
T: Pushable<'vm>,
source§fn async_push(
self,
context: &mut ActiveThread<'vm>,
lock: Lock,
_: u32
) -> Poll<Result<(), Error>>
fn async_push( self, context: &mut ActiveThread<'vm>, lock: Lock, _: u32 ) -> Poll<Result<(), Error>>
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 morefn async_status_push(
self,
context: &mut ActiveThread<'vm>,
lock: Lock,
frame_index: VmIndex
) -> Statuswhere
Self: Sized,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.