Available on crate features serde and serde-human-readable only.
Expand description

Use the well-known RFC 2822 format when serializing and deserializing an Option<FileTime>.

Use this module in combination with Serde’s #[with] attribute.

Examples

use nt_time::{
    serde::{Deserialize, Serialize},
    serde_with::rfc_2822,
    FileTime,
};

#[derive(Debug, Deserialize, PartialEq, Serialize)]
struct DateTime(#[serde(with = "rfc_2822::option")] Option<FileTime>);

let json = serde_json::to_string(&DateTime(Some(FileTime::UNIX_EPOCH))).unwrap();
assert_eq!(json, r#""Thu, 01 Jan 1970 00:00:00 +0000""#);

assert_eq!(
    serde_json::from_str::<DateTime>(&json).unwrap(),
    DateTime(Some(FileTime::UNIX_EPOCH))
);

let json = serde_json::to_string(&DateTime(None)).unwrap();
assert_eq!(json, "null");

assert_eq!(
    serde_json::from_str::<DateTime>(&json).unwrap(),
    DateTime(None)
);

Functions