How do I define a vector of chrono::DateTime with different TimeZones?

Viewed 397

I am working with the chrono library, and do not know how to define a struct field that is a vector of DateTime<Tz: TimeZone> structs with a TimeZone trait instead of a concrete type.

I.e, I can do:

use chrono::{DateTime, TimeZone, Utc}; // 0.4.11

pub struct ItemSchedule {
    pub times: Vec<Box<DateTime<Utc>>>,
}

When I try to use a trait object:

use chrono::{DateTime, TimeZone, Utc}; // 0.4.11

pub struct ItemSchedule {
    pub times: Vec<Box<DateTime<dyn TimeZone>>>,
}

I get an error:

error[E0191]: the value of the associated type `Offset` (from trait `chrono::offset::TimeZone`) must be specified
 --> src/lib.rs:4:37
  |
4 |     pub times: Vec<Box<DateTime<dyn TimeZone>>>,
  |                                     ^^^^^^^^ help: specify the associated type: `TimeZone<Offset = Type>`

Looking at the code, the TimeZone trait has an associated type called Offset, which has to implement a trait called Offset. I also get errors if I attempt to specify this the type declaration.

0 Answers
Related