Skip to main content

made_core/value_objects/ceremony/
step_timeout.rs

1use serde::{Deserialize, Serialize};
2
3use crate::error::DomainError;
4use crate::value_objects::DurationMs;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
7#[serde(transparent)]
8pub struct StepTimeout(DurationMs);
9
10impl StepTimeout {
11    pub fn new(duration: DurationMs) -> Result<Self, DomainError> {
12        if duration == DurationMs::ZERO {
13            return Err(DomainError::MustBeNonZero {
14                field: "step_timeout",
15            });
16        }
17        Ok(Self(duration))
18    }
19
20    #[must_use]
21    pub fn duration(self) -> DurationMs {
22        self.0
23    }
24}