diff options
Diffstat (limited to 'src/metric/conductance.rs')
-rw-r--r-- | src/metric/conductance.rs | 39 |
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 |