diff options
Diffstat (limited to 'rust/space-age/src')
-rw-r--r-- | rust/space-age/src/lib.rs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/rust/space-age/src/lib.rs b/rust/space-age/src/lib.rs new file mode 100644 index 0000000..fec643f --- /dev/null +++ b/rust/space-age/src/lib.rs @@ -0,0 +1,35 @@ +#[derive(Debug)] +pub struct Duration; + +impl From<u64> for Duration { + fn from(s: u64) -> Self { + unimplemented!("s, measured in seconds: {}", s) + } +} + +pub trait Planet { + fn years_during(d: &Duration) -> f64 { + unimplemented!( + "convert a duration ({:?}) to the number of years on this planet for that duration", + d, + ); + } +} + +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 {} +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 {} |