Rust:如何为具有泛型类型的结构派生反序列化?
Rust: how to derive Deserialize for struct with generic types?
#[derive(Deserialize)]
struct S<'d, T>
where T: Deserialize<'d>
{
foo: T,
other_field: String
}
以上代码编译失败,报错未使用的生命周期参数,
但如果我删除它,Deserialize
将失去生命周期。
不使用幻影标记或DeserializeOwned
是否可以使上述代码正确?
如果您完全删除 where
子句,则代码可以正常工作。派生将为派生的 Deserialize<'de>
实现自动添加 T: Deserialize<'de>
绑定。
#[derive(Deserialize)]
struct S<T> {
foo: T,
other_field: String
}
对于 Rust,在 struct/enum 声明中不限制泛型类型是很常见的。通用类型仅受限于 impl
需要行为的块。
#[derive(Deserialize)]
struct S<'d, T>
where T: Deserialize<'d>
{
foo: T,
other_field: String
}
以上代码编译失败,报错未使用的生命周期参数,
但如果我删除它,Deserialize
将失去生命周期。
不使用幻影标记或DeserializeOwned
是否可以使上述代码正确?
如果您完全删除 where
子句,则代码可以正常工作。派生将为派生的 Deserialize<'de>
实现自动添加 T: Deserialize<'de>
绑定。
#[derive(Deserialize)]
struct S<T> {
foo: T,
other_field: String
}
对于 Rust,在 struct/enum 声明中不限制泛型类型是很常见的。通用类型仅受限于 impl
需要行为的块。