space-traders 0.1.1

Async SpaceTraders API client for Rust.
Documentation
//! Generated by: <https://openapi-generator.tech>
//!
//! Version of specification: `2.0.0`

use serde::{Deserialize, Serialize};

/// A mount is installed on the exterier of a ship.
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct ShipMount {
    /// Symbo of this mount.
    #[serde(rename = "symbol")]
    pub symbol: Symbol,
    /// Name of this mount.
    #[serde(rename = "name")]
    pub name: String,
    /// Description of this mount.
    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    /// Mounts that have this value, such as mining lasers, denote how powerful this mount's capabilities are.
    #[serde(rename = "strength", skip_serializing_if = "Option::is_none")]
    pub strength: Option<u32>,
    /// Mounts that have this value denote what goods can be produced from using the mount.
    #[serde(rename = "deposits", skip_serializing_if = "Option::is_none")]
    pub deposits: Option<Vec<Deposits>>,
    #[serde(rename = "requirements")]
    pub requirements: crate::models::ShipRequirements,
}

impl ShipMount {
    /// Create value with optional fields set to `None`.
    #[allow(clippy::too_many_arguments)]
    pub fn new(
        symbol: Symbol,
        name: String,
        requirements: crate::models::ShipRequirements,
    ) -> ShipMount {
        ShipMount {
            symbol,
            name,
            description: None,
            strength: None,
            deposits: None,
            requirements,
        }
    }
}

/// Symbo of this mount.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Symbol {
    #[serde(rename = "MOUNT_GAS_SIPHON_I")]
    GasSiphonI,
    #[serde(rename = "MOUNT_GAS_SIPHON_II")]
    GasSiphonIi,
    #[serde(rename = "MOUNT_GAS_SIPHON_III")]
    GasSiphonIii,
    #[serde(rename = "MOUNT_SURVEYOR_I")]
    SurveyorI,
    #[serde(rename = "MOUNT_SURVEYOR_II")]
    SurveyorIi,
    #[serde(rename = "MOUNT_SURVEYOR_III")]
    SurveyorIii,
    #[serde(rename = "MOUNT_SENSOR_ARRAY_I")]
    SensorArrayI,
    #[serde(rename = "MOUNT_SENSOR_ARRAY_II")]
    SensorArrayIi,
    #[serde(rename = "MOUNT_SENSOR_ARRAY_III")]
    SensorArrayIii,
    #[serde(rename = "MOUNT_MINING_LASER_I")]
    MiningLaserI,
    #[serde(rename = "MOUNT_MINING_LASER_II")]
    MiningLaserIi,
    #[serde(rename = "MOUNT_MINING_LASER_III")]
    MiningLaserIii,
    #[serde(rename = "MOUNT_LASER_CANNON_I")]
    LaserCannonI,
    #[serde(rename = "MOUNT_MISSILE_LAUNCHER_I")]
    MissileLauncherI,
    #[serde(rename = "MOUNT_TURRET_I")]
    TurretI,
}

impl Default for Symbol {
    fn default() -> Symbol {
        Self::GasSiphonI
    }
}
/// Mounts that have this value denote what goods can be produced from using the mount.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Deposits {
    #[serde(rename = "QUARTZ_SAND")]
    QuartzSand,
    #[serde(rename = "SILICON_CRYSTALS")]
    SiliconCrystals,
    #[serde(rename = "PRECIOUS_STONES")]
    PreciousStones,
    #[serde(rename = "ICE_WATER")]
    IceWater,
    #[serde(rename = "AMMONIA_ICE")]
    AmmoniaIce,
    #[serde(rename = "IRON_ORE")]
    IronOre,
    #[serde(rename = "COPPER_ORE")]
    CopperOre,
    #[serde(rename = "SILVER_ORE")]
    SilverOre,
    #[serde(rename = "ALUMINUM_ORE")]
    AluminumOre,
    #[serde(rename = "GOLD_ORE")]
    GoldOre,
    #[serde(rename = "PLATINUM_ORE")]
    PlatinumOre,
    #[serde(rename = "DIAMONDS")]
    Diamonds,
    #[serde(rename = "URANITE_ORE")]
    UraniteOre,
    #[serde(rename = "MERITIUM_ORE")]
    MeritiumOre,
}

impl Default for Deposits {
    fn default() -> Deposits {
        Self::QuartzSand
    }
}