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}