aboutsummaryrefslogtreecommitdiffstats
path: root/src/units.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/units.rs')
-rw-r--r--src/units.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/units.rs b/src/units.rs
index ac08ebf..28adab9 100644
--- a/src/units.rs
+++ b/src/units.rs
@@ -171,6 +171,17 @@ pub(crate) fn optional_duration<'de, D: serde::Deserializer<'de>>(
duration_option::deserialize(d).map(Some)
}
+/// Writes an optional `Duration` as [`duration_option`] does; `None` as null.
+pub(crate) fn serialize_optional_duration<S: serde::Serializer>(
+ value: &Option<Duration>,
+ s: S,
+) -> Result<S::Ok, S::Error> {
+ match value {
+ Some(value) => duration_option::serialize(value, s),
+ None => s.serialize_none(),
+ }
+}
+
/// Serde for a size option: a string as [`parse_size`] reads it, or a number of bytes;
/// written as [`format_size`].
pub(crate) mod size_option {