ora-common 0.1.2

Part of the Ora scheduler framework.
Documentation
//! Task timeout types.

use serde::{Deserialize, Serialize};
use time::Duration;

/// A timeout policy for a given task.
#[derive(Debug, Default, Clone, Copy, Serialize, Deserialize)]
pub enum TimeoutPolicy {
    /// Never time out.
    #[default]
    Never,
    /// The timeout duration applies from the
    /// task target.
    FromTarget {
        /// The timeout duration.
        timeout: Duration,
    },
}

impl TimeoutPolicy {
    /// Set a timeout duration that applies after
    /// the task target.
    #[must_use]
    pub fn from_target(timeout: Duration) -> Self {
        Self::FromTarget { timeout }
    }
}

impl From<Duration> for TimeoutPolicy {
    fn from(timeout: Duration) -> Self {
        Self::FromTarget { timeout }
    }
}