```
pub trait ThresholdTotal<G: Scope, K: ExchangeData, R: ExchangeData + Semigroup>{
// Required method
fn threshold_semigroup<R2, F>(&self, thresh: F) -> Collection<G, K, R2>
where R2: Semigroup,
F: FnMut(&K, &R, Option<&R>) -> Option<R2> + 'static;
// Provided methods
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> { ... }
}
```

## Expand description

Extension trait for the `distinct`

differential dataflow method.

## Required Methods§

source#### fn threshold_semigroup<R2, F>(&self, thresh: F) -> Collection<G, K, R2>

#### fn threshold_semigroup<R2, F>(&self, thresh: F) -> Collection<G, K, R2>

Reduces the collection to one occurrence of each distinct element.

## Provided Methods§

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

#### 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

```
use differential_dataflow::input::Input;
use differential_dataflow::operators::ThresholdTotal;
::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);
});
```

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

#### 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

```
use differential_dataflow::input::Input;
use differential_dataflow::operators::ThresholdTotal;
::timely::example(|scope| {
// report the number of occurrences of each key
scope.new_collection_from(1 .. 10).1
.map(|x| x / 3)
.distinct_total();
});
```

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

#### 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`

.

## Object Safety§

This trait is

**not**object safe.