1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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()
}
}
|