繁体   English   中英

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,通常不在结构/枚举声明中限制泛型类型。 泛型类型仅对需要行为的impl块进行限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM