cumulus 0.0.6

AWS CloudFormation Template Generator
Documentation
use serde::Serialize;

use crate::skip_serializing_if::SkipSerializingIf;

#[derive(Clone, Debug, PartialEq, Serialize)]
pub struct CreditSpecification {
    #[serde(rename = "CPUCredits")]
    cpu_credits: CpuCredits,
}

impl CreditSpecification {
    fn new(cpu_credits: CpuCredits) -> Self {
        Self { cpu_credits }
    }

    pub fn standard() -> Self {
        Self::new(CpuCredits::Standard)
    }

    pub fn unlimited() -> Self {
        Self::new(CpuCredits::Unlimited)
    }
}

impl Default for CreditSpecification {
    fn default() -> Self {
        let cpu_credits = CpuCredits::Standard;
        Self { cpu_credits }
    }
}

impl SkipSerializingIf for CreditSpecification {
    fn is_default(&self) -> bool {
        *self == Self::default()
    }
}

#[derive(Clone, Debug, PartialEq, Serialize)]
#[serde(rename_all = "lowercase")]
enum CpuCredits {
    Standard,
    Unlimited,
}