我有一些想要使用 Serde 的结构。像这个:
use serde::{Serialize, Deserialize};
#[derive(Serialize)]
struct GetLinkResponse {
error: String,
link: String,
}
Run Code Online (Sandbox Code Playgroud)
但编译器说:
Serialize导入未使用Serialize找不到use serde::{Serialize, Deserialize};
#[derive(Serialize)]
struct GetLinkResponse {
error: String,
link: String,
}
Run Code Online (Sandbox Code Playgroud)
我想我不明白use是如何工作的。有人可以解释一下我的错误是什么吗?
Fre*_*ios 35
您是自动特征实现(即程序宏)背后的“魔法”的受害者。通常,人们为实现特征的程序宏指定与该特征相同的名称(因为这样很方便)。这里有 Trait serde::Serialize,但也有自动实现该 Trait 的程序宏serde::Serialize。
它们不会冲突,因为它们位于不同的命名空间中,并且编译器从上下文推断它是宏还是特征。
在您的情况下,您忘记添加该derive功能,因此 serde 中没有 proc 宏。因此,您导入了一个特征而不使用它,并且您尝试使用不存在的 proc 宏。
解决方案是使用serde 的derive功能:
serde = { version = "1.0", features = ["derive"] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6004 次 |
| 最近记录: |