ora_common/
timeout.rs

1//! Task timeout types.
2
3use serde::{Deserialize, Serialize};
4use time::Duration;
5
6/// A timeout policy for a given task.
7#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize)]
8pub enum TimeoutPolicy {
9    /// Never time out.
10    #[default]
11    Never,
12    /// The timeout duration applies from the
13    /// task target.
14    FromTarget {
15        /// The timeout duration.
16        timeout: Duration,
17    },
18}
19
20impl TimeoutPolicy {
21    /// Set a timeout duration that applies after
22    /// the task target.
23    #[must_use]
24    pub fn from_target(timeout: Duration) -> Self {
25        Self::FromTarget { timeout }
26    }
27}
28
29impl From<Duration> for TimeoutPolicy {
30    fn from(timeout: Duration) -> Self {
31        Self::FromTarget { timeout }
32    }
33}