如何使用通用字段修复“从未使用生命周期参数”?

Tim*_*mmm 5 rust

以下代码会生成错误:

struct IntParseVisitor<'de, V: Visitor<'de>> {
    inner_visitor: V,
}

pub trait Visitor<'de>: Sized {
    fn visit_str<E>(self, v: &'de str) {}
}
Run Code Online (Sandbox Code Playgroud)
error[E0392]: parameter `'de` is never used
 --> src/lib.rs:1:24
  |
1 | struct IntParseVisitor<'de, V: Visitor<'de>> {
  |                        ^^^ unused parameter
  |
  = help: consider removing `'de`, referring to it in a field, or using a marker such as `std::marker::PhantomData`
Run Code Online (Sandbox Code Playgroud)

我不太明白它是如何使用的。难道不是用来做的吗Visitor<'de>?解决这个问题的最佳方法是什么?请注意,我无法更改代码,Visitor因为它位于 Serde 中。

Net*_*ave 1

您可以按照错误提示进行操作:

help:考虑删除'de、在字段中引用它或使用标记,例如 std::marker::PhantomData

struct IntParseVisitor<'de, V: Visitor<'de>> {
    inner_visitor: V,
    _phantom_data: std::marker::PhantomData<&'de ()>,
}
Run Code Online (Sandbox Code Playgroud)