Function

Trait Function 

Source
pub trait Function:
    Send
    + Sync
    + 'static {
Show 15 methods // Required methods fn name(&self) -> &'static str; fn eval_scalar<'a, 'b>( &self, args: &'a [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext, ) -> Result<LiteralValue, ExcelError>; // Provided methods fn caps(&self) -> FnCaps { ... } fn namespace(&self) -> &'static str { ... } fn min_args(&self) -> usize { ... } fn variadic(&self) -> bool { ... } fn volatile(&self) -> bool { ... } fn arg_schema(&self) -> &'static [ArgSchema] { ... } fn aliases(&self) -> &'static [&'static str] { ... } fn function_salt(&self) -> u64 { ... } fn eval_fold( &self, _f: &mut dyn FnFoldCtx, ) -> Option<Result<LiteralValue, ExcelError>> { ... } fn eval_map( &self, _m: &mut dyn FnMapCtx, ) -> Option<Result<LiteralValue, ExcelError>> { ... } fn eval_window<'a, 'b>( &self, _w: &mut SimpleWindowCtx<'a, 'b>, ) -> Option<Result<LiteralValue, ExcelError>> { ... } fn eval_reference<'a, 'b>( &self, _args: &'a [ArgumentHandle<'a, 'b>], _ctx: &dyn FunctionContext, ) -> Option<Result<ReferenceType, ExcelError>> { ... } fn dispatch<'a, 'b>( &self, args: &'a [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext, ) -> Result<LiteralValue, ExcelError> { ... }
}
Expand description

Revised, object-safe trait for all Excel-style functions.

This trait uses a capability-based model (FnCaps) to declare function properties, enabling the evaluation engine to select the most optimal execution path (e.g., scalar, vectorized, parallel).

Required Methods§

Source

fn name(&self) -> &'static str

Source

fn eval_scalar<'a, 'b>( &self, args: &'a [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext, ) -> Result<LiteralValue, ExcelError>

The default, scalar evaluation path.

This method is the fallback for all functions and the only required evaluation path. It processes arguments one by one.

Provided Methods§

Source

fn caps(&self) -> FnCaps

Capability flags for this function

Source

fn namespace(&self) -> &'static str

Source

fn min_args(&self) -> usize

Source

fn variadic(&self) -> bool

Source

fn volatile(&self) -> bool

Source

fn arg_schema(&self) -> &'static [ArgSchema]

Source

fn aliases(&self) -> &'static [&'static str]

Optional list of additional alias names (case-insensitive) that should resolve to this function. Default: empty slice. Implementors can override to expose legacy names. Returned slice must have ’static lifetime (typically a static array reference).

Source

fn function_salt(&self) -> u64

Source

fn eval_fold( &self, _f: &mut dyn FnFoldCtx, ) -> Option<Result<LiteralValue, ExcelError>>

An optional, optimized path for reduction functions (e.g., SUM, COUNT).

This method is called by the engine if the REDUCTION capability is set. It operates on a FnFoldCtx which provides efficient access to input data.

Source

fn eval_map( &self, _m: &mut dyn FnMapCtx, ) -> Option<Result<LiteralValue, ExcelError>>

An optional, optimized path for element-wise functions (e.g., SIN, ABS).

This method is called by the engine if the ELEMENTWISE capability is set. It operates on a FnMapCtx which provides direct access to input/output data stripes for vectorized processing.

Source

fn eval_window<'a, 'b>( &self, _w: &mut SimpleWindowCtx<'a, 'b>, ) -> Option<Result<LiteralValue, ExcelError>>

An optional, optimized path for windowed functions (e.g., MOVING_AVERAGE).

This method is called by the engine if the WINDOWED capability is set.

Source

fn eval_reference<'a, 'b>( &self, _args: &'a [ArgumentHandle<'a, 'b>], _ctx: &dyn FunctionContext, ) -> Option<Result<ReferenceType, ExcelError>>

Optional reference result path. Only called by the interpreter/engine when the callsite expects a reference (e.g., range combinators, by-ref argument positions, or spill sources).

Default implementation returns None, indicating the function does not support returning references. Functions that set RETURNS_REFERENCE should override this.

Source

fn dispatch<'a, 'b>( &self, args: &'a [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext, ) -> Result<LiteralValue, ExcelError>

Dispatch to the most optimal evaluation path based on capabilities. This default implementation checks caps and calls the appropriate eval method.

Implementors§

Source§

impl Function for DateFn

Source§

impl Function for DateValueFn

Source§

impl Function for DayFn

Source§

impl Function for EdateFn

Source§

impl Function for EomonthFn

Source§

impl Function for HourFn

Source§

impl Function for MinuteFn

Source§

impl Function for MonthFn

Source§

impl Function for NowFn

Source§

impl Function for SecondFn

Source§

impl Function for TimeFn

Source§

impl Function for TimeValueFn

Source§

impl Function for TodayFn

Source§

impl Function for YearFn

Source§

impl Function for IsBlankFn

Source§

impl Function for IsErrFn

Source§

impl Function for IsErrorFn

Source§

impl Function for IsFormulaFn

Source§

impl Function for IsLogicalFn

Source§

impl Function for IsNaFn

Source§

impl Function for IsNumberFn

Source§

impl Function for IsTextFn

Source§

impl Function for NFn

Source§

impl Function for NaFn

Source§

impl Function for TFn

Source§

impl Function for TypeFn

Source§

impl Function for AndFn

Source§

impl Function for FalseFn

Source§

impl Function for IfFn

Source§

impl Function for OrFn

Source§

impl Function for TrueFn

Source§

impl Function for IfErrorFn

Source§

impl Function for IfNaFn

Source§

impl Function for IfsFn

Source§

impl Function for NotFn

Source§

impl Function for XorFn

Source§

impl Function for AddressFn

Source§

impl Function for ChooseColsFn

Source§

impl Function for ChooseFn

Source§

impl Function for ChooseRowsFn

Source§

impl Function for ColumnFn

Source§

impl Function for ColumnsFn

Source§

impl Function for FilterFn

Source§

impl Function for HLookupFn

Source§

impl Function for HStackFn

Source§

impl Function for MatchFn

Source§

impl Function for RowFn

Source§

impl Function for RowsFn

Source§

impl Function for UniqueFn

Source§

impl Function for VLookupFn

Source§

impl Function for VStackFn

Source§

impl Function for XLookupFn

Source§

impl Function for AverageFn

Source§

impl Function for CountFn

Source§

impl Function for SumFn

Source§

impl Function for SumProductFn

Source§

impl Function for AverageIfsFn

Source§

impl Function for CountAFn

Source§

impl Function for CountBlankFn

Source§

impl Function for CountIfFn

Source§

impl Function for CountIfsFn

Source§

impl Function for SumIfFn

Source§

impl Function for SumIfsFn

Source§

impl Function for AbsFn

Source§

impl Function for CeilingFn

Source§

impl Function for CeilingMathFn

Source§

impl Function for ExpFn

Source§

impl Function for FloorFn

Source§

impl Function for FloorMathFn

Source§

impl Function for IntFn

Source§

impl Function for LnFn

Source§

impl Function for Log10Fn

Source§

impl Function for LogFn

Source§

impl Function for ModFn

Source§

impl Function for PowerFn

Source§

impl Function for RoundDownFn

Source§

impl Function for RoundFn

Source§

impl Function for RoundUpFn

Source§

impl Function for SignFn

Source§

impl Function for SqrtFn

Source§

impl Function for TruncFn

Source§

impl Function for MaxFn

Source§

impl Function for MinFn

Source§

impl Function for AcosFn

Source§

impl Function for AcoshFn

Source§

impl Function for AcotFn

Source§

impl Function for AsinFn

Source§

impl Function for AsinhFn

Source§

impl Function for Atan2Fn

Source§

impl Function for AtanFn

Source§

impl Function for AtanhFn

Source§

impl Function for CosFn

Source§

impl Function for CoshFn

Source§

impl Function for CotFn

Source§

impl Function for CothFn

Source§

impl Function for CscFn

Source§

impl Function for CschFn

Source§

impl Function for DegreesFn

Source§

impl Function for PiFn

Source§

impl Function for RadiansFn

Source§

impl Function for SecFn

Source§

impl Function for SechFn

Source§

impl Function for SinFn

Source§

impl Function for SinhFn

Source§

impl Function for TanFn

Source§

impl Function for TanhFn

Source§

impl Function for RandBetweenFn

Source§

impl Function for RandFn

Source§

impl Function for IndexFn

Source§

impl Function for OffsetFn

Source§

impl Function for LARGE

Source§

impl Function for MEDIAN

Source§

impl Function for ModeMultiFn

Source§

impl Function for ModeSingleFn

Source§

impl Function for PercentileExc

Source§

impl Function for PercentileInc

Source§

impl Function for QuartileExc

Source§

impl Function for QuartileInc

Source§

impl Function for RankAvgFn

Source§

impl Function for RankEqFn

Source§

impl Function for SMALL

Source§

impl Function for StdevPop

Source§

impl Function for StdevSample

Source§

impl Function for VarPop

Source§

impl Function for VarSample

Source§

impl Function for ConcatFn

Source§

impl Function for ConcatenateFn

Source§

impl Function for ExactFn

Source§

impl Function for FindFn

Source§

impl Function for LeftFn

Source§

impl Function for LenFn

Source§

impl Function for LowerFn

Source§

impl Function for MidFn

Source§

impl Function for ProperFn

Source§

impl Function for ReplaceFn

Source§

impl Function for RightFn

Source§

impl Function for SearchFn

Source§

impl Function for SubstituteFn

Source§

impl Function for TextFn

Source§

impl Function for TextJoinFn

Source§

impl Function for TrimFn

Source§

impl Function for UpperFn

Source§

impl Function for ValueFn