before: ```rust fn read(&mut self, buf: &mut [u8]) -> io::Result { let mut read_buf = vec![0; buf.len(); let bytes_read = self.0.read(&mut read_buf)?; if bytes_read == 0 { return Ok(0); } read_buf.truncate(bytes_read); decryption stuff Ok(bytes_read) } ``` after: ```rust fn read(&mut self, buf: &mut [u8]) -> io::Result { let mut read_buf = Vec::with_capacity(buf.len()); let bytes_read = (&self.0).take((buf.len()) as u64).read_to_end(&mut read_buf)?; if bytes_read == 0 { return Ok(0) } decryption stuff, doesnt matter. Ok(bytes_read) } ```