From 3e4fb93a594f11a80904653396698d6c70e07cb0 Mon Sep 17 00:00:00 2001 From: Niklas Halle Date: Sat, 31 Oct 2020 20:44:44 +0100 Subject: Initial public release --- src/metric/conductance.rs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/metric/conductance.rs (limited to 'src/metric/conductance.rs') 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 for f64 { + type Output = Conductance; + + fn div(self, rhs: ElectricResistance) -> Self::Output { + Conductance::Canonical(self * rhs.to_si_primitive()) + } +} + +// Hz * s = 1 +impl Mul 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 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 -- cgit v1.2.3-54-g00ecf