diff options
| author | tv <tv@krebsco.de> | 2026-10-26 05:38:41 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-26 05:38:41 +0100 |
| commit | f12a839d6e6bdd29a86ac52d5de836519a41aaf0 (patch) | |
| tree | b34da34a22292793c991b15a95908f6cd78bb70b /src/units.rs | |
| parent | 504435444c65efc59c0f7c6881991296258538a7 (diff) | |
wrap unix timestamps in newtype
Diffstat (limited to 'src/units.rs')
| -rw-r--r-- | src/units.rs | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/src/units.rs b/src/units.rs index 5128b6e..cec5ffc 100644 --- a/src/units.rs +++ b/src/units.rs @@ -162,28 +162,13 @@ 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<S: Serializer>( - value: &Option<Duration>, - s: S, - ) -> Result<S::Ok, S::Error> { - 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<Option<Duration>, D::Error> { - super::duration_option::deserialize(d).map(Some) - } +/// Reads an optional `Duration` in a request (JSON body or query string) as +/// [`duration_option`] reads it; absent is `None`. Use as +/// `#[serde(default, deserialize_with = "crate::units::optional_duration")]`. +pub(crate) fn optional_duration<'de, D: serde::Deserializer<'de>>( + d: D, +) -> Result<Option<Duration>, D::Error> { + duration_option::deserialize(d).map(Some) } /// Serde for a size option: a string as [`parse_size`] reads it, or a number of bytes; |
