[][src]Trait differential_dataflow::operators::threshold::ThresholdTotal

pub trait ThresholdTotal<G: Scope, K: ExchangeData, R: ExchangeData + Semigroup> where
    G::Timestamp: TotalOrder + Lattice + Ord
{ fn threshold_semigroup<R2, F>(&self, thresh: F) -> Collection<G, K, R2>
    where
        R2: Semigroup,
        F: FnMut(&K, &R, Option<&R>) -> Option<R2> + 'static
; fn threshold_total<R2: Abelian, F: FnMut(&K, &R) -> R2 + 'static>(
        &self,
        thresh: F
    ) -> Collection<G, K, R2> { ... }
fn distinct_total(&self) -> Collection<G, K, isize> { ... }
fn distinct_total_core<R2: Abelian + From<i8>>(
        &self
    ) -> Collection<G, K, R2> { ... } }

Extension trait for the distinct differential dataflow method.

Required methods

fn threshold_semigroup<R2, F>(&self, thresh: F) -> Collection<G, K, R2> where
    R2: Semigroup,
    F: FnMut(&K, &R, Option<&R>) -> Option<R2> + 'static, 

Reduces the collection to one occurrence of each distinct element.

Loading content...

Provided methods

fn threshold_total<R2: Abelian, F: FnMut(&K, &R) -> R2 + 'static>(
    &self,
    thresh: F
) -> Collection<G, K, R2>

Reduces the collection to one occurrence of each distinct element.

Examples

extern crate timely;
extern crate differential_dataflow;

use differential_dataflow::input::Input;
use differential_dataflow::operators::ThresholdTotal;

fn main() {
    ::timely::example(|scope| {
        // report the number of occurrences of each key
        scope.new_collection_from(1 .. 10).1
             .map(|x| x / 3)
             .threshold_total(|_,c| c % 2);
    });
}

fn distinct_total(&self) -> Collection<G, K, isize>

Reduces the collection to one occurrence of each distinct element.

This reduction only tests whether the weight associated with a record is non-zero, and otherwise ignores its specific value. To take more general actions based on the accumulated weight, consider the threshold method.

Examples

extern crate timely;
extern crate differential_dataflow;

use differential_dataflow::input::Input;
use differential_dataflow::operators::ThresholdTotal;

fn main() {
    ::timely::example(|scope| {
        // report the number of occurrences of each key
        scope.new_collection_from(1 .. 10).1
             .map(|x| x / 3)
             .distinct_total();
    });
}

fn distinct_total_core<R2: Abelian + From<i8>>(&self) -> Collection<G, K, R2>

Distinct for general integer differences.

This method allows distinct to produce collections whose difference type is something other than an isize integer, for example perhaps an i32.

Loading content...

Implementors

impl<G: Scope, K: ExchangeData + Hashable, R: ExchangeData + Semigroup> ThresholdTotal<G, K, R> for Collection<G, K, R> where
    G::Timestamp: TotalOrder + Lattice + Ord
[src]

impl<G: Scope, T1> ThresholdTotal<G, <T1 as TraceReader>::Key, <T1 as TraceReader>::R> for Arranged<G, T1> where
    G::Timestamp: TotalOrder + Lattice + Ord,
    T1: TraceReader<Val = (), Time = G::Timestamp> + Clone + 'static,
    T1::Key: ExchangeData,
    T1::R: ExchangeData + Semigroup,
    T1::Batch: BatchReader<T1::Key, (), G::Timestamp, T1::R>,
    T1::Cursor: Cursor<T1::Key, (), G::Timestamp, T1::R>, 
[src]

Loading content...