#[derive(Debug)] pub struct Duration; impl From 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 {}