gix_pack/index/
util.rs

1use std::time::Instant;
2
3use gix_features::progress::{self, Progress};
4
5use crate::exact_vec;
6
7pub(crate) fn index_entries_sorted_by_offset_ascending(
8    idx: &crate::index::File,
9    progress: &mut dyn Progress,
10) -> Vec<crate::index::Entry> {
11    progress.init(Some(idx.num_objects as usize), progress::count("entries"));
12    let start = Instant::now();
13
14    let mut v = exact_vec(idx.num_objects as usize);
15    for entry in idx.iter() {
16        v.push(entry);
17        progress.inc();
18    }
19    v.sort_by_key(|e| e.pack_offset);
20
21    progress.show_throughput(start);
22    v
23}