diff options
| author | acdenisSK <[email protected]> | 2017-08-11 12:01:40 +0200 |
|---|---|---|
| committer | acdenisSK <[email protected]> | 2017-08-11 12:01:40 +0200 |
| commit | 32de2cb941e8d4fdffde7b8b82599fcd78ab4c2f (patch) | |
| tree | c07186f793a308632c54efd52a15625bb9dd4280 /src/cache/mod.rs | |
| parent | Split event handling in the cache to a trait (diff) | |
| download | serenity-32de2cb941e8d4fdffde7b8b82599fcd78ab4c2f.tar.xz serenity-32de2cb941e8d4fdffde7b8b82599fcd78ab4c2f.zip | |
Put `update_user_entry` back into the cache
Not really related to the events by any means
Diffstat (limited to 'src/cache/mod.rs')
| -rw-r--r-- | src/cache/mod.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/cache/mod.rs b/src/cache/mod.rs index a3d0058..19089ee 100644 --- a/src/cache/mod.rs +++ b/src/cache/mod.rs @@ -41,7 +41,7 @@ //! [`Role`]: ../model/struct.Role.html //! [`CACHE`]: ../struct.CACHE.html //! [`http`]: ../http/index.html - +use std::collections::hash_map::Entry; use std::collections::{HashMap, HashSet}; use std::default::Default; use std::sync::{Arc, RwLock}; @@ -592,6 +592,17 @@ impl Cache { pub fn user<U: Into<UserId>>(&self, user_id: U) -> Option<Arc<RwLock<User>>> { self.users.get(&user_id.into()).cloned() } + + fn update_user_entry(&mut self, user: &User) { + match self.users.entry(user.id) { + Entry::Vacant(e) => { + e.insert(Arc::new(RwLock::new(user.clone()))); + }, + Entry::Occupied(mut e) => { + e.get_mut().write().unwrap().clone_from(user); + }, + } + } } impl Default for Cache { |