use serde::{Deserialize, Serialize};
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)]
#[serde(transparent)]
pub struct CompartmentId(pub u8);
impl CompartmentId {
pub const CYTOSOL: CompartmentId = CompartmentId(0);
pub const EXTRACELLULAR: CompartmentId = CompartmentId(1);
pub const PERIPLASM: CompartmentId = CompartmentId(2);
}
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Compartment {
pub id: String, pub name: String, }
impl Compartment {
pub fn cytosol() -> Self {
Self { id: "c0".into(), name: "Cytosol".into() }
}
pub fn extracellular() -> Self {
Self { id: "e0".into(), name: "Extracellular".into() }
}
pub fn periplasm() -> Self {
Self { id: "p0".into(), name: "Periplasm".into() }
}
pub fn default_three() -> Vec<Compartment> {
vec![Self::cytosol(), Self::extracellular(), Self::periplasm()]
}
}