105 pub fn has_room(&self, name: &str) -> bool { |
105 pub fn has_room(&self, name: &str) -> bool { |
106 self.rooms.iter().any(|(_, r)| r.name == name) |
106 self.rooms.iter().any(|(_, r)| r.name == name) |
107 } |
107 } |
108 |
108 |
109 pub fn find_room(&self, name: &str) -> Option<&HWRoom> { |
109 pub fn find_room(&self, name: &str) -> Option<&HWRoom> { |
110 self.rooms.iter().find(|(_, r)| r.name == name).map(|(_, r)| r) |
110 self.rooms.iter().find_map(|(_, r)| Some(r).filter(|r| r.name == name)) |
111 } |
111 } |
112 |
112 |
113 pub fn find_room_mut(&mut self, name: &str) -> Option<&mut HWRoom> { |
113 pub fn find_room_mut(&mut self, name: &str) -> Option<&mut HWRoom> { |
114 self.rooms.iter_mut().find(|(_, r)| r.name == name).map(|(_, r)| r) |
114 self.rooms.iter_mut().find_map(|(_, r)| Some(r).filter(|r| r.name == name)) |
115 } |
115 } |
116 |
116 |
117 pub fn find_client(&self, nick: &str) -> Option<&HWClient> { |
117 pub fn find_client(&self, nick: &str) -> Option<&HWClient> { |
118 self.clients.iter().find(|(_, c)| c.nick == nick).map(|(_, c)| c) |
118 self.clients.iter().find_map(|(_, c)| Some(c).filter(|c| c.nick == nick)) |
119 } |
119 } |
120 |
120 |
121 pub fn find_client_mut(&mut self, nick: &str) -> Option<&mut HWClient> { |
121 pub fn find_client_mut(&mut self, nick: &str) -> Option<&mut HWClient> { |
122 self.clients.iter_mut().find(|(_, c)| c.nick == nick).map(|(_, c)| c) |
122 self.clients.iter_mut().find_map(|(_, c)| Some(c).filter(|c| c.nick == nick)) |
123 } |
123 } |
124 |
124 |
125 pub fn select_clients<F>(&self, f: F) -> Vec<ClientId> |
125 pub fn select_clients<F>(&self, f: F) -> Vec<ClientId> |
126 where F: Fn(&(usize, &HWClient)) -> bool { |
126 where F: Fn(&(usize, &HWClient)) -> bool { |
127 self.clients.iter().filter(f) |
127 self.clients.iter().filter(f) |