Inc*_*ete 0 lifetime rust serde serde-json
#[derive(Deserialize)]
struct S<'d, T>
where T: Deserialize<'d>
{
foo: T,
other_field: String
}
Run Code Online (Sandbox Code Playgroud)
上面的代码无法编译,抱怨未使用的生命周期参数,但如果我删除它,Deserialize
就会丢失生命周期。
不使用幻像标记或 可以使上述代码正确吗DeserializeOwned
?
如果完全删除该where
子句,该代码将起作用。派生将T: Deserialize<'de>
自动为派生Deserialize<'de>
实现添加绑定。
#[derive(Deserialize)]
struct S<T> {
foo: T,
other_field: String
}
Run Code Online (Sandbox Code Playgroud)
对于 Rust,通常在结构/枚举声明中不限制泛型类型。通用类型仅限制用于impl
需要行为的块。