pub struct LazyCallablePredicate<const N: usize> { /* private fields */ }
Expand description

Looks up a predicate on first call to as_callable and keeps it cached afterwards.

This is used by both the prolog! macro and the pred! macro to only look up a predicate once.

Implementations§

source§

impl<const N: usize> LazyCallablePredicate<N>

source

pub const fn new(module: Option<&'static str>, name: &'static str) -> Self

Create a new LazyCallablepredicate from a module, a name, and the const type argument which is used as arity.

source

pub fn as_callable(&self) -> CallablePredicate<N>

Return a CallablePredicate from the information in this struct.

If this was previously called for this struct, it’ll return what it previously looked up. Otherwise, it’ll do the lookup.

Trait Implementations§

source§

impl<'a, const N: usize> Callable<N> for &'a LazyCallablePredicate<N>

§

type ContextType = OpenQuery

source§

fn open<'b, C: ContextType>( self, context: &'b Context<'_, C>, module: Option<Module>, args: [&Term<'_>; N] ) -> Context<'b, OpenQuery>

source§

impl<const N: usize> Callable<N> for LazyCallablePredicate<N>

§

type ContextType = OpenQuery

source§

fn open<'a, C: ContextType>( self, context: &'a Context<'_, C>, module: Option<Module>, args: [&Term<'_>; N] ) -> Context<'a, OpenQuery>

Auto Trait Implementations§

§

impl<const N: usize> RefUnwindSafe for LazyCallablePredicate<N>

§

impl<const N: usize> Send for LazyCallablePredicate<N>

§

impl<const N: usize> Sync for LazyCallablePredicate<N>

§

impl<const N: usize> Unpin for LazyCallablePredicate<N>

§

impl<const N: usize> UnwindSafe for LazyCallablePredicate<N>

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.