aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMei Boudreau <[email protected]>2017-10-12 18:18:07 -0400
committerZeyla Hellyer <[email protected]>2017-10-12 15:18:07 -0700
commit8565fa2cb356cf8cbccfeb09828c9d136ad3d614 (patch)
tree2e3d64a7495d791f896f6242e87ce12f09c66b43 /src
parentHelp-features display `Aliases` and list information for `Aliases`. (#190) (diff)
downloadserenity-8565fa2cb356cf8cbccfeb09828c9d136ad3d614.tar.xz
serenity-8565fa2cb356cf8cbccfeb09828c9d136ad3d614.zip
Optimize Member::roles
Diffstat (limited to 'src')
-rw-r--r--src/model/guild/member.rs32
1 files changed, 11 insertions, 21 deletions
diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs
index 29172a0..20b45b8 100644
--- a/src/model/guild/member.rs
+++ b/src/model/guild/member.rs
@@ -361,27 +361,17 @@ impl Member {
/// If role data can not be found for the member, then `None` is returned.
#[cfg(feature = "cache")]
pub fn roles(&self) -> Option<Vec<Role>> {
- CACHE
- .read()
- .unwrap()
- .guilds
- .values()
- .find(|guild| {
- guild.read().unwrap().members.values().any(|m| {
- m.user.read().unwrap().id == self.user.read().unwrap().id &&
- m.joined_at == self.joined_at
- })
- })
- .map(|guild| {
- guild
- .read()
- .unwrap()
- .roles
- .values()
- .filter(|role| self.roles.contains(&role.id))
- .cloned()
- .collect()
- })
+ self
+ .guild_id
+ .find()
+ .map(|g| g
+ .read()
+ .unwrap()
+ .roles
+ .values()
+ .filter(|role| self.roles.contains(&role.id))
+ .cloned()
+ .collect())
}
/// Unbans the [`User`] from the guild.