Struct rhai::NativeCallContext

source ·
pub struct NativeCallContext<'a> { /* private fields */ }
Expand description

Context of a native Rust function call.

Implementations§

source§

impl NativeCallContext<'_>

source

pub fn new(engine: &Engine, fn_name: &str, lib: &[Shared<Module>]) -> Self

👎Deprecated since 1.3.0: use 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.

source

pub 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

Call 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>

source

pub const fn new_with_all_fields( engine: &'a Engine, fn_name: &'a str, source: Option<&'a str>, global: &'a GlobalRuntimeState, pos: Position ) -> Self

(internals) Create a new NativeCallContext. Exported under the internals feature only.

Not available under no_module.

source

pub fn from_stored_data( engine: &'a Engine, context: &'a NativeCallContextStore ) -> Self

👎Deprecated: This API is NOT deprecated, but it is considered volatile and may change in the future.

(internals) Create a NativeCallContext from a NativeCallContextStore. Exported under the internals feature only.

§WARNING - Unstable API

This API is volatile and may change in the future.

source

pub fn store_data(&self) -> NativeCallContextStore

👎Deprecated: This API is NOT deprecated, but it is considered volatile and may change in the future.

(internals) Store this NativeCallContext into a NativeCallContextStore. Exported under the internals feature only.

§WARNING - Unstable API

This API is volatile and may change in the future.

source

pub const fn engine(&self) -> &Engine

The current Engine.

source

pub const fn fn_name(&self) -> &str

Name of the function called.

source

pub const fn position(&self) -> Position

Position of the function call.

source

pub const fn call_level(&self) -> usize

Current nesting level of function calls.

source

pub const fn source(&self) -> Option<&str>

The current source.

source

pub const fn tag(&self) -> Option<&Dynamic>

Custom state kept in a Dynamic.

source

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.

source

pub const fn global_runtime_state(&self) -> &GlobalRuntimeState

(internals) The current GlobalRuntimeState, if any. Exported under the internals feature only.

Not available under no_module.

source

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.

source

pub fn namespaces(&self) -> &[Shared<Module>]

(internals) The current stack of namespaces containing definitions of all script-defined functions. Exported under the internals feature only.

Not available under no_function.

source

pub fn call_fn<T: Variant + Clone>( &self, fn_name: impl AsRef<str>, args: impl FuncArgs ) -> Result<T, Box<EvalAltResult>>

Call a function inside the call context with the provided arguments.

source

pub fn call_native_fn<T: Variant + Clone>( &self, fn_name: impl AsRef<str>, args: impl FuncArgs ) -> Result<T, Box<EvalAltResult>>

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).

source

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.

source

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>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> From<(&'a Engine, &'a str, Option<&'a str>, &'a GlobalRuntimeState, Position)> for NativeCallContext<'a>

source§

fn from( value: (&'a Engine, &'a str, Option<&'a str>, &'a GlobalRuntimeState, Position) ) -> Self

Converts to this type from the input type.

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.