diff options
| author | Austin Hellyer <[email protected]> | 2016-12-03 13:21:27 -0800 |
|---|---|---|
| committer | Austin Hellyer <[email protected]> | 2016-12-03 13:21:27 -0800 |
| commit | 61ca1ca1f2990131870b643edf77cc06bec9d7ff (patch) | |
| tree | 9738b4015af9625c9e15ae16f46d9f20f87c5d10 /src | |
| parent | Derive Eq/Ord on Colour (diff) | |
| download | serenity-61ca1ca1f2990131870b643edf77cc06bec9d7ff.tar.xz serenity-61ca1ca1f2990131870b643edf77cc06bec9d7ff.zip | |
Make Member::colour() return an optional colour
Diffstat (limited to 'src')
| -rw-r--r-- | src/model/guild.rs | 25 | ||||
| -rw-r--r-- | src/utils/colour.rs | 3 |
2 files changed, 8 insertions, 20 deletions
diff --git a/src/model/guild.rs b/src/model/guild.rs index f9b56dd..aa7daef 100644 --- a/src/model/guild.rs +++ b/src/model/guild.rs @@ -14,7 +14,7 @@ use super::utils::{ }; use super::*; use ::internal::prelude::*; -use ::utils::{Colour, decode_array}; +use ::utils::decode_array; #[cfg(feature = "methods")] use serde_json::builder::ObjectBuilder; @@ -847,7 +847,7 @@ impl Member { delete_message_days) } - /// Determines the member's display name. + /// Calculates the member's display name. /// /// The nickname takes priority over the member's username if it exists. pub fn display_name(&self) -> &str { @@ -855,24 +855,18 @@ impl Member { } /// Determines the member's colour. - /// - /// If the member has no role with a colour override - or the member's guild - /// data does not exist in the cache - then the value of [`Colour::default`] - /// is returned. - /// - /// [`Colour::default`]: ../utils/struct.Colour.html#method.default #[cfg(all(feature = "cache", feature = "methods"))] - pub fn colour(&self) -> Colour { + pub fn colour(&self) -> Option<Colour> { let default = Colour::default(); let guild_id = match self.find_guild() { Ok(guild_id) => guild_id, - Err(_why) => return default, + Err(_why) => return None, }; let cache = CACHE.read().unwrap(); let guild = match cache.guilds.get(&guild_id) { Some(guild) => guild, - None => return default, + None => return None, }; let mut roles = self.roles @@ -881,15 +875,10 @@ impl Member { .collect::<Vec<&Role>>(); roles.sort_by(|a, b| b.cmp(a)); - for role in roles { - if role.colour.value != default.value { - return role.colour; - } - } - - default + roles.iter().find(|r| r.colour.value != default.value).map(|r| r.colour) } + /// Edits the member with the given data. See [`Context::edit_member`] for /// more information. /// diff --git a/src/utils/colour.rs b/src/utils/colour.rs index c62630a..47ed7e8 100644 --- a/src/utils/colour.rs +++ b/src/utils/colour.rs @@ -304,10 +304,9 @@ colour! { impl Default for Colour { /// Creates a default value for a `Colour`, setting the inner value to `0`. - /// This is equivilant to setting the RGB value to `(153, 170, 181)`. fn default() -> Colour { Colour { - value: 0x99AAB5, + value: 0, } } } |