Snippets

Eric Young Examples of Rust iterator awesomeness

Created by Eric Young
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))
    }
}

Comments (0)

HTTPS SSH

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