#[derive(Deserialize)]
struct S<'d, T>
where T: Deserialize<'d>
{
foo: T,
other_field: String
}
上面的代码无法编译,抱怨未使用的生命周期参数, 但如果我删除它,
Deserialize
就会失去生命周期。
不使用幻影标记或
DeserializeOwned
,上述代码是否可以正确?
如果您完全删除
where
子句,则代码可以正常工作。派生将为派生的 T: Deserialize<'de>
实现自动添加 Deserialize<'de>
绑定。
#[derive(Deserialize)]
struct S<T> {
foo: T,
other_field: String
}
对于 Rust,通常在结构/枚举声明中不限制泛型类型。通用类型仅限制于需要行为的
impl
块。