Agg

Enum Agg 

Source
pub enum Agg {
    Min,
    Max,
    Sum,
}
Expand description

Which aggregate a Op::GroupBy maintains.

Three rather than four: count is the join’s own tally (Matching::Count) because a count needs nothing of the row at all.

Every one of them is a function of which numbers its group’s rows project to and of nothing else — not of the order they arrived in, not of the order the collection holds them in. That is what makes a maintained answer and a recomputed one the same value rather than nearly the same one, and it is why sum waited for a spelling rather than for an implementation (docs/99 §99.9 item 6). It is a statement about the answer rather than about the state: what an operator has to keep in order to give it differs per aggregate, and for a sum it is not a multiset at all.

Variants§

§

Min

The smallest projection in the group, by crate::Value’s own total order — which is what list_min compares, so the maintained answer and the recomputed one are the same function of the same set.

§

Max

The largest, and it costs what Agg::Min costs.

§

Sum

The total of the group’s projections — list_sum, whose answer is Int and whose empty group is 0 rather than None, which is what Matching::Total exists to say.

This one keeps no multiset. A running total moves by +n and -n as rows arrive and leave, so the group’s distinct values are not a thing it has to know, and the probe is O(1) rather than the O(distinct) a sum derived from Agg::Min’s tree would cost. The accumulator is wider than the answer for list_sum’s reason: the sum is exact and the failure is a property of the total, not of the way there.

Implementations§

Source§

impl Agg

Source

pub fn name(self) -> &'static str

The name that reaches a sharing key and beck explain query.

Trait Implementations§

Source§

impl Clone for Agg

Source§

fn clone(&self) -> Agg

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Agg

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Agg

Source§

fn eq(&self, other: &Agg) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Agg

Source§

impl Eq for Agg

Source§

impl StructuralPartialEq for Agg

Auto Trait Implementations§

§

impl Freeze for Agg

§

impl RefUnwindSafe for Agg

§

impl Send for Agg

§

impl Sync for Agg

§

impl Unpin for Agg

§

impl UnwindSafe for Agg

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.