diff options
| author | Zeyla Hellyer <[email protected]> | 2017-09-18 10:47:19 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2017-09-18 17:48:37 -0700 |
| commit | 8e3b4d601ffb78909db859640482f7e0bb10131f (patch) | |
| tree | 16500c9274a0517a776ea707bb623d1c9947d8cf /src/model/channel | |
| parent | Apply rustfmt (diff) | |
| download | serenity-8e3b4d601ffb78909db859640482f7e0bb10131f.tar.xz serenity-8e3b4d601ffb78909db859640482f7e0bb10131f.zip | |
Fix compiles of a variety of feature combinations
This fixes compilation errors and warnings when compiling a mixture of
non-default feature targets.
Diffstat (limited to 'src/model/channel')
| -rw-r--r-- | src/model/channel/channel_category.rs | 6 | ||||
| -rw-r--r-- | src/model/channel/channel_id.rs | 28 | ||||
| -rw-r--r-- | src/model/channel/group.rs | 11 | ||||
| -rw-r--r-- | src/model/channel/guild_channel.rs | 4 | ||||
| -rw-r--r-- | src/model/channel/message.rs | 4 | ||||
| -rw-r--r-- | src/model/channel/mod.rs | 20 | ||||
| -rw-r--r-- | src/model/channel/private_channel.rs | 3 | ||||
| -rw-r--r-- | src/model/channel/reaction.rs | 2 |
8 files changed, 50 insertions, 28 deletions
diff --git a/src/model/channel/channel_category.rs b/src/model/channel/channel_category.rs index 554a656..119f1f1 100644 --- a/src/model/channel/channel_category.rs +++ b/src/model/channel/channel_category.rs @@ -1,6 +1,10 @@ use model::*; + +#[cfg(all(feature = "builder", feature = "model"))] use builder::EditChannel; +#[cfg(all(feature = "builder", feature = "model"))] use http; +#[cfg(all(feature = "model", feature = "utils"))] use utils as serenity_utils; /// A category of [`GuildChannel`]s. @@ -77,7 +81,7 @@ impl ChannelCategory { /// ```rust,ignore /// category.edit(|c| c.name("test").bitrate(86400)); /// ``` - #[cfg(feature = "model")] + #[cfg(all(feature = "builder", feature = "model"))] pub fn edit<F>(&mut self, f: F) -> Result<()> where F: FnOnce(EditChannel) -> EditChannel { #[cfg(feature = "cache")] diff --git a/src/model/channel/channel_id.rs b/src/model/channel/channel_id.rs index aec6cf0..a8e16ef 100644 --- a/src/model/channel/channel_id.rs +++ b/src/model/channel/channel_id.rs @@ -8,7 +8,7 @@ use std::borrow::Cow; use std::fmt::Write as FmtWrite; #[cfg(feature = "model")] use builder::{CreateMessage, EditChannel, GetMessages}; -#[cfg(feature = "cache")] +#[cfg(all(feature = "cache", feature = "model"))] use CACHE; #[cfg(feature = "model")] use http::{self, AttachmentType}; @@ -302,17 +302,23 @@ impl ChannelId { pub fn name(&self) -> Option<String> { use self::Channel::*; - // TODO: Replace this second match with `?`. - Some(match match self.find() { - Some(c) => c, - None => return None, - } { + let finding = feature_cache! {{ + Some(self.find()) + } else { + None + }}; + + let channel = if let Some(Some(c)) = finding { + c + } else { + return None; + }; + + Some(match channel { Guild(channel) => channel.read().unwrap().name().to_string(), - Group(channel) => { - match channel.read().unwrap().name() { - Cow::Borrowed(name) => name.to_string(), - Cow::Owned(name) => name, - } + Group(channel) => match channel.read().unwrap().name() { + Cow::Borrowed(name) => name.to_string(), + Cow::Owned(name) => name, }, Category(category) => category.read().unwrap().name().to_string(), Private(channel) => channel.read().unwrap().name(), diff --git a/src/model/channel/group.rs b/src/model/channel/group.rs index ad20fcd..438437c 100644 --- a/src/model/channel/group.rs +++ b/src/model/channel/group.rs @@ -1,15 +1,16 @@ use chrono::{DateTime, FixedOffset}; use model::*; -use internal::RwLockExt; #[cfg(feature = "model")] -use std::borrow::Cow; -#[cfg(feature = "model")] -use std::fmt::Write as FmtWrite; -#[cfg(feature = "model")] use builder::{CreateMessage, GetMessages}; #[cfg(feature = "model")] use http::{self, AttachmentType}; +#[cfg(feature="model")] +use internal::RwLockExt; +#[cfg(feature = "model")] +use std::borrow::Cow; +#[cfg(feature = "model")] +use std::fmt::Write as FmtWrite; /// A group channel - potentially including other [`User`]s - separate from a /// [`Guild`]. diff --git a/src/model/channel/guild_channel.rs b/src/model/channel/guild_channel.rs index 3e33102..e75ba60 100644 --- a/src/model/channel/guild_channel.rs +++ b/src/model/channel/guild_channel.rs @@ -5,13 +5,13 @@ use model::*; use std::fmt::{Display, Formatter, Result as FmtResult}; #[cfg(feature = "model")] use std::mem; -#[cfg(feature = "cache")] +#[cfg(all(feature = "cache", feature = "model"))] use CACHE; #[cfg(feature = "model")] use builder::{CreateInvite, CreateMessage, EditChannel, GetMessages}; #[cfg(feature = "model")] use http::{self, AttachmentType}; -#[cfg(feature = "cache")] +#[cfg(all(feature = "cache", feature = "model"))] use internal::prelude::*; #[cfg(all(feature = "model", feature = "utils"))] use utils as serenity_utils; diff --git a/src/model/channel/message.rs b/src/model/channel/message.rs index 03aea16..1edc9a1 100644 --- a/src/model/channel/message.rs +++ b/src/model/channel/message.rs @@ -2,7 +2,7 @@ use chrono::{DateTime, FixedOffset}; use serde_json::Value; use model::*; -#[cfg(feature = "cache")] +#[cfg(all(feature = "cache", feature = "model"))] use std::fmt::Write; #[cfg(feature = "model")] use std::mem; @@ -10,7 +10,7 @@ use std::mem; use builder::{CreateEmbed, CreateMessage}; #[cfg(feature = "model")] use constants; -#[cfg(feature = "cache")] +#[cfg(all(feature = "cache", feature = "model"))] use CACHE; #[cfg(feature = "model")] use http; diff --git a/src/model/channel/mod.rs b/src/model/channel/mod.rs index c1e22f3..824aea7 100644 --- a/src/model/channel/mod.rs +++ b/src/model/channel/mod.rs @@ -18,11 +18,11 @@ pub use self::private_channel::*; pub use self::reaction::*; pub use self::channel_category::*; +use internal::RwLockExt; use serde::de::Error as DeError; use serde_json; use super::utils::deserialize_u64; use model::*; -use internal::RwLockExt; #[cfg(feature = "model")] use std::fmt::{Display, Formatter, Result as FmtResult}; @@ -53,7 +53,6 @@ pub enum Channel { Category(Arc<RwLock<ChannelCategory>>), } -#[cfg(feature = "model")] impl Channel { /// React to a [`Message`] with a custom [`Emoji`] or unicode character. /// @@ -67,6 +66,7 @@ impl Channel { /// [`Message`]: struct.Message.html /// [`Message::react`]: struct.Message.html#method.react /// [Add Reactions]: permissions/constant.ADD_REACTIONS.html + #[cfg(feature = "model")] #[inline] pub fn create_reaction<M, R>(&self, message_id: M, reaction_type: R) -> Result<()> where M: Into<MessageId>, R: Into<ReactionType> { @@ -79,6 +79,7 @@ impl Channel { /// closest functionality is leaving it. /// /// [`Group`]: struct.Group.html + #[cfg(feature = "model")] pub fn delete(&self) -> Result<()> { match *self { Channel::Group(ref group) => { @@ -108,6 +109,7 @@ impl Channel { /// [`Message`]: struct.Message.html /// [`Message::delete`]: struct.Message.html#method.delete /// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html + #[cfg(feature = "model")] #[inline] pub fn delete_message<M: Into<MessageId>>(&self, message_id: M) -> Result<()> { self.id().delete_message(message_id) @@ -120,6 +122,7 @@ impl Channel { /// /// [`Reaction`]: struct.Reaction.html /// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html + #[cfg(feature = "model")] #[inline] pub fn delete_reaction<M, R>(&self, message_id: M, @@ -153,6 +156,7 @@ impl Channel { /// [`CreateMessage`]: ../builder/struct.CreateMessage.html /// [`Message`]: struct.Message.html /// [`the limit`]: ../builder/struct.CreateMessage.html#method.content + #[cfg(feature = "model")] #[inline] pub fn edit_message<F, M>(&self, message_id: M, f: F) -> Result<Message> where F: FnOnce(CreateMessage) -> CreateMessage, M: Into<MessageId> { @@ -164,14 +168,13 @@ impl Channel { /// Refer to [`utils::is_nsfw`] for more details. /// /// [`utils::is_nsfw`]: ../utils/fn.is_nsfw.html - #[cfg(feature = "utils")] + #[cfg(all(feature = "model", feature = "utils"))] #[inline] pub fn is_nsfw(&self) -> bool { match *self { Channel::Guild(ref channel) => channel.with(|c| c.is_nsfw()), Channel::Category(ref category) => category.with(|c| c.is_nsfw()), - Channel::Group(_) | - Channel::Private(_) => false, + Channel::Group(_) | Channel::Private(_) => false, } } @@ -180,6 +183,7 @@ impl Channel { /// Requires the [Read Message History] permission. /// /// [Read Message History]: permissions/constant.READ_MESSAGE_HISTORY.html + #[cfg(feature = "model")] #[inline] pub fn message<M: Into<MessageId>>(&self, message_id: M) -> Result<Message> { self.id().message(message_id) @@ -201,6 +205,7 @@ impl Channel { /// ``` /// /// [Read Message History]: permissions/constant.READ_MESSAGE_HISTORY.html + #[cfg(feature = "model")] #[inline] pub fn messages<F>(&self, f: F) -> Result<Vec<Message>> where F: FnOnce(GetMessages) -> GetMessages { @@ -223,6 +228,7 @@ impl Channel { /// [`Message`]: struct.Message.html /// [`User`]: struct.User.html /// [Read Message History]: permissions/constant.READ_MESSAGE_HISTORY.html + #[cfg(feature = "model")] #[inline] pub fn reaction_users<M, R, U>(&self, message_id: M, @@ -264,6 +270,7 @@ impl Channel { /// /// [`ChannelId`]: struct.ChannelId.html /// [`ModelError::MessageTooLong`]: enum.ModelError.html#variant.MessageTooLong + #[cfg(feature = "model")] #[inline] pub fn say(&self, content: &str) -> Result<Message> { self.id().say(content) } @@ -285,6 +292,7 @@ impl Channel { /// [`ClientError::MessageTooLong`]: ../client/enum.ClientError.html#variant.MessageTooLong /// [Attach Files]: permissions/constant.ATTACH_FILES.html /// [Send Messages]: permissions/constant.SEND_MESSAGES.html + #[cfg(feature = "model")] #[inline] pub fn send_files<'a, F, T>(&self, files: Vec<T>, f: F) -> Result<Message> where F: FnOnce(CreateMessage) -> CreateMessage, T: Into<AttachmentType<'a>> { @@ -310,6 +318,7 @@ impl Channel { /// [`ModelError::MessageTooLong`]: enum.ModelError.html#variant.MessageTooLong /// [`CreateMessage`]: ../builder/struct.CreateMessage.html /// [Send Messages]: permissions/constant.SEND_MESSAGES.html + #[cfg(feature = "model")] #[inline] pub fn send_message<F>(&self, f: F) -> Result<Message> where F: FnOnce(CreateMessage) -> CreateMessage { @@ -322,6 +331,7 @@ impl Channel { /// /// [`Message`]: struct.Message.html /// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html + #[cfg(feature = "model")] #[inline] pub fn unpin<M: Into<MessageId>>(&self, message_id: M) -> Result<()> { self.id().unpin(message_id) diff --git a/src/model/channel/private_channel.rs b/src/model/channel/private_channel.rs index d9abbb2..a51ba09 100644 --- a/src/model/channel/private_channel.rs +++ b/src/model/channel/private_channel.rs @@ -2,12 +2,13 @@ use chrono::{DateTime, FixedOffset}; use std::fmt::{Display, Formatter, Result as FmtResult}; use super::deserialize_single_recipient; use model::*; -use internal::RwLockExt; #[cfg(feature = "model")] use builder::{CreateMessage, GetMessages}; #[cfg(feature = "model")] use http::AttachmentType; +#[cfg(feature="model")] +use internal::RwLockExt; /// A Direct Message text channel with another user. #[derive(Clone, Debug, Deserialize)] diff --git a/src/model/channel/reaction.rs b/src/model/channel/reaction.rs index 121bf43..44e1db6 100644 --- a/src/model/channel/reaction.rs +++ b/src/model/channel/reaction.rs @@ -3,7 +3,7 @@ use std::fmt::{Display, Formatter, Result as FmtResult, Write as FmtWrite}; use internal::prelude::*; use model::*; -#[cfg(feature = "cache")] +#[cfg(all(feature = "cache", feature = "model"))] use CACHE; #[cfg(feature = "model")] use http; |