1use ::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}