Trait rusqlite::functions::Aggregate
[−]
[src]
pub trait Aggregate<A, T> where
T: ToSql, { fn init(&self) -> A; fn step(&self, _: &mut Context, _: &mut A) -> Result<()>; fn finalize(&self, _: Option<A>) -> Result<T>; }
Aggregate is the callback interface for user-defined aggregate function.
A
is the type of the aggregation context and T
is the type of the final result.
Implementations should be stateless.
Required Methods
fn init(&self) -> A
Initializes the aggregation context. Will be called prior to the first call
to step()
to set up the context for an invocation of the function. (Note:
init()
will not be called if the there are no rows.)
fn step(&self, _: &mut Context, _: &mut A) -> Result<()>
"step" function called once for each row in an aggregate group. May be called 0 times if there are no rows.
fn finalize(&self, _: Option<A>) -> Result<T>
Computes and returns the final result. Will be called exactly once for each
invocation of the function. If step()
was called at least once, will be given
Some(A)
(the same A
as was created by init
and given to step
); if step()
was not called (because the function is running against 0 rows), will be given
None
.