diff options
Diffstat (limited to 'src/volume.rs')
| -rw-r--r-- | src/volume.rs | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/volume.rs b/src/volume.rs index ea78938..087676c 100644 --- a/src/volume.rs +++ b/src/volume.rs @@ -1,12 +1,24 @@ use std::ops::Mul; -trait Volume { +pub trait Volume { /// Returns the volume in SI units (cubic metres). fn si(self) -> CubicMetre; + + fn set(&mut self, val: f64); } -#[derive(Debug, PartialEq)] -struct CubicMetre(f64); +#[derive(Debug, Default, PartialEq)] +pub struct CubicMetre(f64); + +impl Volume for CubicMetre { + fn si(self) -> CubicMetre { + self + } + + fn set(&mut self, val: f64) { + self.0 = val; + } +} #[derive(Debug, PartialEq)] struct Litre(f64); @@ -15,6 +27,10 @@ impl Volume for Litre { fn si(self) -> CubicMetre { CubicMetre(self.0 * 10_f64.powf(-3.)) } + + fn set(&mut self, val: f64) { + self.0 = val + } } impl From<i32> for Litre { |