use std::fmt;
use std::time::Duration;
use parse_display::{DisplayFormat, FromStrFormat, ParseError};
use qubit_common::serde::duration_with_unit;
pub(crate) struct RetryDelayDurationFormat;
impl DisplayFormat<Duration> for RetryDelayDurationFormat {
fn write(&self, f: &mut fmt::Formatter<'_>, value: &Duration) -> fmt::Result {
f.write_str(&duration_with_unit::format(value))
}
}
impl FromStrFormat<Duration> for RetryDelayDurationFormat {
type Err = ParseError;
fn parse(&self, s: &str) -> Result<Duration, Self::Err> {
duration_with_unit::parse(s).map_err(|_| {
ParseError::with_message(
"invalid retry delay duration: expected a value accepted by `duration_with_unit`",
)
})
}
fn regex(&self) -> Option<String> {
None
}
}