#[derive(AggregateDerive)]Expand description
Define an aggregate function for your extension by deriving AggregateDerive on a struct that implements the AggFunc trait.
ⓘ
use limbo_ext::{register_extension, Value, AggregateDerive, AggFunc};
#[derive(AggregateDerive)]
struct SumPlusOne;
impl AggFunc for SumPlusOne {
type State = i64;
const NAME: &'static str = "sum_plus_one";
const ARGS: i32 = 1;
fn step(state: &mut Self::State, args: &[Value]) {
let Some(val) = args[0].to_integer() else {
return;
};
*state += val;
}
fn finalize(state: Self::State) -> Value {
Value::from_integer(state + 1)
}
}