pub struct NativeFn {
pub name: Arc<str>,
pub diagnostic_id: NativeDiagnosticId,
pub arity: Arity,
pub func: NativeFnFunc,
pub captures: Arc<[Value]>,
pub blocking_func: Option<NativeFnFunc>,
}Fields§
§name: Arc<str>§diagnostic_id: NativeDiagnosticIdLazily assigned watchdog name id (Default::default() when building).
arity: Arity§func: NativeFnFunc§captures: Arc<[Value]>Managed values retained by the opaque callable closure.
blocking_func: Option<NativeFnFunc>Optional adapter that marshals owned inputs and offloads native work.
Implementations§
Source§impl NativeFn
impl NativeFn
Sourcepub fn new(name: impl Into<Arc<str>>, arity: Arity, func: NativeFnPtr) -> Self
pub fn new(name: impl Into<Arc<str>>, arity: Arity, func: NativeFnPtr) -> Self
Create from a bare function pointer (backwards-compatible).
Sourcepub fn with_closure(
name: impl Into<Arc<str>>,
arity: Arity,
func: impl Fn(&[Value]) -> ValueResult<Value> + 'static,
) -> Self
pub fn with_closure( name: impl Into<Arc<str>>, arity: Arity, func: impl Fn(&[Value]) -> ValueResult<Value> + 'static, ) -> Self
Create a Rust callable with no managed captures. For closures that retain Values, use with_captures so the collector can visit them.
Sourcepub fn with_captures(
name: impl Into<Arc<str>>,
arity: Arity,
captures: Vec<Value>,
func: impl Fn(&[Value], &[Value]) -> ValueResult<Value> + 'static,
) -> Self
pub fn with_captures( name: impl Into<Arc<str>>, arity: Arity, captures: Vec<Value>, func: impl Fn(&[Value], &[Value]) -> ValueResult<Value> + 'static, ) -> Self
Create a callable with explicit managed captures for precise tracing.
The callback and tracer share one immutable capture slice.
Callers must not replace the public captures handle after construction.
Sourcepub fn with_blocking(
name: impl Into<Arc<str>>,
arity: Arity,
func: impl Fn(&[Value]) -> ValueResult<Value> + 'static,
blocking_func: impl Fn(&[Value]) -> ValueResult<Value> + 'static,
) -> Self
pub fn with_blocking( name: impl Into<Arc<str>>, arity: Arity, func: impl Fn(&[Value]) -> ValueResult<Value> + 'static, blocking_func: impl Fn(&[Value]) -> ValueResult<Value> + 'static, ) -> Self
Create a native function with a separate owned-work blocking adapter. The adapter must keep managed conversions on the caller’s isolate.
Sourcepub fn call_blocking(&self, args: &[Value]) -> ValueResult<Value>
pub fn call_blocking(&self, args: &[Value]) -> ValueResult<Value>
Call the blocking adapter. Reject unsupported functions before execution.