rust - 找不到 DeserializeOwned 宏?
问题描述
Rustserde::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
.
推荐阅读
- python - 如何将两个对象合并成一个包含两个元素的元组?
- azure - 为 Azure Blockchain Workbench 部署智能合约时出错
- php - PHP 填补数组空洞
- javascript - 如何使用反应导航?
- javascript - 如何使用 CSS 创建可悬停的彩虹?
- c++ - 为什么只有指向函数的指针而不是函数的var?
- android - 未调用Android活动startActivityForResult
- c++ - 如何让while循环与数字生成器一起使用?
- c++ - 为什么我在尝试添加两个链接列表时遇到此错误?
- php - 如何修复 PHP 致命错误:调用未定义函数 is_ssl()