是否有可能在包含箱子的结构上#[派生]特征?

时间:2016-08-03 05:30:50

标签: struct rust traits

如果我有类似

的话
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等。这不是我要问的。

Cargo.toml

serde = "0.8"
serde_json = "0.8"
serde_macros = "0.8"
iso8601 = "0.1.1"

0 个答案:

没有答案