From 8ef1e56fcceba6adaec43826fa4a490b16ab1eb9 Mon Sep 17 00:00:00 2001 From: Jiahao XU Date: Mon, 13 Jun 2022 01:05:07 +1000 Subject: [PATCH] Take `Receiver` by value in `ReadableRx::new` It would remove the lifetime and make reasoning the code much easier. It would also unblock the next commit I am going to make. Signed-off-by: Jiahao XU --- src/helpers/async_extracter.rs | 8 ++++---- src/helpers/readable_rx.rs | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/helpers/async_extracter.rs b/src/helpers/async_extracter.rs index 16cf6c03..04a6117b 100644 --- a/src/helpers/async_extracter.rs +++ b/src/helpers/async_extracter.rs @@ -219,11 +219,11 @@ where extract_impl( stream, - Box::new(move |mut rx| { + Box::new(move |rx| { fs::create_dir_all(path.parent().unwrap())?; extract_compressed_from_readable::( - ReadableRx::new(&mut rx), + ReadableRx::new(rx), fmt, Op::UnpackToPath(&path), ) @@ -242,8 +242,8 @@ where { extract_impl( stream, - Box::new(move |mut rx| { - extract_compressed_from_readable(ReadableRx::new(&mut rx), fmt, Op::Visit(&mut visitor)) + Box::new(move |rx| { + extract_compressed_from_readable(ReadableRx::new(rx), fmt, Op::Visit(&mut visitor)) .map(|_| visitor) }), ) diff --git a/src/helpers/readable_rx.rs b/src/helpers/readable_rx.rs index 545bc176..e2597aae 100644 --- a/src/helpers/readable_rx.rs +++ b/src/helpers/readable_rx.rs @@ -7,13 +7,13 @@ use tokio::sync::mpsc::Receiver; use super::async_extracter::Content; #[derive(Debug)] -pub(crate) struct ReadableRx<'a> { - rx: &'a mut Receiver, +pub(crate) struct ReadableRx { + rx: Receiver, bytes: Bytes, } -impl<'a> ReadableRx<'a> { - pub(crate) fn new(rx: &'a mut Receiver) -> Self { +impl ReadableRx { + pub(crate) fn new(rx: Receiver) -> Self { Self { rx, bytes: Bytes::new(), @@ -21,7 +21,7 @@ impl<'a> ReadableRx<'a> { } } -impl Read for ReadableRx<'_> { +impl Read for ReadableRx { fn read(&mut self, buf: &mut [u8]) -> io::Result { if buf.is_empty() { return Ok(0); @@ -43,7 +43,7 @@ impl Read for ReadableRx<'_> { } } -impl BufRead for ReadableRx<'_> { +impl BufRead for ReadableRx { fn fill_buf(&mut self) -> io::Result<&[u8]> { let bytes = &mut self.bytes; if !bytes.has_remaining() {