aboutsummaryrefslogtreecommitdiff
path: root/src/model/channel
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2017-09-18 10:47:19 -0700
committerZeyla Hellyer <[email protected]>2017-09-18 17:48:37 -0700
commit8e3b4d601ffb78909db859640482f7e0bb10131f (patch)
tree16500c9274a0517a776ea707bb623d1c9947d8cf /src/model/channel
parentApply rustfmt (diff)
downloadserenity-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.rs6
-rw-r--r--src/model/channel/channel_id.rs28
-rw-r--r--src/model/channel/group.rs11
-rw-r--r--src/model/channel/guild_channel.rs4
-rw-r--r--src/model/channel/message.rs4
-rw-r--r--src/model/channel/mod.rs20
-rw-r--r--src/model/channel/private_channel.rs3
-rw-r--r--src/model/channel/reaction.rs2
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;