dap: Wrap Child directly in a mutex rather than through Option<_> (#40192)

Jakub Konka created

Release Notes:

- N/A

Change summary

crates/dap/src/transport.rs | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)

Detailed changes

crates/dap/src/transport.rs 🔗

@@ -649,7 +649,7 @@ impl Drop for TcpTransport {
 }
 
 pub struct StdioTransport {
-    process: Mutex<Option<Child>>,
+    process: Mutex<Child>,
     _stderr_task: Option<Task<()>>,
 }
 
@@ -684,7 +684,7 @@ impl StdioTransport {
             ))
         });
 
-        let process = Mutex::new(Some(process));
+        let process = Mutex::new(process);
 
         Ok(Self {
             process,
@@ -699,9 +699,7 @@ impl Transport for StdioTransport {
     }
 
     fn kill(&mut self) {
-        if let Some(process) = &mut *self.process.lock() {
-            process.kill();
-        }
+        self.process.lock().kill();
     }
 
     fn connect(
@@ -713,8 +711,7 @@ impl Transport for StdioTransport {
         )>,
     > {
         let result = util::maybe!({
-            let mut guard = self.process.lock();
-            let process = guard.as_mut().context("oops")?;
+            let mut process = self.process.lock();
             Ok((
                 Box::new(process.stdin.take().context("Cannot reconnect")?) as _,
                 Box::new(process.stdout.take().context("Cannot reconnect")?) as _,
@@ -730,9 +727,7 @@ impl Transport for StdioTransport {
 
 impl Drop for StdioTransport {
     fn drop(&mut self) {
-        if let Some(process) = &mut *self.process.lock() {
-            process.kill();
-        }
+        self.process.lock().kill();
     }
 }