pub struct BufferPool {
pool: Vec<Vec<u8>>,
}
impl BufferPool {
pub fn new(cap: usize) -> BufferPool {
BufferPool {
pool: Vec::with_capacity(cap),
}
}
pub fn get(&mut self, default_cap: usize) -> Vec<u8> {
self.pool
.pop()
.unwrap_or_else(|| Vec::with_capacity(default_cap))
}
pub fn put(&mut self, mut buf: Vec<u8>) {
if self.pool.len() < self.pool.capacity() {
unsafe {
buf.set_len(0);
}
self.pool.push(buf);
}
}
}