我正在创建一个多线程应用程序,我在其中创建一个接收通道和一个用于保存发送通道的结构(稍后将由实现使用).但是,我通过通道发送的类型具有生命周期规范.这种类型websocket::message:Message
来自rusts-weboscket库.由于这个规范,当它通过线程时,生锈似乎无法正确地推断生命周期.
以下是此错误的生锈操场示例:https: //play.rust-lang.org/?gist = 7e37547d1c811185654f10a6a461e1ef&version = stable&backtrace = 1
现在,我尝试使用crossbeam来规范生命周期,这似乎解决了这个直接的问题,但实际上只是委托其他地方的生命周期规范问题.
在我的代码中,我收到错误:
$ cargo check
Compiling rump v0.1.0 (file:///home/alainh/UPenn/CIS198/Rump)
transport.rs:200:42: 200:57 error: cannot infer an appropriate lifetime for autoref due to conflicting requirements [E0495]
transport.rs:200 self.sender.send(self.serializer.encode(message));
^~~~~~~~~~~~~~~
transport.rs:199:5: 202:6 help: consider using an explicit lifetime parameter as shown: fn send<T: Encodable>(&'a mut self, message: &T) -> WampResult<()>
transport.rs:199 fn send<T: Encodable>(&mut self, message: &T) -> WampResult<()> {
transport.rs:200 self.sender.send(self.serializer.encode(message));
transport.rs:201 Ok(())
transport.rs:202 }
error: aborting due to …Run Code Online (Sandbox Code Playgroud)