NamedCallable

Struct NamedCallable 

Source
pub struct NamedCallable<X: GXExt> { /* private fields */ }

Implementations§

Source§

impl<X: GXExt> NamedCallable<X>

Source

pub async fn update<'a>( &mut self, id: ExprId, v: &'a Value, ) -> Result<Option<&'a Value>>

Update the named callable function

This method does two things,

  • Handle late binding. When the name ref updates to an actual function compile the real call site
  • Return Ok(Some(v)) when the called function returns
Source

pub async fn call(&mut self, args: ValArray) -> Result<()>

Call the lambda with args

Argument types and arity will be checked and an error will be returned if they are wrong. If you call the function more than once before it returns there is no guarantee that the returns will arrive in the order of the calls. There is no guarantee that a function must return. In order to handle late binding you must keep calling update while waiting for this method.

While a late bound function is unresolved calls will queue internally in the NamedCallsite and will happen when the function is resolved.

Source

pub async fn call_unchecked(&mut self, args: ValArray) -> Result<()>

call the function with the specified args

Argument types and arity will NOT be checked by this method. If you call the function more than once before it returns there is no guarantee that the returns will arrive in the order of the calls. There is no guarantee that a function must return. In order to handle late binding you must keep calling update while waiting for this method.

While a late bound function is unresolved calls will queue internally in the NamedCallsite and will happen when the function is resolved.

Auto Trait Implementations§

§

impl<X> Freeze for NamedCallable<X>

§

impl<X> !RefUnwindSafe for NamedCallable<X>

§

impl<X> Send for NamedCallable<X>

§

impl<X> Sync for NamedCallable<X>

§

impl<X> Unpin for NamedCallable<X>

§

impl<X> !UnwindSafe for NamedCallable<X>

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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