pub trait NativeFn<T> {
// Required method
fn evaluate(
&self,
args: Vec<SpannedValue<T>>,
context: &mut CallContext<'_, T>,
) -> EvalResult<T>;
}Expand description
Required Methods§
Sourcefn evaluate(
&self,
args: Vec<SpannedValue<T>>,
context: &mut CallContext<'_, T>,
) -> EvalResult<T>
fn evaluate( &self, args: Vec<SpannedValue<T>>, context: &mut CallContext<'_, T>, ) -> EvalResult<T>
Executes the function on the specified arguments.
Trait Implementations§
Implementors§
impl<Num, F, Ret> NativeFn<Num> for FnWrapper<(Ret,), F, false>where
F: Fn() -> Ret,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret> NativeFn<Num> for FnWrapper<(Ret,), F, true>
impl<Num, F, Ret, T> NativeFn<Num> for FnWrapper<(Ret, T), F, false>
impl<Num, F, Ret, T> NativeFn<Num> for FnWrapper<(Ret, T), F, true>
impl<Num, F, Ret, T, U> NativeFn<Num> for FnWrapper<(Ret, T, U), F, false>
impl<Num, F, Ret, T, U> NativeFn<Num> for FnWrapper<(Ret, T, U), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V> NativeFn<Num> for FnWrapper<(Ret, T, U, V), F, false>where
F: Fn(T, U, V) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V> NativeFn<Num> for FnWrapper<(Ret, T, U, V), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U, V) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W), F, false>where
F: Fn(T, U, V, W) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U, V, W) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X), F, false>where
F: Fn(T, U, V, W, X) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U, V, W, X) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y), F, false>where
F: Fn(T, U, V, W, X, Y) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U, V, W, X, Y) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y, Z> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y, Z), F, false>where
F: Fn(T, U, V, W, X, Y, Z) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Z: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y, Z> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y, Z), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U, V, W, X, Y, Z) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Z: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y, Z, A> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y, Z, A), F, false>where
F: Fn(T, U, V, W, X, Y, Z, A) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Z: TryFromValue<Num>,
A: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y, Z, A> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y, Z, A), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U, V, W, X, Y, Z, A) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Z: TryFromValue<Num>,
A: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y, Z, A, B> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y, Z, A, B), F, false>where
F: Fn(T, U, V, W, X, Y, Z, A, B) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Z: TryFromValue<Num>,
A: TryFromValue<Num>,
B: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y, Z, A, B> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y, Z, A, B), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U, V, W, X, Y, Z, A, B) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Z: TryFromValue<Num>,
A: TryFromValue<Num>,
B: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y, Z, A, B, C> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y, Z, A, B, C), F, false>where
F: Fn(T, U, V, W, X, Y, Z, A, B, C) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Z: TryFromValue<Num>,
A: TryFromValue<Num>,
B: TryFromValue<Num>,
C: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<Num, F, Ret, T, U, V, W, X, Y, Z, A, B, C> NativeFn<Num> for FnWrapper<(Ret, T, U, V, W, X, Y, Z, A, B, C), F, true>where
F: Fn(&mut CallContext<'_, Num>, T, U, V, W, X, Y, Z, A, B, C) -> Ret,
T: TryFromValue<Num>,
U: TryFromValue<Num>,
V: TryFromValue<Num>,
W: TryFromValue<Num>,
X: TryFromValue<Num>,
Y: TryFromValue<Num>,
Z: TryFromValue<Num>,
A: TryFromValue<Num>,
B: TryFromValue<Num>,
C: TryFromValue<Num>,
Ret: IntoEvalResult<Num>,
impl<T> NativeFn<T> for Compare
impl<T> NativeFn<T> for Array
impl<T> NativeFn<T> for Assert
impl<T> NativeFn<T> for If
impl<T> NativeFn<T> for Push
impl<T, F> NativeFn<T> for F
impl<T: 'static + Clone> NativeFn<T> for AssertFails
impl<T: 'static + Clone> NativeFn<T> for Filter
impl<T: 'static + Clone> NativeFn<T> for Fold
impl<T: 'static + Clone> NativeFn<T> for Map
impl<T: 'static + Clone> NativeFn<T> for While
impl<T: Clone + 'static> NativeFn<T> for All
impl<T: Clone + 'static> NativeFn<T> for Any
impl<T: Clone + 'static> NativeFn<T> for Defer
impl<T: Clone + Display> NativeFn<T> for AssertClose<T>
impl<T: Clone> NativeFn<T> for Merge
impl<T: Display> NativeFn<T> for AssertEq
impl<T: Display> NativeFn<T> for Dbg
Available on crate feature
std only.