Rust tokio TcpStream上的并发读/写

Rust tokio TcpStream上的并发读/写,rust,rust-tokio,Rust,Rust Tokio,我有一个场景,线程1写入套接字,线程2从套接字读取。我在过去通过split()完成了这项工作,它将使用TcpStream并返回ReadHalf/WriteHalf,然后可以整齐地传递给线程。我在1.39.0(东京-0.2.0-alpha.6)上遇到了一些问题 现在它已更改为pub fn split(&mut self)->(ReadHalf,WriteHalf)。这不允许将ReadHalf/WriteHalf(其生存期与流绑定)传递给单独的线程,而不会遇到混乱的生存期问题 普通的read()/w

我有一个场景,线程1写入套接字,线程2从套接字读取。我在过去通过
split()
完成了这项工作,它将使用TcpStream并返回ReadHalf/WriteHalf,然后可以整齐地传递给线程。我在1.39.0(东京-0.2.0-alpha.6)上遇到了一些问题

  • 现在它已更改为
    pub fn split(&mut self)->(ReadHalf,WriteHalf)
    。这不允许将ReadHalf/WriteHalf(其生存期与流绑定)传递给单独的线程,而不会遇到混乱的生存期问题

  • 普通的
    read()/write()
    变体采用
    &mut self
    ,这使得不可能进行并发读/写

  • 有趣的是,UdpSocket仍然有旧的方式(
    pub-fn-split(self)->(udpsocketrecvehalf,UdpSocketSendHalf)

    还发现此相关(未解析)线程:。不确定使用TcpStream是否还能实现

    谢谢你的建议


    谢谢。

    请改用
    tokio::io::split
    free函数。这个变化是在年引入的。谢谢@edwardw,这就是我想要的。