Skip to main content

Fold

Struct Fold 

Source
pub struct Fold<V, A, S, SF, OF> { /* private fields */ }
Expand description

An aggregator that can be expressed as a fold of the input Z-set.

The Fold aggregator iterates over (key, weight) pairs with non-zero weights updating the value of an accumulator with a user-provided step function. The final aggregate is produced by applying a user-provided output function to the final value of the accumulator.

§Type arguments

  • A - accumulator
  • S - semigroup structure used to compute aggregates piecewise
  • SF - step function
  • OF - output function

Implementations§

Source§

impl<V, A, S, SF> Fold<V, A, S, SF, fn(A) -> A>

Source

pub fn new(init: A, step: SF) -> Self

Create a Fold aggregator with initial accumulator value init, step function step, and identity output function.

This constructor caters for the common case when the final value of the accumulator is the desired aggregate, i.e., no output processing is required.

Source§

impl<V, A, S, SF, OF> Fold<V, A, S, SF, OF>

Source

pub fn with_output(init: A, step: SF, output: OF) -> Self

Create a Fold aggregator with initial accumulator value init, step function step, and output function output.

Trait Implementations§

Source§

impl<V, T, R, A, S, O, SF, OF> Aggregator<V, T, R> for Fold<V, A, S, SF, OF>
where T: Timestamp, V: DBData, R: DBWeight + MonoidValue, A: DBData, SF: Fn(&mut A, &V, R) + Clone + 'static, OF: Fn(A) -> O + Clone + 'static, S: Semigroup<A> + Clone + 'static, O: DBData,

Source§

type Accumulator = A

Accumulator type returned by Self::finalize.
Source§

type Output = O

Aggregate type produced by this aggregator.
Source§

type Semigroup = S

Semigroup structure over aggregate values. Read more
Source§

fn aggregate<VTrait, RTrait>( &self, cursor: &mut dyn Cursor<VTrait, DynUnit, T, RTrait>, ) -> Option<Self::Accumulator>
where VTrait: DataTrait + ?Sized, RTrait: WeightTrait + ?Sized, V: Erase<VTrait>, R: Erase<RTrait>,

Takes a cursor pointing to the first key of a Z-set and outputs an aggregate of the Z-set. Read more
Source§

fn finalize(&self, acc: Self::Accumulator) -> Self::Output

Compute the final value of the aggregate.
Source§

fn aggregate_and_finalize<KTrait, RTrait>( &self, cursor: &mut dyn Cursor<KTrait, DynUnit, T, RTrait>, ) -> Option<Self::Output>
where KTrait: DataTrait + ?Sized, RTrait: WeightTrait + ?Sized, K: Erase<KTrait>, R: Erase<RTrait>,

Applies aggregate to cursor followed by finalize.
Source§

impl<V: Clone, A: Clone, S: Clone, SF: Clone, OF: Clone> Clone for Fold<V, A, S, SF, OF>

Source§

fn clone(&self) -> Fold<V, A, S, SF, OF>

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

Auto Trait Implementations§

§

impl<V, A, S, SF, OF> Freeze for Fold<V, A, S, SF, OF>
where A: Freeze, SF: Freeze, OF: Freeze,

§

impl<V, A, S, SF, OF> RefUnwindSafe for Fold<V, A, S, SF, OF>

§

impl<V, A, S, SF, OF> Send for Fold<V, A, S, SF, OF>
where A: Send, SF: Send, OF: Send, V: Send, S: Send,

§

impl<V, A, S, SF, OF> Sync for Fold<V, A, S, SF, OF>
where A: Sync, SF: Sync, OF: Sync, V: Sync, S: Sync,

§

impl<V, A, S, SF, OF> Unpin for Fold<V, A, S, SF, OF>
where A: Unpin, SF: Unpin, OF: Unpin, V: Unpin, S: Unpin,

§

impl<V, A, S, SF, OF> UnsafeUnpin for Fold<V, A, S, SF, OF>
where A: UnsafeUnpin, SF: UnsafeUnpin, OF: UnsafeUnpin,

§

impl<V, A, S, SF, OF> UnwindSafe for Fold<V, A, S, SF, OF>

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> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
Source§

impl<T> AsAny for T
where T: 'static,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

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<F, W, T, D> Deserialize<With<T, W>, D> for F
where W: DeserializeWith<F, T, D>, D: Fallible + ?Sized, F: ?Sized,

Source§

fn deserialize( &self, deserializer: &mut D, ) -> Result<With<T, W>, <D as Fallible>::Error>

Deserializes using the given deserializer
Source§

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Gets the layout of the type.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The type for metadata in pointers and references to Self.
Source§

impl<T> Pointee for T

Source§

type Metadata = ()

The type for metadata in pointers and references to Self.
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Data for T
where T: Clone + 'static,

Source§

impl<T> ErasedDestructor for T
where T: 'static,