小编Dou*_*nen的帖子

如何将一个项目推入 Vec 并继续使用它?

我正在尝试向 a 添加一个项目Vec<T>,调用一个函数并等待它。我仍然对所有权和借用规则耿耿于怀。我明白以下内容不起作用:

pub async fn begin_session(&mut self, stream: TcpStream) {
    let session = Session::new(stream);
    self.sessions.push(session);
            
    session.start_receiver().await; // obviously, won't work
}
Run Code Online (Sandbox Code Playgroud)

我在下面提出的解决方案对我来说似乎并不理想(或线程安全):

pub async fn begin_session(&mut self, stream: TcpStream) {
    let session = Session::new(stream);
    self.sessions.push(session);

    let session = self.sessions.last().unwrap();
    
    session.start_receiver().await; // That works.
}
Run Code Online (Sandbox Code Playgroud)

是否有一个函数Vec<T>既执行 apush(T)又返回T

rust

5
推荐指数
1
解决办法
4736
查看次数

标签 统计

rust ×1