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
Available on crate feature serde
only.
impl<'de> Deserialize<'de> for Datetime
serde
only.Source§fn deserialize<D>(
deserializer: D,
) -> Result<Datetime, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<Datetime, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
Source§impl Ord for Datetime
impl Ord for Datetime
Source§impl PartialOrd for Datetime
impl PartialOrd for Datetime
Source§impl Serialize for Datetime
Available on crate feature serde
only.
impl Serialize for Datetime
serde
only.Source§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
impl Copy 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§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes