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() } }