automate 0.4.0

An asynchronous library to interact with Discord API and make bots
use std::collections::HashMap;
use crate::Snowflake;
use crate::gateway::User;
use crate::storage::{Stored, Storage};

#[derive(Default, Debug, Clone)]
pub struct UserStorage {
    users: HashMap<Snowflake, User>
}

impl Storage for UserStorage {}

impl Stored for User {
    type Storage = UserStorage;
}

impl UserStorage {
    pub fn all(&self) -> Vec<&User> {
        self.users.values().collect()
    }

    #[inline]
    pub fn get(&self, id: Snowflake) -> &User {
        self.get_opt(id).unwrap()
    }

    pub fn get_opt(&self, id: Snowflake) -> Option<&User> {
        self.users.get(&id)
    }

    pub(crate) fn get_mut(&mut self, id: Snowflake) -> Option<&mut User> {
        self.users.get_mut(&id)
    }

    pub(crate) fn insert(&mut self, user: User) {
        self.users.insert(user.id, user);
    }
}