How do I fix "lifetime parameter is never used" with a generic field?
本问题已经有最佳答案,请猛点这里访问。
以下代码会产生错误:
1 2 3 4 5 6 7 | struct IntParseVisitor<'de, V: Visitor<'de>> { inner_visitor: V, } pub trait Visitor<'de>: Sized { fn visit_str<E>(self, v: &'de str) {} } |
1 2 3 4 5 6 7 | 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` |
我不太明白它是如何被使用的。它不用于
啊,感谢@Shepmaster\\ 的提示,我尝试了这个,它编译:
1 2 3 4 5 6 7 8 9 | struct IntParseVisitor<V: for<'de> Visitor<'de>> { inner_visitor: V, } pub trait Visitor<'de>: Sized { fn visit_str<E>(self, v: &'de str) { } } |
我不完全了解这里的生命,所以不要相信我的话。
您可以按照错误提示进行操作:
help: consider removing
'de , referring to it in a field, or using a marker such as std::marker::PhantomData
1 2 3 4 | struct IntParseVisitor<'de, V: Visitor<'de>> { inner_visitor: V, _phantom_data: std::marker::PhantomData<&'de ()>, } |