Почему DateTime <Tz>не может удовлетворить serde :: Serialize? - PullRequest
3 голосов
/ 15 июня 2019
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(){

}

Код выше не скомпилируется с ошибкой:

ошибка [E0277]: предел черты 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

полный пример кода здесь https://play.rust -lang.org /? Version = stable & mode = debug & edition = 2018 & gist = 57b41f6dd1c4c0a2c7f4f541234137a7

но я не уверен, включена ли функция serde на детской площадке.

1 Ответ

0 голосов
/ 15 июня 2019

Извините, ребята, проблема в том, как @crazysim сказал в комментарии.

DateTime не реализовал черту десериализации.

Если я удалю его, код будет работать:

extern crate serde;
extern crate serde_json;

#[macro_use]
extern crate serde_derive;


use chrono::{self,DateTime, TimeZone};



#[derive(Serialize )]
struct Test<Tz>
where Tz:TimeZone,
{
    t:DateTime<Tz>
}

fn main(){

}
...