pub struct NativeFunction<'a> {
pub arity: usize,
pub implementation: Rc<dyn Fn(&[Real]) -> Real>,
pub name: Cow<'a, str>,
pub description: Option<String>,
}
Expand description
Represents a native Rust function that can be registered with the evaluation context.
Native functions allow users to extend the expression evaluator with custom functionality written in Rust. These functions can be called from within expressions like any built-in function.
§Example
let mut ctx = EvalContext::new();
// Register a custom function that calculates the hypotenuse
ctx.register_native_function(
"hypotenuse", // Function name
2, // Takes 2 arguments
|args: &[Real]| { // Implementation
(args[0] * args[0] + args[1] * args[1]).sqrt()
}
);
// Use the function in an expression
let result = interp("hypotenuse(3, 4)", Some(Rc::new(ctx))).unwrap();
assert_eq!(result, 5.0);
Fields§
§arity: usize
Number of arguments the function takes.
implementation: Rc<dyn Fn(&[Real]) -> Real>
The actual implementation of the function as a Rust closure.
name: Cow<'a, str>
The name of the function as it will be used in expressions.
description: Option<String>
Optional description of what the function does.
Trait Implementations§
Source§impl<'a> Clone for NativeFunction<'a>
impl<'a> Clone for NativeFunction<'a>
Source§fn clone(&self) -> NativeFunction<'a>
fn clone(&self) -> NativeFunction<'a>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<'a> Freeze for NativeFunction<'a>
impl<'a> !RefUnwindSafe for NativeFunction<'a>
impl<'a> !Send for NativeFunction<'a>
impl<'a> !Sync for NativeFunction<'a>
impl<'a> Unpin for NativeFunction<'a>
impl<'a> !UnwindSafe for NativeFunction<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more