pub fn propagate_core<'scope, N, L, Tr, F, R>(
edges: Arranged<'scope, Tr>,
nodes: VecCollection<'scope, Tr::Time, (N, L), R>,
logic: F,
) -> VecCollection<'scope, Tr::Time, (N, L), R>where
N: ExchangeData + Hash,
R: ExchangeData + Abelian + Multiply<R, Output = R> + From<i8>,
L: ExchangeData,
Tr: TraceReader<Batch: Navigable, Time: Hash> + Clone + 'static,
for<'a> BatchCursor<Tr>: Cursor<Key<'a> = &'a N, Val<'a> = &'a N, Time = Tr::Time, Diff = R>,
F: Fn(&L) -> u64 + Clone + 'static,Expand description
Propagates labels forward, retaining the minimum label.
This variant takes a pre-arranged edge collection, to facilitate re-use, and allows
a method logic to specify the rounds in which we introduce various labels. The output
of `logic should be a number in the interval [0,64],