[英]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,通常不在结构/枚举声明中限制泛型类型。 泛型类型仅对需要行为的impl
块进行限制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.