InvokeArgs

Trait InvokeArgs 

Source
pub trait InvokeArgs {
    // Required methods
    fn can_invoke<'runtime>(
        &self,
        runtime: &'runtime Runtime,
        signature: &FunctionSignature,
    ) -> Result<(), String>;
    unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType;
}
Expand description

A trait that handles calling a certain function with a set of arguments. This trait is implemented for tuples up to and including 20 elements.

Required Methods§

Source

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Determines whether the specified function can be called with these arguments

Source

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Calls the specified function with these function arguments

§Safety

The fn_ptr is cast and invoked which might result in undefined behavior.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'arg> InvokeArgs for ()

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0,)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>, T12: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>, T12: ArgumentReflection + Marshal<'arg>, T13: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>, T12: ArgumentReflection + Marshal<'arg>, T13: ArgumentReflection + Marshal<'arg>, T14: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>, T12: ArgumentReflection + Marshal<'arg>, T13: ArgumentReflection + Marshal<'arg>, T14: ArgumentReflection + Marshal<'arg>, T15: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>, T12: ArgumentReflection + Marshal<'arg>, T13: ArgumentReflection + Marshal<'arg>, T14: ArgumentReflection + Marshal<'arg>, T15: ArgumentReflection + Marshal<'arg>, T16: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>, T12: ArgumentReflection + Marshal<'arg>, T13: ArgumentReflection + Marshal<'arg>, T14: ArgumentReflection + Marshal<'arg>, T15: ArgumentReflection + Marshal<'arg>, T16: ArgumentReflection + Marshal<'arg>, T17: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>, T12: ArgumentReflection + Marshal<'arg>, T13: ArgumentReflection + Marshal<'arg>, T14: ArgumentReflection + Marshal<'arg>, T15: ArgumentReflection + Marshal<'arg>, T16: ArgumentReflection + Marshal<'arg>, T17: ArgumentReflection + Marshal<'arg>, T18: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Source§

impl<'arg, T0: ArgumentReflection + Marshal<'arg>, T1: ArgumentReflection + Marshal<'arg>, T2: ArgumentReflection + Marshal<'arg>, T3: ArgumentReflection + Marshal<'arg>, T4: ArgumentReflection + Marshal<'arg>, T5: ArgumentReflection + Marshal<'arg>, T6: ArgumentReflection + Marshal<'arg>, T7: ArgumentReflection + Marshal<'arg>, T8: ArgumentReflection + Marshal<'arg>, T9: ArgumentReflection + Marshal<'arg>, T10: ArgumentReflection + Marshal<'arg>, T11: ArgumentReflection + Marshal<'arg>, T12: ArgumentReflection + Marshal<'arg>, T13: ArgumentReflection + Marshal<'arg>, T14: ArgumentReflection + Marshal<'arg>, T15: ArgumentReflection + Marshal<'arg>, T16: ArgumentReflection + Marshal<'arg>, T17: ArgumentReflection + Marshal<'arg>, T18: ArgumentReflection + Marshal<'arg>, T19: ArgumentReflection + Marshal<'arg>> InvokeArgs for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)

Source§

fn can_invoke<'runtime>( &self, runtime: &'runtime Runtime, signature: &FunctionSignature, ) -> Result<(), String>

Source§

unsafe fn invoke<ReturnType>(self, fn_ptr: *const c_void) -> ReturnType

Implementors§