use crate::Word;
use super::Mutation;
#[cfg(test)]
mod tests;
pub fn encode_mutation_size(mutation: &Mutation) -> usize {
2 + mutation.key.len() + mutation.value.len()
}
pub fn encode_mutation(mutation: &Mutation) -> impl Iterator<Item = Word> + use<'_> {
let key_len: Word = mutation.key.len().try_into().unwrap_or(Word::MAX);
let value_len: Word = mutation.value.len().try_into().unwrap_or(Word::MAX);
std::iter::once(key_len)
.chain(mutation.key.iter().copied())
.chain(std::iter::once(value_len))
.chain(mutation.value.iter().copied())
}
pub fn encode_mutations(mutations: &[Mutation]) -> impl Iterator<Item = Word> + use<'_> {
let len: Word = mutations.len().try_into().unwrap_or(Word::MAX);
std::iter::once(len).chain(mutations.iter().flat_map(encode_mutation))
}