类型参数缺少寿命说明符

时间:2019-02-26 22:09:27

标签: rust lifetime

我具有以下功能(简化的最小示例-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

0 个答案:

没有答案