From 223834c9dabdab00fceda69b9ce989995de47efa Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 26 Oct 2026 05:24:32 +0100 Subject: remove unit suffixes from fields --- src/units.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/units.rs') diff --git a/src/units.rs b/src/units.rs index e4576bc..5128b6e 100644 --- a/src/units.rs +++ b/src/units.rs @@ -162,6 +162,30 @@ pub(crate) mod duration_option { } } +/// Serde for an optional `Duration` in a request (JSON body or query string), read as +/// [`duration_option`] reads it; absent is `None`. Use with `#[serde(default)]`. +pub(crate) mod optional_duration { + use std::time::Duration; + + use serde::{Deserializer, Serializer}; + + pub(crate) fn serialize( + value: &Option, + s: S, + ) -> Result { + match value { + Some(duration) => super::duration_option::serialize(duration, s), + None => s.serialize_none(), + } + } + + pub(crate) fn deserialize<'de, D: Deserializer<'de>>( + d: D, + ) -> Result, D::Error> { + super::duration_option::deserialize(d).map(Some) + } +} + /// 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 { -- cgit v1.3.1