Skip to main content

Function

Trait Function 

Source
pub trait Function:
    Send
    + Sync
    + 'static {
    // Required methods
    fn name(&self) -> &'static str;
    fn eval<'a, 'b, 'c>(
        &self,
        args: &'c [ArgumentHandle<'a, 'b>],
        ctx: &dyn FunctionContext<'b>,
    ) -> Result<CalcValue<'b>, 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_reference<'a, 'b, 'c>(
        &self,
        _args: &'c [ArgumentHandle<'a, 'b>],
        _ctx: &dyn FunctionContext<'b>,
    ) -> Option<Result<ReferenceType, ExcelError>> { ... }
    fn dispatch<'a, 'b, 'c>(
        &self,
        args: &'c [ArgumentHandle<'a, 'b>],
        ctx: &dyn FunctionContext<'b>,
    ) -> Result<CalcValue<'b>, 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<'a, 'b, 'c>( &self, args: &'c [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext<'b>, ) -> Result<CalcValue<'b>, ExcelError>

The unified evaluation path.

This method replaces the separate scalar, fold, and map paths. Functions use the provided ArgumentHandles to access inputs as either scalars or RangeViews (Arrow-backed virtual ranges).

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_reference<'a, 'b, 'c>( &self, _args: &'c [ArgumentHandle<'a, 'b>], _ctx: &dyn FunctionContext<'b>, ) -> 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, 'c>( &self, args: &'c [ArgumentHandle<'a, 'b>], ctx: &dyn FunctionContext<'b>, ) -> Result<CalcValue<'b>, ExcelError>

Dispatch to the unified evaluation path with automatic argument validation.

Implementors§

Source§

impl Function for DAverageFn

Source§

impl Function for DCountAFn

Source§

impl Function for DCountFn

Source§

impl Function for DGetFn

Source§

impl Function for DMaxFn

Source§

impl Function for DMinFn

Source§

impl Function for DProductFn

Source§

impl Function for DStdevFn

Source§

impl Function for DStdevPFn

Source§

impl Function for DSumFn

Source§

impl Function for DVarFn

Source§

impl Function for DVarPFn

Source§

impl Function for DateFn

Source§

impl Function for DateValueFn

Source§

impl Function for DatedifFn

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 NetworkdaysFn

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 WeekdayFn

Source§

impl Function for WeeknumFn

Source§

impl Function for WorkdayFn

Source§

impl Function for YearFn

Source§

impl Function for Bin2DecFn

Source§

impl Function for Bin2HexFn

Source§

impl Function for Bin2OctFn

Source§

impl Function for BitAndFn

Source§

impl Function for BitLShiftFn

Source§

impl Function for BitOrFn

Source§

impl Function for BitRShiftFn

Source§

impl Function for BitXorFn

Source§

impl Function for ComplexFn

Source§

impl Function for ConvertFn

Source§

impl Function for Dec2BinFn

Source§

impl Function for Dec2HexFn

Source§

impl Function for Dec2OctFn

Source§

impl Function for DeltaFn

Source§

impl Function for ErfFn

Source§

impl Function for ErfPreciseFn

Source§

impl Function for ErfcFn

Source§

impl Function for GestepFn

Source§

impl Function for Hex2BinFn

Source§

impl Function for Hex2DecFn

Source§

impl Function for Hex2OctFn

Source§

impl Function for ImAbsFn

Source§

impl Function for ImArgumentFn

Source§

impl Function for ImConjugateFn

Source§

impl Function for ImCosFn

Source§

impl Function for ImDivFn

Source§

impl Function for ImExpFn

Source§

impl Function for ImLnFn

Source§

impl Function for ImLog2Fn

Source§

impl Function for ImLog10Fn

Source§

impl Function for ImPowerFn

Source§

impl Function for ImProductFn

Source§

impl Function for ImRealFn

Source§

impl Function for ImSinFn

Source§

impl Function for ImSqrtFn

Source§

impl Function for ImSubFn

Source§

impl Function for ImSumFn

Source§

impl Function for ImaginaryFn

Source§

impl Function for Oct2BinFn

Source§

impl Function for Oct2DecFn

Source§

impl Function for Oct2HexFn

Source§

impl Function for AccrintFn

Source§

impl Function for AccrintmFn

Source§

impl Function for CumipmtFn

Source§

impl Function for CumprincFn

Source§

impl Function for DbFn

Source§

impl Function for DdbFn

Source§

impl Function for DollardeFn

Source§

impl Function for DollarfrFn

Source§

impl Function for EffectFn

Source§

impl Function for FvFn

Source§

impl Function for IpmtFn

Source§

impl Function for IrrFn

Source§

impl Function for MirrFn

Source§

impl Function for NominalFn

Source§

impl Function for NperFn

Source§

impl Function for NpvFn

Source§

impl Function for PmtFn

Source§

impl Function for PpmtFn

Source§

impl Function for PriceFn

Source§

impl Function for PvFn

Source§

impl Function for RateFn

Source§

impl Function for SlnFn

Source§

impl Function for SydFn

Source§

impl Function for XirrFn

Source§

impl Function for XnpvFn

Source§

impl Function for YieldFn

Source§

impl Function for ErrorTypeFn

Source§

impl Function for IsBlankFn

Source§

impl Function for IsErrFn

Source§

impl Function for IsErrorFn

Source§

impl Function for IsEvenFn

Source§

impl Function for IsFormulaFn

Source§

impl Function for IsLogicalFn

Source§

impl Function for IsNaFn

Source§

impl Function for IsNumberFn

Source§

impl Function for IsOddFn

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 GroupByFn

Source§

impl Function for HLookupFn

Source§

impl Function for HStackFn

Source§

impl Function for MatchFn

Source§

impl Function for PivotByFn

Source§

impl Function for RandArrayFn

Source§

impl Function for RowFn

Source§

impl Function for RowsFn

Source§

impl Function for SortByFn

Source§

impl Function for SortFn

Source§

impl Function for UniqueFn

Source§

impl Function for VLookupFn

Source§

impl Function for VStackFn

Source§

impl Function for XLookupFn

Source§

impl Function for XMatchFn

Source§

impl Function for AverageFn

Source§

impl Function for CountFn

Source§

impl Function for SumFn

Source§

impl Function for SumProductFn

Source§

impl Function for CombinFn

Source§

impl Function for FactFn

Source§

impl Function for GcdFn

Source§

impl Function for LcmFn

Source§

impl Function for PermutFn

Source§

impl Function for AverageIfFn

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 AvedevFn

Source§

impl Function for BetaDistFn

Source§

impl Function for BinomDistFn

Source§

impl Function for ChisqDistFn

Source§

impl Function for ChisqInvFn

Source§

impl Function for ChisqTestFn

Source§

impl Function for ConfidenceNormFn

Source§

impl Function for ConfidenceTFn

Source§

impl Function for CorrelFn

Source§

impl Function for CovariancePFn

Source§

impl Function for CovarianceSFn

Source§

impl Function for DevsqFn

Source§

impl Function for ExponDistFn

Source§

impl Function for FDistFn

Source§

impl Function for FInvFn

Source§

impl Function for FTestFn

Source§

impl Function for FisherFn

Source§

impl Function for FisherInvFn

Source§

impl Function for ForecastLinearFn

Source§

impl Function for FrequencyFn

Source§

impl Function for GammaDistFn

Source§

impl Function for GaussFn

Source§

impl Function for GeomeanFn

Source§

impl Function for GrowthFn

Source§

impl Function for HarmeanFn

Source§

impl Function for HypgeomDistFn

Source§

impl Function for InterceptFn

Source§

impl Function for KurtFn

Source§

impl Function for LARGE

Source§

impl Function for LinestFn

Source§

impl Function for LogestFn

Source§

impl Function for LognormDistFn

Source§

impl Function for LognormInvFn

Source§

impl Function for MEDIAN

Source§

impl Function for MaxIfsFn

Source§

impl Function for MinIfsFn

Source§

impl Function for ModeMultiFn

Source§

impl Function for ModeSingleFn

Source§

impl Function for NegbinomDistFn

Source§

impl Function for NormDistFn

Source§

impl Function for NormInvFn

Source§

impl Function for NormSDistFn

Source§

impl Function for NormSInvFn

Source§

impl Function for PearsonFn

Source§

impl Function for PercentRankExcFn

Source§

impl Function for PercentRankIncFn

Source§

impl Function for PercentileExc

Source§

impl Function for PercentileInc

Source§

impl Function for PhiFn

Source§

impl Function for PoissonDistFn

Source§

impl Function for ProductFn

Source§

impl Function for QuartileExc

Source§

impl Function for QuartileInc

Source§

impl Function for RankAvgFn

Source§

impl Function for RankEqFn

Source§

impl Function for RsqFn

Source§

impl Function for SMALL

Source§

impl Function for SkewFn

Source§

impl Function for SlopeFn

Source§

impl Function for StandardizeFn

Source§

impl Function for StdevPop

Source§

impl Function for StdevSample

Source§

impl Function for SteyxFn

Source§

impl Function for TDist2TFn

Source§

impl Function for TDistFn

Source§

impl Function for TInv2TFn

Source§

impl Function for TInvFn

Source§

impl Function for TTestFn

Source§

impl Function for TrendFn

Source§

impl Function for TrimmeanFn

Source§

impl Function for VarPop

Source§

impl Function for VarSample

Source§

impl Function for WeibullDistFn

Source§

impl Function for ZTestFn

Source§

impl Function for ArrayToTextFn

Source§

impl Function for CharFn

Source§

impl Function for CleanFn

Source§

impl Function for CodeFn

Source§

impl Function for ConcatFn

Source§

impl Function for ConcatenateFn

Source§

impl Function for DollarFn

Source§

impl Function for ExactFn

Source§

impl Function for FindFn

Source§

impl Function for FixedFn

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 ReptFn

Source§

impl Function for RightFn

Source§

impl Function for SearchFn

Source§

impl Function for SubstituteFn

Source§

impl Function for TextAfterFn

Source§

impl Function for TextBeforeFn

Source§

impl Function for TextFn

Source§

impl Function for TextJoinFn

Source§

impl Function for TextSplitFn

Source§

impl Function for TrimFn

Source§

impl Function for UnicharFn

Source§

impl Function for UnicodeFn

Source§

impl Function for UpperFn

Source§

impl Function for ValueFn

Source§

impl Function for ValueToTextFn