use serde::{Deserialize, Serialize};
use super::Merge;
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct CapabilityLocalityCountryV1 {
pub country: String,
pub density: u64,
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct CapabilityLocalityContinentV1 {
pub continent: String,
pub density: u64,
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, schemars::JsonSchema)]
pub struct CapabilityLocalityCityV1 {
pub city: String,
pub density: u64,
}
#[derive(Serialize, Deserialize, PartialEq, Eq, Clone, Debug, Default, schemars::JsonSchema)]
pub struct CapabilityLocalityV1 {
pub seed: Option<u64>,
pub region_density: Option<u64>,
pub country_densities: Vec<CapabilityLocalityCountryV1>,
pub continent_densities: Vec<CapabilityLocalityContinentV1>,
pub city_densities: Vec<CapabilityLocalityCityV1>,
}
impl Merge for CapabilityLocalityV1 {
fn merge_extend(self, other: &Self) -> Self {
let mut ret = Self {
seed: self.seed,
region_density: self.region_density.merge_extend(&other.region_density),
country_densities: self.country_densities,
continent_densities: self.continent_densities,
city_densities: self.city_densities,
};
if let Some(seed) = other.seed {
ret.seed = Some(seed);
}
ret.country_densities
.extend(other.country_densities.clone());
ret.continent_densities
.extend(other.continent_densities.clone());
ret.city_densities.extend(other.city_densities.clone());
ret
}
}