summaryrefslogtreecommitdiffstats
path: root/src/metric/conductance.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/metric/conductance.rs')
-rw-r--r--src/metric/conductance.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/src/metric/conductance.rs b/src/metric/conductance.rs
new file mode 100644
index 0000000..29712e0
--- /dev/null
+++ b/src/metric/conductance.rs
@@ -0,0 +1,39 @@
+use std::fmt::{Display, Formatter, Result};
+use std::ops::{Add, Sub, AddAssign, SubAssign, Div, Mul, DivAssign, MulAssign};
+
+use crate::metric::Unit;
+use crate::metric::Primitive;
+
+use crate::declare_unit_basics;
+use crate::declare_simple_unit;
+
+use crate::metric::electric_resistance::ElectricResistance;
+
+declare_simple_unit!(Conductance, Siemens, "S");
+
+// 1/s = Hz
+impl Div<ElectricResistance> for f64 {
+ type Output = Conductance;
+
+ fn div(self, rhs: ElectricResistance) -> Self::Output {
+ Conductance::Canonical(self * rhs.to_si_primitive())
+ }
+}
+
+// Hz * s = 1
+impl Mul<ElectricResistance> for Conductance {
+ type Output = f64;
+
+ fn mul(self, rhs: ElectricResistance) -> Self::Output {
+ self.to_si_primitive() * rhs.to_si_primitive()
+ }
+}
+
+// s * Hz = 1
+impl Mul<Conductance> for ElectricResistance {
+ type Output = f64;
+
+ fn mul(self, rhs: Conductance) -> Self::Output {
+ self.to_si_primitive() * rhs.to_si_primitive()
+ }
+} \ No newline at end of file