8: Add solution to Rust track exercise "Clock".
[?]
9Zb2bmkejrNknawUtr3MKvVstZkVDR8x8ritfgZXKrky
Dec 23, 2021, 5:27 PM
3EXW65BYQJJV4ZRPFNMEOL7D2FQHFADS26N7JHFSBMPF4T6I5DWACDependencies
- [2]
3DNQBXLO7: Add Rust track exercise "Clock".
Change contents
- replacement in rust/clock/tests/clock.rs at line 9
assert_eq!(Clock::new(8, 0).to_string(), "08:00");assert_eq!(Clock::new(8, 0).to_string(), "08:00"); - replacement in rust/clock/tests/clock.rs at line 15
assert_eq!(Clock::new(11, 9).to_string(), "11:09");assert_eq!(Clock::new(11, 9).to_string(), "11:09"); - replacement in rust/clock/tests/clock.rs at line 21
assert_eq!(Clock::new(24, 0).to_string(), "00:00");assert_eq!(Clock::new(24, 0).to_string(), "00:00"); - replacement in rust/clock/tests/clock.rs at line 27
assert_eq!(Clock::new(25, 0).to_string(), "01:00");assert_eq!(Clock::new(25, 0).to_string(), "01:00"); - replacement in rust/clock/tests/clock.rs at line 33
assert_eq!(Clock::new(100, 0).to_string(), "04:00");assert_eq!(Clock::new(100, 0).to_string(), "04:00"); - replacement in rust/clock/tests/clock.rs at line 39
assert_eq!(Clock::new(1, 60).to_string(), "02:00");assert_eq!(Clock::new(1, 60).to_string(), "02:00"); - replacement in rust/clock/tests/clock.rs at line 45
assert_eq!(Clock::new(0, 160).to_string(), "02:40");assert_eq!(Clock::new(0, 160).to_string(), "02:40"); - replacement in rust/clock/tests/clock.rs at line 51
assert_eq!(Clock::new(0, 1723).to_string(), "04:43");assert_eq!(Clock::new(0, 1723).to_string(), "04:43"); - replacement in rust/clock/tests/clock.rs at line 57
assert_eq!(Clock::new(25, 160).to_string(), "03:40");assert_eq!(Clock::new(25, 160).to_string(), "03:40"); - replacement in rust/clock/tests/clock.rs at line 63
assert_eq!(Clock::new(201, 3001).to_string(), "11:01");assert_eq!(Clock::new(201, 3001).to_string(), "11:01"); - replacement in rust/clock/tests/clock.rs at line 69
assert_eq!(Clock::new(72, 8640).to_string(), "00:00");assert_eq!(Clock::new(72, 8640).to_string(), "00:00"); - replacement in rust/clock/tests/clock.rs at line 75
assert_eq!(Clock::new(-1, 15).to_string(), "23:15");assert_eq!(Clock::new(-1, 15).to_string(), "23:15"); - replacement in rust/clock/tests/clock.rs at line 81
assert_eq!(Clock::new(-25, 00).to_string(), "23:00");assert_eq!(Clock::new(-25, 00).to_string(), "23:00"); - replacement in rust/clock/tests/clock.rs at line 87
assert_eq!(Clock::new(-91, 00).to_string(), "05:00");assert_eq!(Clock::new(-91, 00).to_string(), "05:00"); - replacement in rust/clock/tests/clock.rs at line 93
assert_eq!(Clock::new(1, -40).to_string(), "00:20");assert_eq!(Clock::new(1, -40).to_string(), "00:20"); - replacement in rust/clock/tests/clock.rs at line 99
assert_eq!(Clock::new(1, -160).to_string(), "22:20");assert_eq!(Clock::new(1, -160).to_string(), "22:20"); - replacement in rust/clock/tests/clock.rs at line 105
assert_eq!(Clock::new(1, -4820).to_string(), "16:40");assert_eq!(Clock::new(1, -4820).to_string(), "16:40"); - replacement in rust/clock/tests/clock.rs at line 111
assert_eq!(Clock::new(2, -60).to_string(), "01:00");assert_eq!(Clock::new(2, -60).to_string(), "01:00"); - replacement in rust/clock/tests/clock.rs at line 117
assert_eq!(Clock::new(1, -120).to_string(), "23:00");assert_eq!(Clock::new(1, -120).to_string(), "23:00"); - replacement in rust/clock/tests/clock.rs at line 123
assert_eq!(Clock::new(-25, -160).to_string(), "20:20");assert_eq!(Clock::new(-25, -160).to_string(), "20:20"); - replacement in rust/clock/tests/clock.rs at line 129
assert_eq!(Clock::new(-121, -5810).to_string(), "22:10");assert_eq!(Clock::new(-121, -5810).to_string(), "22:10"); - replacement in rust/clock/tests/clock.rs at line 135
assert_eq!(Clock::new(0, -22).to_string(), "23:38");assert_eq!(Clock::new(0, -22).to_string(), "23:38"); - replacement in rust/clock/tests/clock.rs at line 145
let clock = Clock::new(10, 0).add_minutes(3);assert_eq!(clock.to_string(), "10:03");let clock = Clock::new(10, 0).add_minutes(3);assert_eq!(clock.to_string(), "10:03"); - replacement in rust/clock/tests/clock.rs at line 152
let clock = Clock::new(6, 41).add_minutes(0);assert_eq!(clock.to_string(), "06:41");let clock = Clock::new(6, 41).add_minutes(0);assert_eq!(clock.to_string(), "06:41"); - replacement in rust/clock/tests/clock.rs at line 159
let clock = Clock::new(0, 45).add_minutes(40);assert_eq!(clock.to_string(), "01:25");let clock = Clock::new(0, 45).add_minutes(40);assert_eq!(clock.to_string(), "01:25"); - replacement in rust/clock/tests/clock.rs at line 166
let clock = Clock::new(10, 0).add_minutes(61);assert_eq!(clock.to_string(), "11:01");let clock = Clock::new(10, 0).add_minutes(61);assert_eq!(clock.to_string(), "11:01"); - replacement in rust/clock/tests/clock.rs at line 173
let clock = Clock::new(0, 45).add_minutes(160);assert_eq!(clock.to_string(), "03:25");let clock = Clock::new(0, 45).add_minutes(160);assert_eq!(clock.to_string(), "03:25"); - replacement in rust/clock/tests/clock.rs at line 180
let clock = Clock::new(23, 59).add_minutes(2);assert_eq!(clock.to_string(), "00:01");let clock = Clock::new(23, 59).add_minutes(2);assert_eq!(clock.to_string(), "00:01"); - replacement in rust/clock/tests/clock.rs at line 187
let clock = Clock::new(5, 32).add_minutes(1500);assert_eq!(clock.to_string(), "06:32");let clock = Clock::new(5, 32).add_minutes(1500);assert_eq!(clock.to_string(), "06:32"); - replacement in rust/clock/tests/clock.rs at line 194
let clock = Clock::new(1, 1).add_minutes(3500);assert_eq!(clock.to_string(), "11:21");let clock = Clock::new(1, 1).add_minutes(3500);assert_eq!(clock.to_string(), "11:21"); - replacement in rust/clock/tests/clock.rs at line 201
let clock = Clock::new(10, 3).add_minutes(-3);assert_eq!(clock.to_string(), "10:00");let clock = Clock::new(10, 3).add_minutes(-3);assert_eq!(clock.to_string(), "10:00"); - replacement in rust/clock/tests/clock.rs at line 208
let clock = Clock::new(10, 3).add_minutes(-30);assert_eq!(clock.to_string(), "09:33");let clock = Clock::new(10, 3).add_minutes(-30);assert_eq!(clock.to_string(), "09:33"); - replacement in rust/clock/tests/clock.rs at line 215
let clock = Clock::new(10, 3).add_minutes(-70);assert_eq!(clock.to_string(), "08:53");let clock = Clock::new(10, 3).add_minutes(-70);assert_eq!(clock.to_string(), "08:53"); - replacement in rust/clock/tests/clock.rs at line 222
let clock = Clock::new(0, 3).add_minutes(-4);assert_eq!(clock.to_string(), "23:59");let clock = Clock::new(0, 3).add_minutes(-4);assert_eq!(clock.to_string(), "23:59"); - replacement in rust/clock/tests/clock.rs at line 229
let clock = Clock::new(0, 0).add_minutes(-160);assert_eq!(clock.to_string(), "21:20");let clock = Clock::new(0, 0).add_minutes(-160);assert_eq!(clock.to_string(), "21:20"); - replacement in rust/clock/tests/clock.rs at line 236
let clock = Clock::new(6, 15).add_minutes(-160);assert_eq!(clock.to_string(), "03:35");let clock = Clock::new(6, 15).add_minutes(-160);assert_eq!(clock.to_string(), "03:35"); - replacement in rust/clock/tests/clock.rs at line 243
let clock = Clock::new(5, 32).add_minutes(-1500);assert_eq!(clock.to_string(), "04:32");let clock = Clock::new(5, 32).add_minutes(-1500);assert_eq!(clock.to_string(), "04:32"); - replacement in rust/clock/tests/clock.rs at line 250
let clock = Clock::new(2, 20).add_minutes(-3000);assert_eq!(clock.to_string(), "00:20");let clock = Clock::new(2, 20).add_minutes(-3000);assert_eq!(clock.to_string(), "00:20"); - replacement in rust/clock/tests/clock.rs at line 261
assert_eq!(Clock::new(15, 37), Clock::new(15, 37));assert_eq!(Clock::new(15, 37), Clock::new(15, 37)); - replacement in rust/clock/tests/clock.rs at line 267
assert_ne!(Clock::new(15, 36), Clock::new(15, 37));assert_ne!(Clock::new(15, 36), Clock::new(15, 37)); - replacement in rust/clock/tests/clock.rs at line 273
assert_ne!(Clock::new(14, 37), Clock::new(15, 37));assert_ne!(Clock::new(14, 37), Clock::new(15, 37)); - replacement in rust/clock/tests/clock.rs at line 279
assert_eq!(Clock::new(10, 37), Clock::new(34, 37));assert_eq!(Clock::new(10, 37), Clock::new(34, 37)); - replacement in rust/clock/tests/clock.rs at line 285
assert_eq!(Clock::new(99, 11), Clock::new(3, 11));assert_eq!(Clock::new(99, 11), Clock::new(3, 11)); - replacement in rust/clock/tests/clock.rs at line 291
assert_eq!(Clock::new(-2, 40), Clock::new(22, 40));assert_eq!(Clock::new(-2, 40), Clock::new(22, 40)); - replacement in rust/clock/tests/clock.rs at line 297
assert_eq!(Clock::new(-31, 3), Clock::new(17, 3));assert_eq!(Clock::new(-31, 3), Clock::new(17, 3)); - replacement in rust/clock/tests/clock.rs at line 303
assert_eq!(Clock::new(-83, 49), Clock::new(13, 49));assert_eq!(Clock::new(-83, 49), Clock::new(13, 49)); - replacement in rust/clock/tests/clock.rs at line 309
assert_eq!(Clock::new(0, 1441), Clock::new(0, 1));assert_eq!(Clock::new(0, 1441), Clock::new(0, 1)); - replacement in rust/clock/tests/clock.rs at line 315
assert_eq!(Clock::new(2, 4322), Clock::new(2, 2));assert_eq!(Clock::new(2, 4322), Clock::new(2, 2)); - replacement in rust/clock/tests/clock.rs at line 321
assert_eq!(Clock::new(3, -20), Clock::new(2, 40))assert_eq!(Clock::new(3, -20), Clock::new(2, 40)) - replacement in rust/clock/tests/clock.rs at line 327
assert_eq!(Clock::new(5, -1490), Clock::new(4, 10))assert_eq!(Clock::new(5, -1490), Clock::new(4, 10)) - replacement in rust/clock/tests/clock.rs at line 333
assert_eq!(Clock::new(6, -4305), Clock::new(6, 15))assert_eq!(Clock::new(6, -4305), Clock::new(6, 15)) - replacement in rust/clock/tests/clock.rs at line 339
assert_eq!(Clock::new(-12, -268), Clock::new(7, 32))assert_eq!(Clock::new(-12, -268), Clock::new(7, 32)) - replacement in rust/clock/tests/clock.rs at line 345
assert_eq!(Clock::new(-54, -11_513), Clock::new(18, 7))assert_eq!(Clock::new(-54, -11_513), Clock::new(18, 7)) - replacement in rust/clock/tests/clock.rs at line 351
assert_eq!(Clock::new(24, 0), Clock::new(0, 0))assert_eq!(Clock::new(24, 0), Clock::new(0, 0)) - replacement in rust/clock/src/lib.rs at line 1
pub struct Clock;use std::fmt;const MINUTES_PER_HOUR: i32 = 60;const HOURS_PER_DAY: i32 = 24;const MINUTES_PER_DAY: i32 = MINUTES_PER_HOUR * HOURS_PER_DAY;#[derive(Debug, PartialEq)]pub struct Clock {minutes: i32,} - replacement in rust/clock/src/lib.rs at line 13
pub fn new(hours: i32, minutes: i32) -> Self {unimplemented!("Construct a new Clock from {} hours and {} minutes",hours,minutes);}pub fn new(hours: i32, minutes: i32) -> Self {Self {minutes: (hours * MINUTES_PER_HOUR + minutes).rem_euclid(MINUTES_PER_DAY),}}pub fn add_minutes(&self, minutes: i32) -> Self {Self::new(0, self.minutes + minutes)}fn minutes(&self) -> i32 {self.minutes % MINUTES_PER_HOUR}fn hours(&self) -> i32 {self.minutes / MINUTES_PER_HOUR}} - replacement in rust/clock/src/lib.rs at line 32
pub fn add_minutes(&self, minutes: i32) -> Self {unimplemented!("Add {} minutes to existing Clock time", minutes);}impl fmt::Display for Clock {fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {write!(formatter, "{:02}:{:02}", self.hours(), self.minutes())}