fn write()

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())
	}