easy_complex/
angle.rs

1//! Generates an `Angle` enum
2
3/// Angle enum
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum Angle<T> {
6	/// Angle in degrees
7	Degree(T),
8	/// Angle in radians
9	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}