diff --git a/exercises/06_ticket_management/08_impl_trait/src/lib.rs b/exercises/06_ticket_management/08_impl_trait/src/lib.rs index d8afbe0..b247a72 100644 --- a/exercises/06_ticket_management/08_impl_trait/src/lib.rs +++ b/exercises/06_ticket_management/08_impl_trait/src/lib.rs @@ -7,6 +7,14 @@ pub struct TicketStore { tickets: Vec, } +impl TicketStore { + fn in_progress(&self) -> impl Iterator { + self.tickets + .iter() + .filter(|&a| a.status == Status::InProgress) + } +} + #[derive(Clone, Debug, PartialEq)] pub struct Ticket { pub title: TicketTitle, diff --git a/exercises/06_ticket_management/09_impl_trait_2/src/lib.rs b/exercises/06_ticket_management/09_impl_trait_2/src/lib.rs index 33e982b..fa3e99c 100644 --- a/exercises/06_ticket_management/09_impl_trait_2/src/lib.rs +++ b/exercises/06_ticket_management/09_impl_trait_2/src/lib.rs @@ -33,7 +33,10 @@ impl TicketStore { // that can be infallibly converted into a `Ticket`. // This can make it nicer to use the method, as it removes the syntax noise of `.into()` // from the calling site. It can worsen the quality of the compiler error messages, though. - pub fn add_ticket(&mut self, ticket: impl Into) { + pub fn add_ticket(&mut self, ticket: T) + where + T: Into, + { self.tickets.push(ticket.into()); } } diff --git a/exercises/06_ticket_management/10_slices/src/lib.rs b/exercises/06_ticket_management/10_slices/src/lib.rs index 1d2c6f7..b3ad556 100644 --- a/exercises/06_ticket_management/10_slices/src/lib.rs +++ b/exercises/06_ticket_management/10_slices/src/lib.rs @@ -1,6 +1,9 @@ // TODO: Define a function named `sum` that takes a reference to a slice of `u32` and returns the sum of all // elements in the slice. +fn sum(v: &[u32]) -> u32 { + v.iter().sum() +} #[cfg(test)] mod tests { use super::*; diff --git a/exercises/06_ticket_management/11_mutable_slices/src/lib.rs b/exercises/06_ticket_management/11_mutable_slices/src/lib.rs index 4ba888c..b3e338c 100644 --- a/exercises/06_ticket_management/11_mutable_slices/src/lib.rs +++ b/exercises/06_ticket_management/11_mutable_slices/src/lib.rs @@ -1,6 +1,14 @@ // TODO: Define a function named `squared` that raises all `i32`s within a slice to the power of 2. // The slice should be modified in place. +fn squared(v: &mut [i32]) { + for val in v.iter_mut() { + *val = val.pow(2); + } + // let b = v.iter().map(|a| a.pow(2)).collect::>().as_slice(); + // v = b; +} + #[cfg(test)] mod tests { use super::*;