use super::*;
impl<E: Environment, const RATE: usize> HashMany for Poseidon<E, RATE> {
type Input = Field<E>;
type Output = Field<E>;
#[inline]
fn hash_many(&self, input: &[Self::Input], num_outputs: u16) -> Vec<Self::Output> {
let mut preimage = Vec::with_capacity(RATE + input.len());
preimage.push(self.domain);
preimage.push(Field::<E>::from_u128(input.len() as u128));
preimage.resize(RATE, Field::<E>::zero()); preimage.extend_from_slice(input);
let mut sponge = PoseidonSponge::<E, RATE, CAPACITY>::new(&self.parameters);
sponge.absorb(&preimage);
sponge.squeeze(num_outputs).into_vec()
}
}