aboutsummaryrefslogtreecommitdiffstats
path: root/src/pressure/mod.rs
blob: 9b91aa519e29e418163565cb164f13ac9d268177 (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
mod bar;
mod kilopascal;
mod psi;
mod unit;

pub use bar::Bar;
pub use kilopascal::Kilopascal;
pub use psi::Psi;
pub use unit::Unit;

pub fn convert<F: Into<f64>>(val: F, from: Unit, to: Unit) -> f64 {
    match from {
        Unit::Kilopascal => match to {
            Unit::Kilopascal => val.into(),
            Unit::Bar => Bar::from(Kilopascal(val.into())).0,
            Unit::Psi => Psi::from(Kilopascal(val.into())).0,
        },
        Unit::Bar => match to {
            Unit::Bar => val.into(),
            Unit::Kilopascal => Kilopascal::from(Bar(val.into())).0,
            Unit::Psi => Psi::from(Bar(val.into())).0,
        },
        Unit::Psi => match to {
            Unit::Psi => val.into(),
            Unit::Kilopascal => Kilopascal::from(Psi(val.into())).0,
            Unit::Bar => Bar::from(Psi(val.into())).0,
        },
    }
}