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