diff options
| author | acdenisSK <[email protected]> | 2017-10-02 22:29:10 +0200 |
|---|---|---|
| committer | acdenisSK <[email protected]> | 2017-10-02 22:29:10 +0200 |
| commit | 6a4e52b3fac7d2e96e3a1a67901fbdd4721fb249 (patch) | |
| tree | ae9ad7d7cb73d4ece6a199796af5975545071493 /src/model/guild/member.rs | |
| parent | `to_owned` -> `to_string` (diff) | |
| download | serenity-6a4e52b3fac7d2e96e3a1a67901fbdd4721fb249.tar.xz serenity-6a4e52b3fac7d2e96e3a1a67901fbdd4721fb249.zip | |
Use the de-generification trick.
Fixes #168
Diffstat (limited to 'src/model/guild/member.rs')
| -rw-r--r-- | src/model/guild/member.rs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs index 09474f9..7c0c784 100644 --- a/src/model/guild/member.rs +++ b/src/model/guild/member.rs @@ -78,15 +78,18 @@ impl Member { /// [Manage Roles]: permissions/constant.MANAGE_ROLES.html #[cfg(feature = "cache")] pub fn add_role<R: Into<RoleId>>(&mut self, role_id: R) -> Result<()> { - let role_id = role_id.into(); + self._add_role(role_id.into()) + } - if self.roles.contains(&role_id) { + #[cfg(feature = "cache")] + fn _add_role(&mut self, id: RoleId) -> Result<()> { + if self.roles.contains(&id) { return Ok(()); } - match http::add_member_role(self.guild_id.0, self.user.read().unwrap().id.0, role_id.0) { + match http::add_member_role(self.guild_id.0, self.user.read().unwrap().id.0, id.0) { Ok(()) => { - self.roles.push(role_id); + self.roles.push(id); Ok(()) }, @@ -312,15 +315,18 @@ impl Member { /// [Manage Roles]: permissions/constant.MANAGE_ROLES.html #[cfg(feature = "cache")] pub fn remove_role<R: Into<RoleId>>(&mut self, role_id: R) -> Result<()> { - let role_id = role_id.into(); + self._remove_role(role_id.into()) + } - if !self.roles.contains(&role_id) { + #[cfg(feature = "cache")] + fn _remove_role(&mut self, id: RoleId) -> Result<()> { + if !self.roles.contains(&id) { return Ok(()); } - match http::remove_member_role(self.guild_id.0, self.user.read().unwrap().id.0, role_id.0) { + match http::remove_member_role(self.guild_id.0, self.user.read().unwrap().id.0, id.0) { Ok(()) => { - self.roles.retain(|r| r.0 != role_id.0); + self.roles.retain(|r| r.0 != id.0); Ok(()) }, |