pub struct NativeCallContext<'a> { /* private fields */ }Expand description
Context of a native Rust function call.
Implementations§
Source§impl NativeCallContext<'_>
impl NativeCallContext<'_>
Sourcepub fn new(
engine: &Engine,
fn_name: &str,
lib: &[Arc<Module>],
) -> NativeCallContext<'_>
👎Deprecated since 1.3.0: use FnPtr::call to call a function pointer directly.
pub fn new( engine: &Engine, fn_name: &str, lib: &[Arc<Module>], ) -> NativeCallContext<'_>
FnPtr::call to call a function pointer directly.Create a new NativeCallContext.
§Unimplemented
This method is deprecated. It is no longer implemented and always panics.
Use FnPtr::call to call a function pointer directly.
This method will be removed in the next major version.
Sourcepub const fn position(&self) -> Position
👎Deprecated since 1.22.0: use call_position instead.
pub const fn position(&self) -> Position
call_position instead.Position of the function call.
§Deprecated
This method is deprecated.
Use call_position instead.
This method will be removed in the next major version.
Sourcepub fn call_fn_dynamic_raw(
&self,
fn_name: impl AsRef<str>,
is_method_call: bool,
args: &mut [&mut Dynamic],
) -> Result<Dynamic, Box<EvalAltResult>>
👎Deprecated since 1.2.0: use call_fn_raw instead
pub fn call_fn_dynamic_raw( &self, fn_name: impl AsRef<str>, is_method_call: bool, args: &mut [&mut Dynamic], ) -> Result<Dynamic, Box<EvalAltResult>>
call_fn_raw insteadCall a function inside the call context.
§Deprecated
This method is deprecated.
Use call_fn_raw instead.
This method will be removed in the next major version.
Source§impl<'a> NativeCallContext<'a>
impl<'a> NativeCallContext<'a>
Sourcepub const fn call_position(&self) -> Position
pub const fn call_position(&self) -> Position
Position of the function call.
Sourcepub const fn call_level(&self) -> usize
pub const fn call_level(&self) -> usize
Current nesting level of function calls.
Sourcepub fn iter_imports(&self) -> impl Iterator<Item = (&str, &Module)>
pub fn iter_imports(&self) -> impl Iterator<Item = (&str, &Module)>
Get an iterator over the current set of modules imported via import statements
in reverse order.
Not available under no_module.
Sourcepub fn iter_namespaces(&self) -> impl Iterator<Item = &Module>
pub fn iter_namespaces(&self) -> impl Iterator<Item = &Module>
Get an iterator over the namespaces containing definitions of all script-defined functions in reverse order (i.e. parent namespaces are iterated after child namespaces).
Not available under no_function.
Sourcepub fn call_fn<T>(
&self,
fn_name: impl AsRef<str>,
args: impl FuncArgs,
) -> Result<T, Box<EvalAltResult>>where
T: Variant + Clone,
pub fn call_fn<T>(
&self,
fn_name: impl AsRef<str>,
args: impl FuncArgs,
) -> Result<T, Box<EvalAltResult>>where
T: Variant + Clone,
Call a function inside the call context with the provided arguments.
Sourcepub fn call_native_fn<T>(
&self,
fn_name: impl AsRef<str>,
args: impl FuncArgs,
) -> Result<T, Box<EvalAltResult>>where
T: Variant + Clone,
pub fn call_native_fn<T>(
&self,
fn_name: impl AsRef<str>,
args: impl FuncArgs,
) -> Result<T, Box<EvalAltResult>>where
T: Variant + Clone,
Call a registered native Rust function inside the call context with the provided arguments.
This is often useful because Rust functions typically only want to cross-call other registered Rust functions and not have to worry about scripted functions hijacking the process unknowingly (or deliberately).
Sourcepub fn call_fn_raw(
&self,
fn_name: impl AsRef<str>,
is_ref_mut: bool,
is_method_call: bool,
args: &mut [&mut Dynamic],
) -> Result<Dynamic, Box<EvalAltResult>>
pub fn call_fn_raw( &self, fn_name: impl AsRef<str>, is_ref_mut: bool, is_method_call: bool, args: &mut [&mut Dynamic], ) -> Result<Dynamic, Box<EvalAltResult>>
Call a function (native Rust or scripted) inside the call context.
If is_method_call is true, the first argument is assumed to be the this pointer for
a script-defined function (or the object of a method call).
§WARNING - Low Level API
This function is very low level.
§Arguments
All arguments may be consumed, meaning that they may be replaced by (). This is to avoid
unnecessarily cloning the arguments.
DO NOT reuse the arguments after this call. If they are needed afterwards, clone them before calling this function.
If is_ref_mut is true, the first argument is assumed to be passed by reference and is
not consumed.
Sourcepub fn call_native_fn_raw(
&self,
fn_name: impl AsRef<str>,
is_ref_mut: bool,
args: &mut [&mut Dynamic],
) -> Result<Dynamic, Box<EvalAltResult>>
pub fn call_native_fn_raw( &self, fn_name: impl AsRef<str>, is_ref_mut: bool, args: &mut [&mut Dynamic], ) -> Result<Dynamic, Box<EvalAltResult>>
Call a registered native Rust function inside the call context.
This is often useful because Rust functions typically only want to cross-call other registered Rust functions and not have to worry about scripted functions hijacking the process unknowingly (or deliberately).
§WARNING - Low Level API
This function is very low level.
§Arguments
All arguments may be consumed, meaning that they may be replaced by (). This is to avoid
unnecessarily cloning the arguments.
DO NOT reuse the arguments after this call. If they are needed afterwards, clone them before calling this function.
If is_ref_mut is true, the first argument is assumed to be passed by reference and is
not consumed.
Trait Implementations§
Source§impl<'a> Debug for NativeCallContext<'a>
impl<'a> Debug for NativeCallContext<'a>
Auto Trait Implementations§
impl<'a> Freeze for NativeCallContext<'a>
impl<'a> !RefUnwindSafe for NativeCallContext<'a>
impl<'a> Send for NativeCallContext<'a>
impl<'a> Sync for NativeCallContext<'a>
impl<'a> Unpin for NativeCallContext<'a>
impl<'a> !UnwindSafe for NativeCallContext<'a>
Blanket Implementations§
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more