molecule/
molecule.rs

1/*
2  Molecular mass example as an application for Nuclide
3*/
4
5use ::Nuclide::Nuclide;
6use ::Nuclide::ChemElement;
7
8struct Water {
9  oxygen : Nuclide,
10  hydroone : Nuclide,
11  hydrotwo : Nuclide, 
12}
13
14impl Water{
15
16fn new(oxygen: Nuclide, hydroone: Nuclide, hydrotwo: Nuclide) -> Self{
17   Self {oxygen, hydroone, hydrotwo}
18}
19
20fn mass(&self) -> f64{
21  self.oxygen.am()+ self.hydroone.am() + self.hydrotwo.am()
22}
23
24
25
26}
27
28fn main(){
29  
30  let protium = Nuclide::new("H-1").unwrap();
31  let deuterium = Nuclide::new("H-2").unwrap();
32  let tritium = Nuclide::new("H-3").unwrap();
33  let oxy = Nuclide::new("O-16").unwrap();
34  let h_oxy = Nuclide::new("O-18").unwrap(); 
35  
36  let potable = Water::new(oxy, protium, protium);
37  let hdo = Water::new(oxy, deuterium, protium);
38  let heavy_water = Water::new(oxy, deuterium, deuterium);
39  let tritiated_water = Water::new(oxy, tritium, tritium);
40  let super_heavy_water = Water::new(h_oxy, deuterium, deuterium);
41
42  println!("Some masses of different types of \"water\" \n ");
43  println!("Regular water H2O : {} daltons", potable.mass());
44  println!("Semi-heavy water HDO : {} daltons", hdo.mass());
45  println!("heavy water D2O : {} daltons", heavy_water.mass());
46  println!("Tritiated water T2O : {} daltons", tritiated_water.mass());
47  println!("Super heavy water D2O-18 : {} daltons", super_heavy_water.mass());
48
49}