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 8 months ago
commit a4d83ec8d22a80a4d01381a091967b57fa595018
parent fca96e697f128837b00bf950ad8d556aba29a3ad
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))
}