Snippets

Eric Young Examples of Rust iterator awesomeness

Created by Eric Young

File iterators.rs Added

  • Ignore whitespace
  • Hide word diff
+pub struct PlayerCache {
+    players: HashMap<String, MinecraftPlayer>,
+}
+
+impl PlayerCache {
+
+    pub fn new() -> PlayerCache {
+        PlayerCache { players: HashMap::new() }
+    }
+
+    pub fn get_online_players(&self) -> Vec<&MinecraftPlayer> {
+        self.players.values().filter(|&player| {
+            player.online
+        }).collect()
+    }
+
+    pub fn get_op_players(&self) -> Vec<&MinecraftPlayer> {
+        self.players.values().filter(|&player| {
+            player.op
+        }).collect()
+    }
+
+    pub fn get_whitelist_players(&self) -> Vec<&MinecraftPlayer> {
+        self.players.values().filter(|&player| {
+            player.white_listed
+        }).collect()
+    }
+    
+    pub fn get_all_players(&self) -> Vec<&MinecraftPlayer> {
+        self.players.values().collect()
+    }
+
+    pub fn get_cached_player(&mut self, player_name: &str) -> &mut MinecraftPlayer {
+        self.players.entry(player_name.to_lowercase()).or_insert(MinecraftPlayer::new(player_name))
+    }
+}
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.