找不到 DeserializeOwned 宏?

炸鱼薯*_*德里克 3 rust

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

#[derive(serde::Serialize, serde::de::DeserializeOwned, Default, Debug)]
struct Outside {}
Run Code Online (Sandbox Code Playgroud)

错误:

#[derive(serde::Serialize, serde::de::DeserializeOwned, Default, Debug)]
struct Outside {}
Run Code Online (Sandbox Code Playgroud)

游乐场链接

Fre*_*ios 6

特征的自动实现是通过过程宏完成的。如果你去serde::Deserialize文档页面,你会看到这样一句话:

此外,Serde 还提供了一个过程宏,用于serde_derive自动生成Deserialize程序中结构和枚举的实现。

但是,没有过程宏可以serde::de::DeserializeOwned自动实现该特征,这就是您的代码无法编译的原因。


要了解您可以做什么,您可以阅读 serde文档:它解释说这DeserializeOwned是使用Deserialize任何生命周期的一种奇特方式。您只需添加#[derive(serde::Deserialize)]并使用DeserializeOwned.