diff options
| author | acdenisSK <[email protected]> | 2017-10-02 22:29:10 +0200 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-10-09 15:47:05 -0700 |
| commit | 2911f677431820ac858bae39ce53a3d6e202da1b (patch) | |
| tree | 1a65a208341e2a8006807f96074ca17cd0aaaed8 /src/model/guild/member.rs | |
| parent | `to_owned` -> `to_string` (diff) | |
| download | serenity-2911f677431820ac858bae39ce53a3d6e202da1b.tar.xz serenity-2911f677431820ac858bae39ce53a3d6e202da1b.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 364b9f4..1b846ff 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(()) }, @@ -334,15 +337,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(()) }, |