in src/blockio.rs [135:160]
fn write(&mut self, buf: &[u8]) -> Result<usize, io::Error> {
let mut bytes_written: usize = 0;
let mut size = buf.len();
while size > 0 {
let left = BLOCK_MAX_SIZE - self.pos;
let count = cmp::min(size, left);
{
let to = &mut self.buffer[self.pos..self.pos + count];
let from = &buf[bytes_written..bytes_written + count];
to.copy_from_slice(from);
}
self.pos += count;
bytes_written += count;
size -= count;
if self.pos == BLOCK_MAX_SIZE {
self.flush_buffer()?;
}
}
Ok(buf.len())
}