Struct InvocationMeta

Source
pub struct InvocationMeta {
    pub origin: Origin,
    pub name: Option<&'static str>,
    pub doc: Option<&'static str>,
    pub receiver: Option<TypeHint>,
    pub inputs: Option<Vec<Param>>,
    pub output: TypeHint,
}
Expand description

Metadata for a function-like object.

Typically, this object describes the signatures of exported Rust functions and methods, but it can also describe a broader range of exported objects that support the invocation operation.

This object aids in the static semantic analysis of Script source code.

The Display implementation of this object renders a canonical, user-facing view of the function’s signature, such as fn foo(x: usize, y: bool) -> f32.

Generally, you don’t need to instantiate this object manually, unless your crate introduces new types of invokable objects. In such cases, you should store this object in a static context.

use ad_astra::{
    lady_deirdre::sync::Lazy,
    runtime::{InvocationMeta, Origin, Param, ScriptType},
};

static INVOKE_META: Lazy<InvocationMeta> = Lazy::new(|| {
    InvocationMeta {
        name: Some("foo"),
        inputs: Some(vec![Param {
            name: None,
            hint: <usize>::type_meta().into(),
        }]),
        ..InvocationMeta::new(Origin::nil())
    }
});

assert_eq!(INVOKE_META.name, Some("foo"));

Fields§

§origin: Origin

The source code range in Rust or Script where the function signature was introduced.

Typically, the resulting Origin points to the Rust code.

§name: Option<&'static str>

The name of the function, if the function has a name.

§doc: Option<&'static str>

The RustDoc documentation for this function, if available.

§receiver: Option<TypeHint>

The type of the method’s receiver (e.g., self, &self, and similar Rust function parameters), if the function has a receiver.

§inputs: Option<Vec<Param>>

The signature of the function parameters, excluding the receiver, if the signature metadata is available.

§output: TypeHint

The type of the object returned after the function invocation.

If the return type is not specified, the output corresponds to the TypeHint::dynamic.

Implementations§

Source§

impl InvocationMeta

Source

pub fn new(origin: Origin) -> Self

Creates a new invocation metadata object with all fields set to their default values.

Source

pub fn arity(&self) -> Option<usize>

Returns the arity of the function, which is the number of function parameters excluding the receiver.

This is a helper function similar in semantics to self.inputs.as_ref().map(|inputs| inputs.len()).

Trait Implementations§

Source§

impl Clone for InvocationMeta

Source§

fn clone(&self) -> InvocationMeta

Returns a duplicate 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 InvocationMeta

Source§

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

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

impl Display for InvocationMeta

Source§

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

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

impl From<&'static InvocationMeta> for TypeHint

Source§

fn from(value: &'static InvocationMeta) -> Self

Converts to this type from the input type.
Source§

impl Hash for &'static InvocationMeta

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 &'static InvocationMeta

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for &'static InvocationMeta

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToCompactString for T
where T: Display,

Source§

fn to_compact_string(&self) -> CompactString

Converts the given value to a CompactString. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
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.