aboutsummaryrefslogtreecommitdiffstats
path: root/src/volume.rs
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2023-01-19 14:40:59 -0330
committerSam Anthony <sam@samanthony.xyz>2023-01-19 14:40:59 -0330
commitb16b909074691c5d528774827b43c66cefc5f865 (patch)
tree265d5d564520e98cd8da1bc8b7914ea894b52eef /src/volume.rs
parent74c5641b7a46c02e999f1e0cf506c983ede37995 (diff)
downloadvolute-b16b909074691c5d528774827b43c66cefc5f865.zip
use Volume in text_input widget
Diffstat (limited to 'src/volume.rs')
-rw-r--r--src/volume.rs22
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 {