Skip to content

Instantly share code, notes, and snippets.

@Cykooz
Created December 10, 2022 22:04
Show Gist options
  • Save Cykooz/c38f3dd59cfcf43f103496ab8b6580a2 to your computer and use it in GitHub Desktop.
Save Cykooz/c38f3dd59cfcf43f103496ab8b6580a2 to your computer and use it in GitHub Desktop.
Process data from iterator with pre-readming.
/// Pre-reading data from memory increases speed slightly for some operations
#[inline(always)]
fn foreach_with_pre_reading<D, I>(
mut iter: impl Iterator<Item = I>,
mut read_data: impl FnMut(I) -> D,
mut process_data: impl FnMut(D),
) {
let mut next_data: D;
if let Some(src) = iter.next() {
next_data = read_data(src);
for src in iter {
let data = next_data;
next_data = read_data(src);
process_data(data);
}
process_data(next_data);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment