NativeCallContext

Struct 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: &[Arc<Module>], ) -> NativeCallContext<'_>

👎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 const fn source(&self) -> Option<&str>

👎Deprecated since 1.22.0: use fn_source instead.

The current source.

§Deprecated

This method is deprecated. Use fn_source instead.

This method will be removed in the next major version.

Source

pub const fn position(&self) -> Position

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

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 engine(&self) -> &Engine

The current Engine.

Source

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

Name of the function called.

Source

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

The current source.

Source

pub const fn call_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 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 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 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.

Source

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

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<(), Error>

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), ) -> NativeCallContext<'a>

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> Chain<T> for T

Source§

fn len(&self) -> usize

The number of items that this chain link consists of.
Source§

fn append_to(self, v: &mut Vec<T>)

Append the elements in this link to the chain.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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

Source§

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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

Source§

impl<T> MaybeSend for T
where T: Send,