pub struct NativeFunction {
pub arity: usize,
pub implementation: Rc<dyn Fn(&[Real]) -> Real>,
pub name: FunctionName,
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: usizeNumber of arguments the function takes.
implementation: Rc<dyn Fn(&[Real]) -> Real>The actual implementation of the function as a Rust closure.
name: FunctionNameThe 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 Clone for NativeFunction
impl Clone for NativeFunction
Source§fn clone(&self) -> NativeFunction
fn clone(&self) -> NativeFunction
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl From<&NativeFunction> for OwnedNativeFunction
impl From<&NativeFunction> for OwnedNativeFunction
Source§fn from(nf: &NativeFunction) -> Self
fn from(nf: &NativeFunction) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl Freeze for NativeFunction
impl !RefUnwindSafe for NativeFunction
impl !Send for NativeFunction
impl !Sync for NativeFunction
impl Unpin for NativeFunction
impl !UnwindSafe for NativeFunction
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)