in src/defs/eif_hasher.rs [117:133]
fn write(&mut self, buf: &[u8]) -> IoResult<usize> {
if self.block_size == 0 {
self.hasher.write_all(buf)?;
return Ok(buf.len());
}
let mut remaining = buf;
while self.block.len() + remaining.len() >= self.block_size {
let (for_hasher, for_next_iter) =
remaining.split_at(self.block_size - self.block.len());
self.block.extend_from_slice(for_hasher);
self.consume_block()?;
remaining = for_next_iter;
}
self.block.extend_from_slice(remaining);
Ok(buf.len())
}