aboutsummaryrefslogtreecommitdiff
path: root/src/cache/mod.rs
diff options
context:
space:
mode:
authoracdenisSK <[email protected]>2017-09-12 14:57:52 +0200
committeracdenisSK <[email protected]>2017-09-12 14:59:21 +0200
commitbc3491cf3a70a02ce5725e66887746567ae4660c (patch)
treedc1086bfae3f2cb56ab8ea89e13cba8bf46c0513 /src/cache/mod.rs
parentCopy some methods from Command to Group (#164) (diff)
downloadserenity-bc3491cf3a70a02ce5725e66887746567ae4660c.tar.xz
serenity-bc3491cf3a70a02ce5725e66887746567ae4660c.zip
Revamp `CacheEventsImpl`
Diffstat (limited to 'src/cache/mod.rs')
-rw-r--r--src/cache/mod.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/cache/mod.rs b/src/cache/mod.rs
index 88e4266..ba9efaa 100644
--- a/src/cache/mod.rs
+++ b/src/cache/mod.rs
@@ -47,9 +47,9 @@ use std::default::Default;
use std::sync::{Arc, RwLock};
use model::*;
-mod cache_events_impl;
+mod cache_update;
-pub(crate) use self::cache_events_impl::*;
+pub(crate) use self::cache_update::*;
/// A cache of all events received over a [`Shard`], where storing at least
/// some data from the event is possible.
@@ -602,7 +602,11 @@ impl Cache {
self.categories.get(&channel_id.into()).cloned()
}
- fn update_user_entry(&mut self, user: &User) {
+ pub(crate) fn update<E: CacheUpdate>(&mut self, e: &mut E) -> Option<E::Output> {
+ e.update(self)
+ }
+
+ pub(crate) 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())));