如果我有类似
的话use serde_json;
use iso8601::DateTime;
#[derive(Deserialize, Debug)]
pub struct Thing {
pub attr: i32,
pub foo: i32,
pub ts: DateTime
}
编译器也会坚持要求我确保DateTime
满足特征绑定Deserialize
:
error: the trait bound `iso8601::DateTime: serde::Deserialize` is not satisfied [E0277]
src/lib.rs:208 #[derive(Deserialize, Debug)
您不能将derive注释放在包含的结构上面,否则编译器会抱怨。事实上,情节变浓了,因为DateTime
本身有structs需要相同的注释:
pub struct DateTime {
pub date: Date,
pub time: Time,
}
有没有办法解决这个问题,还是我必须手动为外部结构实现这些特征?
编辑:让我说清楚,我问的是#[derive]
宏。我阅读了链接和相关的问题,我知道我可以提供自己的不同特征的实现,以及使用newtypes等。这不是我要问的。
serde = "0.8"
serde_json = "0.8"
serde_macros = "0.8"
iso8601 = "0.1.1"