TicketManagement/Lifetimes/Task/src/lib.rs (37 lines of code) (raw):

use ticket_fields::{TicketDescription, TicketTitle}; // TODO: Implement the `IntoIterator` trait for `&TicketStore` so that the test compiles and passes. #[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 iter(&self) -> std::slice::Iter<Ticket> { self.tickets.iter() } } impl<'a> IntoIterator for &'a TicketStore { type Item = &'a Ticket; type IntoIter = std::slice::Iter<'a, Ticket>; fn into_iter(self) -> Self::IntoIter { self.tickets.iter() } }