summaryrefslogtreecommitdiffstats
path: root/src/metric/conductance.rs
blob: 29712e0732207d6fadf8ac4c6717aacf5a50cfa4 (plain) (blame)
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()
    }
}