dfir_rs/compiled/pull/
accumulate_all.rs

1use std::collections::HashMap;
2use std::hash::{BuildHasher, Hash};
3
4use futures::stream::{Stream, StreamExt};
5
6use crate::util::accumulator::Accumulator;
7
8/// Use the accumulator `accum` to accumulate all entries in the stream `st` into the `hash_map`.
9pub async fn accumulate_all<Key, ValAccum, ValIn>(
10    accum: &mut impl Accumulator<ValAccum, ValIn>,
11    hash_map: &mut HashMap<Key, ValAccum, impl BuildHasher>,
12    st: impl Stream<Item = (Key, ValIn)>,
13) where
14    Key: Eq + Hash,
15{
16    futures::pin_mut!(st);
17    while let Some((key, item)) = st.next().await {
18        accum.accumulate(hash_map.entry(key), item);
19    }
20}