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
use std::convert::From;

#[derive(Debug, Clone, Copy)]
pub struct Angle {
    pub deg: i16,
    pub min: u8,
    pub sec: u8,
}

impl From<Angle> for f32 {
    fn from(ang: Angle) -> f32 {
        let result = ang.deg.abs() as f32 + (ang.min as f32) / 60.0 + (ang.sec as f32) / 3600.0;
        if ang.deg < 0 {
            -result
        } else {
            result
        }
    }
}

impl From<Angle> for f64 {
    fn from(ang: Angle) -> f64 {
        let result = ang.deg.abs() as f64 + (ang.min as f64) / 60.0 + (ang.sec as f64) / 3600.0;
        if ang.deg < 0 {
            -result
        } else {
            result
        }
    }
}