gpt4 book ai didi

rust - 找不到 DeserializeOwned 宏?

转载 作者:行者123 更新时间:2023-12-05 02:56:51 27 4
gpt4 key购买 nike

Rust 在我的代码中找不到 serde::de::DeserializeOwned 但可以找到 serde::Serialize。不过,我很确定它们都存在于 serde 1.0.104 中:

#[derive(serde::Serialize, serde::de::DeserializeOwned, Default, Debug)]
struct Outside {}

错误:

error[E0433]: failed to resolve: could not find `DeserializeOwned` in `de`
--> src/lib.rs:3:39
|
1 | #[derive(serde::Serialize, serde::de::DeserializeOwned, Default, Debug)]
| ^^^^^^^^^^^^^^^^ could not find `DeserializeOwned` in `de`

Link to the playground

最佳答案

特征的自动实现是通过过程宏完成的。如果你去serde::Deserialize documentation page ,你会看到这句话:

Additionally, Serde provides a procedural macro called serde_derive to automatically generate Deserialize implementations for structs and enums in your program.

但是,没有程序宏来实现 serde::de::DeserializeOwned trait 自动,这就是你的代码无法编译的原因。


要了解您可以做什么,您可以阅读 serde documentation :它解释了 DeserializeOwned 是一种使用 Deserialize 的奇特方式,无论生命周期是多少。您只需添加 #[derive(serde::Deserialize)] 并使用 DeserializeOwned

关于rust - 找不到 DeserializeOwned 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60091714/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com