编写一个 returns 流式传输生命周期的函数

Write a function that returns stream with lifetime

我正在尝试实现从 rustls:

获取地址和 returns TLS 连接的“连接”
impl Connector {
  ...
  
  fn connect(&self, address: String) -> rustls::Stream<ClientConnection, TcpStream> {
    let target_address = address.parse().unwrap();
    let server_name = rustls::ServerName::from(address).unwrap();
    let mut tcp_stream = TcpStream::connect(target_address).unwrap();
    let mut client_conn = rustls::ClientConnection::new(Arc::new(self.client_config), server_name).unwrap();
    rustls::Stream::new(&mut client_conn, &mut tcp_stream)
  }

这不起作用,因为 client_conntcp_stream 是在函数内借用的。 Stream 有生命周期:

https://docs.rs/rustls/latest/rustls/struct.Stream.html

#[derive(Debug)]
pub struct Stream<'a, C: 'a + ?Sized, T: 'a + Read + Write + ?Sized> {
    /// Our TLS connection
    pub conn: &'a mut C,

    /// The underlying transport, like a socket
    pub sock: &'a mut T,
}

那么,如何在 connect 函数中创建此 Stream 对象,并相应地 returns 生命周期>

我认为 Stream 是错误的数据类型。据我所知,它没有取得连接对象的所有权。

在文档中快速搜索让我相信您正在搜索的是 StreamOwned