From 5a464aa3b196d408b0f1845907d44520ce0b0e0c Mon Sep 17 00:00:00 2001
From: Quantum <quantum2048@gmail.com>
Date: Mon, 14 Oct 2024 19:02:29 -0400
Subject: [PATCH] Use simpler else clause with tokio::select!

---
 src/runner.rs     | 19 +++++--------------
 src/tap_stream.rs |  8 ++++----
 2 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/src/runner.rs b/src/runner.rs
index 33b4dd3..ca1c5d1 100644
--- a/src/runner.rs
+++ b/src/runner.rs
@@ -61,29 +61,20 @@ pub async fn run_forward_and_capture(cmdline: &Vec<String>) -> CapturedOutput {
             result = stdout_tap.step(), if !stdout_eof => match result {
                 Ok(ReadOrWrite::Read(bytes)) => stdout.extend_from_slice(bytes),
                 Ok(ReadOrWrite::Written) => (),
-                Ok(ReadOrWrite::EOF) => match (stderr_eof, maybe_status) {
-                    (true, Some(status)) => break status,
-                    _ => stdout_eof = true,
-                },
+                Ok(ReadOrWrite::EOF) => stdout_eof = true,
                 Err(error) => errors.push(CaptureError::Stdout(error)),
             },
             result = stderr_tap.step(), if !stderr_eof => match result {
                 Ok(ReadOrWrite::Read(bytes)) => stderr.extend_from_slice(bytes),
                 Ok(ReadOrWrite::Written) => (),
-                Ok(ReadOrWrite::EOF) => match (stdout_eof, maybe_status) {
-                    (true, Some(status)) => break status,
-                    _ => stderr_eof = true,
-                },
+                Ok(ReadOrWrite::EOF) => stderr_eof = true,
                 Err(error) => errors.push(CaptureError::Stderr(error)),
             },
             status = child.wait(), if maybe_status.is_none() => match status {
-                Ok(status) => if stdout_eof && stderr_eof {
-                    break status;
-                } else {
-                    maybe_status = Some(status);
-                },
+                Ok(status) => maybe_status = Some(status),
                 Err(error) => errors.push(CaptureError::Wait(error)),
-            }
+            },
+            else => break maybe_status.unwrap(),
         }
     };
 
diff --git a/src/tap_stream.rs b/src/tap_stream.rs
index 20bbbfb..61caa1a 100644
--- a/src/tap_stream.rs
+++ b/src/tap_stream.rs
@@ -34,11 +34,11 @@ impl<R: AsyncRead + Unpin, W: AsyncWrite + Unpin> TapStream<R, W> {
             self.buf_start = 0;
             self.buf_end = bytes;
 
-            Ok(if bytes == 0 {
-                ReadOrWrite::EOF
+            if bytes == 0 {
+                Ok(ReadOrWrite::EOF)
             } else {
-                ReadOrWrite::Read(&self.buffer[0..bytes])
-            })
+                Ok(ReadOrWrite::Read(&self.buffer[0..bytes]))
+            }
         } else {
             let bytes = self
                 .target