From 7898cc8cfdf4b5992fc055430300a990747aba05 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Wed, 28 Oct 2026 10:52:53 +0000 Subject: [PATCH] Refactor functions for strict Clippy checks --- crates/functions/src/criteria.rs | 14 +++++++++++--- crates/functions/src/database.rs | 6 +++++- crates/functions/src/engineering/bessel.rs | 2 +- crates/functions/src/engineering/complex.rs | 2 +- crates/functions/src/engineering/units.rs | 2 +- crates/functions/src/financial/day_count.rs | 4 +++- crates/functions/src/financial/depreciation.rs | 2 +- crates/functions/src/financial/securities.rs | 7 +++++-- crates/functions/src/financial/tvm.rs | 2 +- crates/functions/src/math/criteria.rs | 2 +- crates/functions/src/math/matrix.rs | 2 +- crates/functions/src/math/roman_base.rs | 2 +- crates/functions/src/stat/descriptive.rs | 2 +- crates/functions/src/stat/distributions.rs | 5 ++++- crates/functions/src/stat/regression.rs | 2 +- 15 files changed, 38 insertions(+), 18 deletions(-) diff --git a/crates/functions/src/criteria.rs b/crates/functions/src/criteria.rs index 2d8218f3e..fd5342352 100644 --- a/crates/functions/src/criteria.rs +++ b/crates/functions/src/criteria.rs @@ -389,7 +389,7 @@ mod tests { } #[test] - fn criteria() { + fn text_criteria() { assert!(m(">5", Value::Number(6.0))); assert!(!m(">5", Value::Number(5.0))); assert!(m(">=5", Value::Number(5.0))); @@ -402,6 +402,10 @@ mod tests { assert!(m("?pple", Value::from("apple"))); assert!(m("~*", Value::from("*"))); assert!(!m("~*", Value::from("x"))); + } + + #[test] + fn blank_criteria() { assert!(m("", Value::Empty)); assert!(m("", Value::from(""))); assert!(!m("", Value::Number(0.0))); @@ -409,10 +413,14 @@ mod tests { assert!(!m("=", Value::from("a"))); assert!(m("<>", Value::from("a"))); assert!(!m("<>", Value::Empty)); - assert!(m("TRUE", Value::Bool(true))); - // A bare "<=" or ">=" never matches an empty string (Excel 365: COUNTIF(="", "<=") is 0). assert!(!m("<=", Value::from(""))); assert!(!m(">=", Value::from(""))); + // A bare "<=" or ">=" never matches an empty string (Excel 365: COUNTIF(="", "<=") is 0). + } + + #[test] + fn typed_criteria() { + assert!(m("TRUE", Value::Bool(true))); assert!(m(" Option { } } +/// A criteria row: its index and its conditions (criteria column, database column or `None` +/// when the label is unknown, criterion). +type CriteriaRow = (usize, Vec<(usize, Option, Criterion)>); + /// Rows (1-based within the database, excluding the header) of matching records. fn matching_records(db: &Array, crit: &Array, ctx: &mut dyn Ctx) -> Vec { // Per criteria row: its index and a list of (criteria column, database column or None when // the label is unknown, criterion). - let mut rows: Vec<(usize, Vec<(usize, Option, Criterion)>)> = Vec::new(); + let mut rows: Vec = Vec::new(); for r in 1..crit.rows { let mut conds = Vec::new(); for c in 0..crit.cols { diff --git a/crates/functions/src/engineering/bessel.rs b/crates/functions/src/engineering/bessel.rs index 34be81783..c91157318 100644 --- a/crates/functions/src/engineering/bessel.rs +++ b/crates/functions/src/engineering/bessel.rs @@ -1,4 +1,4 @@ -use super::*; +use super::{Arg, CellError, Ctx, PI, R, Value, num, num_val}; // --------------------------------------------------------------------------------------------- // Bessel functions diff --git a/crates/functions/src/engineering/complex.rs b/crates/functions/src/engineering/complex.rs index 86ab6b535..a04c19e8f 100644 --- a/crates/functions/src/engineering/complex.rs +++ b/crates/functions/src/engineering/complex.rs @@ -1,4 +1,4 @@ -use super::*; +use super::{Arg, CellError, Ctx, R, Value, flatten, has, num, num_val, number_to_text, scalar, text, text_val}; // --------------------------------------------------------------------------------------------- // Complex numbers diff --git a/crates/functions/src/engineering/units.rs b/crates/functions/src/engineering/units.rs index e54abd87a..b6c4faf2b 100644 --- a/crates/functions/src/engineering/units.rs +++ b/crates/functions/src/engineering/units.rs @@ -1,4 +1,4 @@ -use super::*; +use super::{Arg, CellError, Ctx, R, Value, num, num_val, text}; // --------------------------------------------------------------------------------------------- // CONVERT diff --git a/crates/functions/src/financial/day_count.rs b/crates/functions/src/financial/day_count.rs index f91e7968f..a42156e17 100644 --- a/crates/functions/src/financial/day_count.rs +++ b/crates/functions/src/financial/day_count.rs @@ -1,4 +1,6 @@ -use super::*; +use super::{ + Arg, CellError, Ctx, DateSystem, R, Value, datetime_from_serial, days_in_month, is_leap, max_serial, num, num_val, opt_num, serial_from_ymd, +}; // --------------------------------------------------------------------------------------------- // Dates and day counts diff --git a/crates/functions/src/financial/depreciation.rs b/crates/functions/src/financial/depreciation.rs index d656aa76f..e7b456c69 100644 --- a/crates/functions/src/financial/depreciation.rs +++ b/crates/functions/src/financial/depreciation.rs @@ -1,5 +1,5 @@ use super::day_count::{basis_arg, date, year_frac}; -use super::*; +use super::{Arg, CellError, Ctx, R, Value, num, num_val, opt_bool, opt_num}; // --------------------------------------------------------------------------------------------- // Depreciation diff --git a/crates/functions/src/financial/securities.rs b/crates/functions/src/financial/securities.rs index cfecd763a..ea696c8a6 100644 --- a/crates/functions/src/financial/securities.rs +++ b/crates/functions/src/financial/securities.rs @@ -1,5 +1,5 @@ use super::day_count::{basis_arg, coup_daybs, coup_days, coup_daysnc, coupons, date, day_count, freq_arg, shift_months, year_basis, year_frac, ymd}; -use super::*; +use super::{Arg, CellError, Ctx, DateSystem, R, Value, days_in_month, has, num, num_val, opt_bool}; // --------------------------------------------------------------------------------------------- // Securities @@ -479,7 +479,10 @@ fn odd_last(sys: DateSystem, settle: f64, mat: f64, last: f64, freq: f64, basis: } /// settlement, maturity, last_interest, rate, yld/pr, redemption, frequency, [basis]. -fn odd_last_args(a: &[Arg], sys: DateSystem) -> R<((f64, f64, f64), f64, f64, f64, f64)> { +/// `((dc, acc, dsc), rate, yield-or-price, redemption, frequency)` of an odd-last-period call. +type OddLastArgs = ((f64, f64, f64), f64, f64, f64, f64); + +fn odd_last_args(a: &[Arg], sys: DateSystem) -> R { let (s, m, last) = (date(a, 0)?, date(a, 1)?, date(a, 2)?); let (rate, x, red) = (num(a, 3)?, num(a, 4)?, num(a, 5)?); let (f, basis) = (freq_arg(a, 6)?, basis_arg(a, 7)?); diff --git a/crates/functions/src/financial/tvm.rs b/crates/functions/src/financial/tvm.rs index a62d29bb5..61710f0bd 100644 --- a/crates/functions/src/financial/tvm.rs +++ b/crates/functions/src/financial/tvm.rs @@ -1,4 +1,4 @@ -use super::*; +use super::{Arg, CellError, Ctx, R, Value, array_numbers, as_array, flatten, num, num_val, numbers, opt_num, type_arg}; // --------------------------------------------------------------------------------------------- // Time value of money diff --git a/crates/functions/src/math/criteria.rs b/crates/functions/src/math/criteria.rs index fd77aed34..ac968b991 100644 --- a/crates/functions/src/math/criteria.rs +++ b/crates/functions/src/math/criteria.rs @@ -1,4 +1,4 @@ -use super::*; +use super::{Arg, Array, CellError, Criterion, Ctx, R, Value, as_array, has, num_val}; // --------------------------------------------------------------------------------------------- // Criteria aggregates diff --git a/crates/functions/src/math/matrix.rs b/crates/functions/src/math/matrix.rs index 9bfb75c53..69917eae0 100644 --- a/crates/functions/src/math/matrix.rs +++ b/crates/functions/src/math/matrix.rs @@ -1,4 +1,4 @@ -use super::*; +use super::{Arg, CellError, Ctx, MAX_CELLS, R, Value, array_val, as_array, check_size, num, num_val, to_sig_digits}; // --------------------------------------------------------------------------------------------- // Matrices diff --git a/crates/functions/src/math/roman_base.rs b/crates/functions/src/math/roman_base.rs index 931552e93..16376c4ec 100644 --- a/crates/functions/src/math/roman_base.rs +++ b/crates/functions/src/math/roman_base.rs @@ -1,4 +1,4 @@ -use super::*; +use super::{Arg, CellError, Ctx, R, Value, num, num_val, opt_num, text, text_val}; // --------------------------------------------------------------------------------------------- // Number systems diff --git a/crates/functions/src/stat/descriptive.rs b/crates/functions/src/stat/descriptive.rs index af4c53607..299873398 100644 --- a/crates/functions/src/stat/descriptive.rs +++ b/crates/functions/src/stat/descriptive.rs @@ -1,4 +1,4 @@ -use super::*; +use super::{Arg, C, CellError, R, Value, arg, array_numbers, array_val, as_array, has, num, num_val, opt_num}; // --------------------------------------------------------------------------------------------- // Basic helpers over number lists diff --git a/crates/functions/src/stat/distributions.rs b/crates/functions/src/stat/distributions.rs index cb2f0398a..18027e654 100644 --- a/crates/functions/src/stat/distributions.rs +++ b/crates/functions/src/stat/distributions.rs @@ -1,5 +1,8 @@ use super::descriptive::{arg_nums, arg_pairs, mean, var_s}; -use super::*; +use super::{ + Arg, C, CellError, R, Value, arg, as_array, boolean, erf, gamma, has, invert, ln_beta, ln_gamma, norm_cdf, norm_inv, norm_pdf, num, num_val, + reg_gamma_p, reg_gamma_q, reg_inc_beta, +}; // --------------------------------------------------------------------------------------------- // Distributions diff --git a/crates/functions/src/stat/regression.rs b/crates/functions/src/stat/regression.rs index 410b086d4..55bf0aec7 100644 --- a/crates/functions/src/stat/regression.rs +++ b/crates/functions/src/stat/regression.rs @@ -1,5 +1,5 @@ use super::descriptive::{arg_pairs, intercept, moments, slope}; -use super::*; +use super::{Arg, C, CellError, R, Value, arg, array_val, as_array, boolean, has, num, num_val}; pub(super) fn forecast(a: &[Arg], _: C) -> R { let x = num(a, 0)?;