pub fn pipe_thread<R, W>(reader: R, writer: W) -> JoinHandle<Result<()>>where R: Read + Send + 'static, W: Write + Send + 'static,