pub const CHUNK_SIZE: usize = 1 << 12;
pub struct Chunk {
inner: Vec<u8>
}
impl Chunk {
pub fn new() -> io::Result<Self> {
let mut vec = Vec::new();
match vec.try_reserve(CHUNK_SIZE) {
Ok(_) => Ok(Chunk { inner: vec }),
Err(_) => Err(io::Error::new(ErrorKind::OutOfMemory, "Could not allocate new chunk!")),
}
}
pub fn len(&self) -> usize {
self.inner.len()
}
pub fn set(&mut self, index: usize, value: u8) {
assert!(index < CHUNK_SIZE);
self.inner[index] = value;
}
pub fn as_slice(&self) -> &[u8] {
self.inner.as_slice()
}
}