Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
node/control: Please the borrow checker
Lorenz Leutgeb committed 7 months ago
commit d9fb4336f4176315a0107e1f8143e413a3f1b2b9
parent 5f39dde1ca4a8e23e9b286ca2497afad7e38412d
1 file changed +12 -4
modified crates/radicle-node/src/control.rs
@@ -98,16 +98,24 @@ where
///
/// As of winpipe 0.1.1, [`WinStream::try_clone`] is actually infallible.
#[cfg(windows)]
-
fn command<E, H>(mut stream: Stream, handle: H) -> Result<(), (CommandError, Stream)>
+
fn command<E, H>(stream: Stream, handle: H) -> Result<(), (CommandError, Stream)>
where
    H: Handle<Error = runtime::HandleError> + 'static,
    H::Sessions: serde::Serialize,
    CommandResult<E>: From<H::Event>,
    E: serde::Serialize,
{
-
    let mut clone = stream.try_clone().map_err(|e| (e.into(), stream))?;
-
    let reader = BufReader::new(&mut clone);
-
    let writer = LineWriter::new(&mut stream);
+
    let mut reader = match stream.try_clone() {
+
        Ok(reader) => reader,
+
        Err(err) => return Err((err.into(), stream)),
+
    };
+
    let reader = BufReader::new(&mut reader);
+

+
    let mut writer = match stream.try_clone() {
+
        Ok(writer) => writer,
+
        Err(err) => return Err((err.into(), stream)),
+
    };
+
    let writer = LineWriter::new(&mut writer);

    command_internal(reader, writer, handle).map_err(|e| (e, stream))
}