use serde::{Deserialize, Serialize};
pub mod data;
pub mod enums;
pub mod metrics;
pub mod validation;
#[cfg(test)]
mod tests;
pub use data::{
AluminiumData, BatteryData, ConstructionData, CriticalRawMaterial, DetergentData,
ElectronicsData, FibreEntry, FurnitureData, MaterialComposition, SectorData, SteelData,
SurfactantEntry, SvhcSubstance, TextileData, ToyData, TyreData, UnsoldGoodsDestination,
UnsoldGoodsReason, UnsoldGoodsReport, redact_sector_data,
};
pub use enums::{
BatteryChemistry, BatteryType, CarbonFootprintClass, EnergyEfficiencyClass, LifecycleStage,
ProductionRoute, SystemBoundary,
};
pub use metrics::{CarbonFootprint, RepairCriterion, RepairabilityScore};
pub use validation::{
battery_recycled_chemistry_conflicts, validate_battery_operating_temp,
validate_fibre_composition, validate_surfactants, validate_svhc_substances,
};
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub enum Sector {
Battery,
Textile,
UnsoldGoods,
Steel,
Electronics,
Construction,
Tyre,
Toy,
Aluminium,
Furniture,
Detergent,
Other,
}
impl Sector {
pub const fn minimum_retention_years(&self) -> u32 {
match self {
Self::Battery => 10,
Self::Textile | Self::UnsoldGoods => 10,
Self::Steel => 10,
Self::Electronics => 10,
Self::Construction => 10,
Self::Tyre => 10,
Self::Toy => 10,
Self::Aluminium => 10,
Self::Furniture => 10,
Self::Detergent => 10,
Self::Other => 10,
}
}
pub const fn catalog_key(&self) -> &'static str {
match self {
Self::Battery => "battery",
Self::Textile => "textile",
Self::UnsoldGoods => "unsold-goods",
Self::Steel => "steel",
Self::Electronics => "electronics",
Self::Construction => "construction",
Self::Tyre => "tyre",
Self::Toy => "toy",
Self::Aluminium => "aluminium",
Self::Furniture => "furniture",
Self::Detergent => "detergent",
Self::Other => "other",
}
}
}