44WIYRRYXHTRYJGD3ISP4HWTYOTHO7TA4HG56OWFUVS7ESUTGKFAC
pub struct Mercury;
pub struct Venus;
pub struct Earth;
pub struct Mars;
pub struct Jupiter;
pub struct Saturn;
pub struct Uranus;
pub struct Neptune;
macro_rules! impl_planets {
($($planet:ident : $period:literal),*) => {$(
pub struct $planet;
impl Planet for $planet {
fn years_during(d: &Duration) -> f64 {
d.seconds / 31557600.0 / $period
}
}
)*};
}
impl Planet for Mercury {}
impl Planet for Venus {}
impl Planet for Earth {}
impl Planet for Mars {}
impl Planet for Jupiter {}
impl Planet for Saturn {}
impl Planet for Uranus {}
impl Planet for Neptune {}
impl_planets! {
Mercury: 0.2408467,
Venus: 0.61519726,
Earth: 1.0,
Mars: 1.8808158,
Jupiter: 11.862615,
Saturn: 29.447498,
Uranus: 84.016846,
Neptune: 164.79132
}