【发布时间】:2019-10-29 16:42:30
【问题描述】:
extern crate serde;
extern crate serde_json;
#[macro_use]
extern crate serde_derive;
use chrono::{self, Date,DateTime, TimeZone};
use serde_derive::{Serialize,Deserialize}; // 1.0.91
#[derive(Serialize,Deserialize )]
struct Test<Tz>
where Tz:TimeZone,
{
t:DateTime<Tz>
}
fn main(){
}
上面的代码不会因为错误而编译:
error[E0277]: trait bound
chrono::datetime::DateTime<Tz>: serde::Serialize不满足 --> src/main.rs:16:5
我有
chrono = {version="0.4",features = ["serde"]}
在我的 Cargo.toml 中
我发现实现在这里:https://docs.rs/chrono/0.4.6/chrono/struct.DateTime.html#impl-Serialize
但我不确定游乐场是否启用了 serde 功能。
【问题讨论】:
-
您确定错误消息是
serde::Serialize而不是serde::Deserialize?如果我在派生中取出Deserialize,则您的示例有效。此外,您为该类型链接的文档中没有Deserialize。rustc --version: 1.35.0,[dependencies] chrono = {version="0.4",features = ["serde"]} serde = "1.0.92" serde_json = "1.0.39" serde_derive = "1.0.92" -
@crazysim 感谢您的回复。我的错,我没有看到反序列化会成为这里的障碍。谢谢!
-
我不明白您是如何收到该错误消息的。 ????,你猜这是错误信息吗?我敢肯定,简单地运行 Rust 编译器会比提出 SO 问题要快。