distinct method
Implementation
OffsetIterator<T> distinct({
bool Function(T prev, T next)? equals,
String name = 'distinct',
SeedCallback<T>? seed,
int retention = 0,
bool? cancelOnError,
bool bubbleCancellation = true,
}) {
bool Function(T, T) eq = equals ?? (prev, next) => prev == next;
Option<T> prev = const None();
seed = generateSeed(override: seed);
return transform(
(item) {
if (O.isNone(prev)) {
prev = Some(item);
return [item];
}
final duplicate = eq((prev as Some).value, item);
prev = Some(item);
return duplicate ? const [] : [item];
},
seed: () {
if (seed != null) prev = seed();
return prev;
},
name: name,
retention: retention,
bubbleCancellation: bubbleCancellation,
cancelOnError: cancelOnError,
);
}