From e058744d8f4dc1d87fe2a28cd79bc385e934f563 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Sat, 18 May 2019 10:54:05 +0200 Subject: [PATCH] src/backup/chunk_stream.rs: simplify code --- src/backup/chunk_stream.rs | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/backup/chunk_stream.rs b/src/backup/chunk_stream.rs index e21224dc..eac9dca1 100644 --- a/src/backup/chunk_stream.rs +++ b/src/backup/chunk_stream.rs @@ -9,13 +9,12 @@ pub struct ChunkStream, Error=Error>> { input: S, chunker: Chunker, buffer: Option>, - rest: Option>, } impl , Error=Error>> ChunkStream { pub fn new(input: S) -> Self { - Self { input, chunker: Chunker::new(4 * 1024 * 1024), buffer: None, rest: None } + Self { input, chunker: Chunker::new(4 * 1024 * 1024), buffer: None } } } @@ -34,18 +33,9 @@ impl , Error=Error>> Stream for ChunkStream { return Ok(Async::NotReady); } Ok(Async::Ready(None)) => { - let mut data = self.buffer.take().or_else(|| Some(vec![])).unwrap(); - if let Some(rest) = self.rest.take() { data.extend(rest); } - - if data.len() > 0 { - return Ok(Async::Ready(Some(data))); - } else { - return Ok(Async::Ready(None)); - } + return Ok(Async::Ready(self.buffer.take())); } - Ok(Async::Ready(Some(mut data))) => { - - if let Some(rest) = self.rest.take() { data.extend(rest); } + Ok(Async::Ready(Some(data))) => { let buffer = self.buffer.get_or_insert_with(|| Vec::with_capacity(1024*1024)); let boundary = self.chunker.scan(&data); @@ -60,10 +50,11 @@ impl , Error=Error>> Stream for ChunkStream { let (left, right) = data.split_at(boundary); buffer.extend(left); - let rest = self.rest.get_or_insert_with(|| Vec::with_capacity(right.len())); - rest.extend(right); + let result = self.buffer.take(); - return Ok(Async::Ready(self.buffer.take())); + self.buffer = Some(Vec::from(right)); + + return Ok(Async::Ready(result)); } else { panic!("got unexpected chunk boundary from chunker"); }