runcc 2.0.3

run commands concurrently with rust and cargo
Documentation
use serde::{Deserialize, Serialize};

use super::super::{ExitStatusPattern, KillBehavior};

#[derive(Deserialize, Serialize, Debug)]
#[non_exhaustive]
pub enum KillBehaviorInputStr {
    None,
    WhenAnyExited,
    WhenAnySucceeded,
    WhenAnyFailed,
}

#[derive(Deserialize, Serialize, Debug)]
#[serde(untagged)]
#[non_exhaustive]
pub enum KillBehaviorInput {
    Str(KillBehaviorInputStr),
    WhenAnyExitedWithStatus(i32),
}

impl From<KillBehaviorInput> for KillBehavior {
    fn from(val: KillBehaviorInput) -> Self {
        match val {
            KillBehaviorInput::Str(val) => match val {
                KillBehaviorInputStr::None => KillBehavior::None,
                KillBehaviorInputStr::WhenAnyExited => KillBehavior::WhenAnyExited,
                KillBehaviorInputStr::WhenAnySucceeded => {
                    KillBehavior::WhenAnyExitedWithStatus(ExitStatusPattern::Success)
                }
                KillBehaviorInputStr::WhenAnyFailed => {
                    KillBehavior::WhenAnyExitedWithStatus(ExitStatusPattern::Failed)
                }
            },
            KillBehaviorInput::WhenAnyExitedWithStatus(s) => {
                KillBehavior::WhenAnyExitedWithStatus(ExitStatusPattern::StatusCode(s))
            }
        }
    }
}