use crate::extension::{end_of_index_entry::SIGNATURE, Signature};
pub fn write_to(
    mut out: impl std::io::Write,
    hash_kind: gix_hash::Kind,
    offset_to_extensions: u32,
    prior_extensions: impl IntoIterator<Item = (Signature, u32)>,
) -> Result<(), std::io::Error> {
    out.write_all(&SIGNATURE)?;
    let extension_size: u32 = 4 + hash_kind.len_in_bytes() as u32;
    out.write_all(&extension_size.to_be_bytes())?;
    out.write_all(&offset_to_extensions.to_be_bytes())?;
    let mut hasher = gix_features::hash::hasher(hash_kind);
    for (signature, size) in prior_extensions {
        hasher.update(&signature);
        hasher.update(&size.to_be_bytes());
    }
    out.write_all(&hasher.digest())?;
    Ok(())
}