Struct rhai::FnCallHashes

source ·
pub struct FnCallHashes { /* private fields */ }
Expand description

(internals) A set of function call hashes. Exported under the internals feature only.

Two separate hashes are pre-calculated because of the following patterns:

func(a, b, c);      // Native: func(a, b, c)        - 3 parameters
                    // Script: func(a, b, c)        - 3 parameters

a.func(b, c);       // Native: func(&mut a, b, c)   - 3 parameters
                    // Script: func(b, c)           - 2 parameters

For normal function calls, the native hash equals the script hash.

For method-style calls, the script hash contains one fewer parameter.

Function call hashes are used in the following manner:

  • First, the script hash (if any) is tried, which contains only the called function’s name plus the number of parameters.

  • Next, the actual types of arguments are hashed and combined with the native hash, which is then used to search for a native function.

    In other words, a complete native function call hash always contains the called function’s name plus the types of the arguments. This is due to possible function overloading for different parameter types.

Implementations§

source§

impl FnCallHashes

source

pub const fn from_hash(hash: u64) -> Self

Create a FnCallHashes from a single hash.

source

pub const fn from_native_only(hash: u64) -> Self

Create a FnCallHashes with only the native Rust hash.

source

pub const fn from_script_and_native(script: u64, native: u64) -> Self

Create a FnCallHashes with both script function and native Rust hashes.

Not available under no_function.

source

pub const fn is_native_only(&self) -> bool

Is this FnCallHashes native-only?

source

pub const fn native(&self) -> u64

Get the native hash.

The hash returned is never zero.

source

pub fn script(&self) -> u64

Get the script hash.

The hash returned is never zero.

§Panics

Panics if this FnCallHashes is native-only.

Trait Implementations§

source§

impl Clone for FnCallHashes

source§

fn clone(&self) -> FnCallHashes

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for FnCallHashes

source§

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

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

impl Hash for FnCallHashes

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for FnCallHashes

source§

fn eq(&self, other: &FnCallHashes) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for FnCallHashes

source§

impl Eq for FnCallHashes

source§

impl StructuralPartialEq for FnCallHashes

Auto Trait Implementations§

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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
source§

impl<T> Variant for T
where T: Any + Clone + SendSync,

source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert this Variant trait object to &dyn Any.
source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert this Variant trait object to &mut dyn Any.
source§

fn as_boxed_any(self: Box<T>) -> Box<dyn Any>

Convert this Variant trait object to Box<dyn Any>.
source§

fn type_name(&self) -> &'static str

Get the name of this type.
source§

fn clone_object(&self) -> Box<dyn Variant>

Clone this Variant trait object.