pub struct Datetime {
pub date: Option<Date>,
pub time: Option<Time>,
pub offset: Option<Offset>,
}
Expand description
A parsed TOML datetime value
This structure is intended to represent the datetime primitive type that can be encoded into TOML documents. This type is a parsed version that contains all metadata internally.
Currently this type is intentionally conservative and only supports
to_string
as an accessor. Over time though it’s intended that it’ll grow
more support!
Note that if you’re using Deserialize
to deserialize a TOML document, you
can use this as a placeholder for where you’re expecting a datetime to be
specified.
Also note though that while this type implements Serialize
and
Deserialize
it’s only recommended to use this type with the TOML format,
otherwise encoded in other formats it may look a little odd.
Depending on how the option values are used, this struct will correspond with one of the following four datetimes from the TOML v1.0.0 spec:
date | time | offset | TOML type |
---|---|---|---|
Some(_) | Some(_) | Some(_) | Offset Date-Time |
Some(_) | Some(_) | None | Local Date-Time |
Some(_) | None | None | Local Date |
None | Some(_) | None | Local Time |
1. Offset Date-Time: If all the optional values are used, Datetime
corresponds to an Offset Date-Time. From the TOML v1.0.0 spec:
To unambiguously represent a specific instant in time, you may use an RFC 3339 formatted date-time with offset.
odt1 = 1979-05-27T07:32:00Z odt2 = 1979-05-27T00:32:00-07:00 odt3 = 1979-05-27T00:32:00.999999-07:00
For the sake of readability, you may replace the T delimiter between date and time with a space character (as permitted by RFC 3339 section 5.6).
odt4 = 1979-05-27 07:32:00Z
2. Local Date-Time: If date
and time
are given but offset
is
None
, Datetime
corresponds to a Local Date-Time. From the spec:
If you omit the offset from an RFC 3339 formatted date-time, it will represent the given date-time without any relation to an offset or timezone. It cannot be converted to an instant in time without additional information. Conversion to an instant, if required, is implementation- specific.
ldt1 = 1979-05-27T07:32:00 ldt2 = 1979-05-27T00:32:00.999999
3. Local Date: If only date
is given, Datetime
corresponds to a
Local Date; see the docs for Date
.
4. Local Time: If only time
is given, Datetime
corresponds to a
Local Time; see the docs for Time
.
Fields§
§date: Option<Date>
Optional date. Required for: Offset Date-Time, Local Date-Time, Local Date.
time: Option<Time>
Optional time. Required for: Offset Date-Time, Local Date-Time, Local Time.
offset: Option<Offset>
Optional offset. Required for: Offset Date-Time.
Trait Implementations§
source§impl<'de> Deserialize<'de> for Datetime
impl<'de> Deserialize<'de> for Datetime
source§fn deserialize<D>(deserializer: D) -> Result<Datetime, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Datetime, D::Error>where
D: Deserializer<'de>,
source§impl PartialEq for Datetime
impl PartialEq for Datetime
impl Eq for Datetime
impl StructuralPartialEq for Datetime
Auto Trait Implementations§
impl Freeze for Datetime
impl RefUnwindSafe for Datetime
impl Send for Datetime
impl Sync for Datetime
impl Unpin for Datetime
impl UnwindSafe for Datetime
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)