TicketManagement/ImplTrait/Task/src/lib.rs (32 lines of code) (raw):

// TODO: Implement the `in_progress` method. It must return an iterator over the tickets in // `TicketStore` with status set to `Status::InProgress`. use ticket_fields::{TicketDescription, TicketTitle}; #[derive(Clone)] pub struct TicketStore { tickets: Vec<Ticket>, } #[derive(Clone, Debug, PartialEq)] pub struct Ticket { pub title: TicketTitle, pub description: TicketDescription, pub status: Status, } #[derive(Clone, Debug, Copy, PartialEq)] pub enum Status { ToDo, InProgress, Done, } impl TicketStore { pub fn new() -> Self { Self { tickets: Vec::new(), } } pub fn add_ticket(&mut self, ticket: Ticket) { self.tickets.push(ticket); } pub fn in_progress(&self) -> impl Iterator<Item = &Ticket> { self.tickets .iter() .filter(|ticket| ticket.status == Status::InProgress) } }