1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum Angle<T> {
6 Degree(T),
8 Radian(T),
10}
11
12macro_rules! impl_angle {
13 ([ $($float:ty),+ ]) => (
14 $(
15 impl Angle<$float> {
16 pub fn degree(self) -> Angle<$float> {
17 match self {
18 Angle::Radian(a) => Angle::Degree(a*180.0/<$float>::from(common::f32::consts::PI)),
19 Angle::Degree(b) => Angle::Degree(b),
20 }
21 }
22
23 pub fn radian(self) -> Angle<$float> {
24 match self {
25 Angle::Radian(a) => Angle::Radian(a),
26 Angle::Degree(b) => Angle::Radian(b*<$float>::from(common::f32::consts::PI)/180.0),
27 }
28 }
29 }
30 )+
31 );
32}