made_core/value_objects/ceremony/
step_timeout.rs1use 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}