From 346753b673e0ee0217fe40fcc0ebb21d9c0b0cfc Mon Sep 17 00:00:00 2001 From: Remo Senekowitsch Date: Mon, 13 Apr 2026 18:51:38 +0200 Subject: [PATCH] Make starting fireworks more fun :) --- exercises/07_structs/structs3.rs | 21 +++++++-------------- solutions/07_structs/structs3.rs | 21 +++++++-------------- 2 files changed, 14 insertions(+), 28 deletions(-) diff --git a/exercises/07_structs/structs3.rs b/exercises/07_structs/structs3.rs index b5457de6..d42729e1 100644 --- a/exercises/07_structs/structs3.rs +++ b/exercises/07_structs/structs3.rs @@ -22,13 +22,7 @@ fn add_rockets(fireworks: &mut Fireworks, rockets: usize) { // TODO: Turn this function into a method on `Fireworks`. fn start(fireworks: Fireworks) -> String { - if fireworks.rockets < 5 { - String::from("small") - } else if fireworks.rockets < 20 { - String::from("medium") - } else { - String::from("big") - } + "🚀".repeat(fireworks.rockets) } fn main() { @@ -41,18 +35,17 @@ mod tests { #[test] fn start_some_fireworks() { + let f = Fireworks::new(); + assert_eq!(f.start(), ""); + let mut f = Fireworks::new(); f.add_rockets(3); - assert_eq!(f.start(), "small"); + assert_eq!(f.start(), "🚀🚀🚀"); let mut f = Fireworks::new(); - f.add_rockets(15); - assert_eq!(f.start(), "medium"); - - let mut f = Fireworks::new(); - f.add_rockets(100); + f.add_rockets(7); // We don't use method syntax in the last test to ensure the `start` // function takes ownership of the fireworks. - assert_eq!(Fireworks::start(f), "big"); + assert_eq!(Fireworks::start(f), "🚀🚀🚀🚀🚀🚀🚀"); } } diff --git a/solutions/07_structs/structs3.rs b/solutions/07_structs/structs3.rs index a8928443..c672bb19 100644 --- a/solutions/07_structs/structs3.rs +++ b/solutions/07_structs/structs3.rs @@ -15,13 +15,7 @@ impl Fireworks { } fn start(self) -> String { - if self.rockets < 5 { - String::from("small") - } else if self.rockets < 20 { - String::from("medium") - } else { - String::from("big") - } + "🚀".repeat(self.rockets) } } @@ -35,18 +29,17 @@ mod tests { #[test] fn start_some_fireworks() { + let f = Fireworks::new(); + assert_eq!(f.start(), ""); + let mut f = Fireworks::new(); f.add_rockets(3); - assert_eq!(f.start(), "small"); + assert_eq!(f.start(), "🚀🚀🚀"); let mut f = Fireworks::new(); - f.add_rockets(15); - assert_eq!(f.start(), "medium"); - - let mut f = Fireworks::new(); - f.add_rockets(100); + f.add_rockets(7); // We don't use method syntax in the last test to ensure the `start` // function takes ownership of the fireworks. - assert_eq!(Fireworks::start(f), "big"); + assert_eq!(Fireworks::start(f), "🚀🚀🚀🚀🚀🚀🚀"); } }