[英]Cannot find DeserializeOwned macro?
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`
特征的自動實現是通過過程宏完成的。 如果你去serde::Deserialize
文檔頁面,你會看到這句話:
此外,Serde 提供了一個名為
serde_derive
的過程宏,以自動為程序中的結構和枚舉生成Deserialize
實現。
但是,沒有自動實現serde::de::DeserializeOwned
特性的過程宏,這就是您的代碼無法編譯的原因。
要知道你能做什么,你可以閱讀serde 文檔:它解釋說DeserializeOwned
是一種使用Deserialize
的奇特方式,無論生命周期是什么。 您只需要添加#[derive(serde::Deserialize)]
並使用DeserializeOwned
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.