Sha256: 2617de768871a12040a69803296bb49d912851b62e8779caf44d7bb3fd393154

Contents?: true

Size: 1.43 KB

Versions: 396

Compression:

Stored size: 1.43 KB

Contents

pub struct Duration {
    seconds: f64,
}

impl From<u64> for Duration {
    fn from(s: u64) -> Self {
        Duration { seconds: s as f64 }
    }
}

impl From<f64> for Duration {
    fn from(s: f64) -> Self {
        Duration { seconds: s }
    }
}

pub trait Planet {
    fn orbital_duration() -> Duration;
    fn years_during(d: &Duration) -> f64 {
        d.seconds / Self::orbital_duration().seconds
    }
}

pub struct Mercury;
pub struct Venus;
pub struct Earth;
pub struct Mars;
pub struct Jupiter;
pub struct Saturn;
pub struct Uranus;
pub struct Neptune;

impl Planet for Mercury {
    fn orbital_duration() -> Duration {
        Duration::from(7600543.81992)
    }
}

impl Planet for Venus {
    fn orbital_duration() -> Duration {
        Duration::from(19414149.052176)
    }
}

impl Planet for Earth {
    fn orbital_duration() -> Duration {
        Duration::from(31557600)
    }
}

impl Planet for Mars {
    fn orbital_duration() -> Duration {
        Duration::from(59354032.69008)
    }
}

impl Planet for Jupiter {
    fn orbital_duration() -> Duration {
        Duration::from(374355659.124)
    }
}

impl Planet for Saturn {
    fn orbital_duration() -> Duration {
        Duration::from(929292362.8848)
    }
}

impl Planet for Uranus {
    fn orbital_duration() -> Duration {
        Duration::from(2651370019.3296)
    }
}

impl Planet for Neptune {
    fn orbital_duration() -> Duration {
        Duration::from(5200418560.032)
    }
}

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.179 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.178 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.177 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.176 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.175 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.174 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.173 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.172 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.171 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.170 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.169 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.167 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.166 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.165 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.164 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.163 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.162 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.161 tracks/rust/exercises/space-age/example.rs
trackler-2.2.1.160 tracks/rust/exercises/space-age/example.rs