以下代码会产生错误:
struct IntParseVisitor<'de, V: Visitor<'de>> {
inner_visitor: V,
}
pub trait Visitor<'de>: Sized {
fn visit_str<E>(self, v: &'de str) {}
}
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`
我不太理解它为什么没被使用。它难道对于 Visitor<'de>
不适用吗?修复的最佳方式是什么?请注意,我不能更改 Visitor
的代码,因为它在 Serde 中。
struct IntParseVisitor<'de, V: Visitor<'_>> { inner_visitor: V, }
可以使用建议的 PhantomData。 - Netwavefor<>
在我的实际代码中工作,而PhantomData
确实起作用了,所以我不认为它是一个重复的问题。此外,那个答案是关于函数的通用参数,不清楚它如何适用于结构体。请在将来关闭问题时给予更多的怀疑之处,谢谢。 - Timmmm