Trait rusqlite::functions::Aggregate [−][src]
pub trait Aggregate<A, T> where
A: RefUnwindSafe + UnwindSafe,
T: ToSql, {
fn init(&self, _: &mut Context<'_>) -> Result<A>;
fn step(&self, _: &mut Context<'_>, _: &mut A) -> Result<()>;
fn finalize(&self, _: &mut Context<'_>, _: Option<A>) -> Result<T>;
}
Expand description
feature = "functions"
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
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
there are no rows.)
“step” function called once for each row in an aggregate group. May be called 0 times if there are no rows.
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
.
The passed context will have no arguments.