簡體   English   中英

找不到 DeserializeOwned 宏?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM