我具有以下功能(简化的最小示例-Sender和channel()是标准库版本):
use pnet::packet::ethernet::EthernetPacket; // 0.22.0
use std::sync::mpsc::{channel, Sender};
pub fn start_sender() -> (Sender<EthernetPacket>) {
let (sender, _) = channel();
(sender)
}
它出现以下错误:
error[E0106]: missing lifetime specifier
--> src/main.rs:4:34
|
4 | pub fn start_sender() -> (Sender<EthernetPacket>) {
| ^^^^^^^^^^^^^^ help: consider giving it a 'static lifetime: `EthernetPacket + 'static`
|
= help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
我不知道为什么(它似乎与返回方法std::sync::mpsc::channel()
本身使用的一样),也不知道如何解决它?
这似乎很简单,但是我已经搜索,阅读了文档,阅读了错误描述,似乎没有任何东西指向解决方案。请注意,在这种情况下,建议的重复项均不适用,解决方案中所需的语法不同(请参见注释)。
编辑:我发现了这个问题,它实际上可能是(如果不是语法,就语义而言)的部分重复:Rust Lifetimes with mpsc::Sender<T<'a>> and threads