diff --git a/src/client.rs b/src/client.rs index 01f0dcf..81285ba 100644 --- a/src/client.rs +++ b/src/client.rs @@ -189,11 +189,11 @@ impl ClientManager { self.clients.get_mut(client as usize)?.as_mut() } - pub fn enumerate(&self) -> Vec<(Client, bool)> { - self.clients - .iter() - .filter_map(|s| s.as_ref()) - .map(|s| (s.client.clone(), s.active)) - .collect() + pub fn get_client_states(&self) -> impl Iterator { + self.clients.iter().filter_map(|x| x.as_ref()) + } + + pub fn get_client_states_mut(&mut self) -> impl Iterator { + self.clients.iter_mut().filter_map(|x| x.as_mut()) } } diff --git a/src/server.rs b/src/server.rs index 2bc2fa2..0a26095 100644 --- a/src/server.rs +++ b/src/server.rs @@ -502,7 +502,10 @@ impl Server { } async fn enumerate(&mut self) { - let clients = self.client_manager.enumerate(); + let clients = self.client_manager + .get_client_states() + .map(|s| (s.client.clone(), s.active)) + .collect(); if let Err(e) = self .frontend .notify_all(FrontendNotify::Enumerate(clients))