gapsmith_core/
compartment.rs1use serde::{Deserialize, Serialize};
7
8#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)]
11#[serde(transparent)]
12pub struct CompartmentId(pub u8);
13
14impl CompartmentId {
15 pub const CYTOSOL: CompartmentId = CompartmentId(0);
16 pub const EXTRACELLULAR: CompartmentId = CompartmentId(1);
17 pub const PERIPLASM: CompartmentId = CompartmentId(2);
18}
19
20#[derive(Clone, Debug, Serialize, Deserialize)]
22pub struct Compartment {
23 pub id: String, pub name: String, }
26
27impl Compartment {
28 pub fn cytosol() -> Self {
29 Self { id: "c0".into(), name: "Cytosol".into() }
30 }
31 pub fn extracellular() -> Self {
32 Self { id: "e0".into(), name: "Extracellular".into() }
33 }
34 pub fn periplasm() -> Self {
35 Self { id: "p0".into(), name: "Periplasm".into() }
36 }
37 pub fn default_three() -> Vec<Compartment> {
38 vec![Self::cytosol(), Self::extracellular(), Self::periplasm()]
39 }
40}