aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authoracdenisSK <[email protected]>2017-10-05 14:12:53 +0200
committerZeyla Hellyer <[email protected]>2017-10-09 15:48:18 -0700
commite0e76173f63b6071b9df3ff8f53371b4b6c4ee1e (patch)
tree26e8e3518471a96e6b8f82cf167ffe758b07300a /src/model
parentReplace slice parametres by IntoIterator (#177) (diff)
downloadserenity-e0e76173f63b6071b9df3ff8f53371b4b6c4ee1e.tar.xz
serenity-e0e76173f63b6071b9df3ff8f53371b4b6c4ee1e.zip
Use an as_ref hack
Diffstat (limited to 'src/model')
-rw-r--r--src/model/channel/channel_id.rs4
-rw-r--r--src/model/channel/group.rs2
-rw-r--r--src/model/mod.rs7
3 files changed, 10 insertions, 3 deletions
diff --git a/src/model/channel/channel_id.rs b/src/model/channel/channel_id.rs
index de96e3a..f728191 100644
--- a/src/model/channel/channel_id.rs
+++ b/src/model/channel/channel_id.rs
@@ -117,10 +117,10 @@ impl ChannelId {
///
/// [`Channel::delete_messages`]: enum.Channel.html#method.delete_messages
/// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html
- pub fn delete_messages<'a, It: IntoIterator<Item=&'a MessageId>>(&self, message_ids: It) -> Result<()> {
+ pub fn delete_messages<T: AsRef<MessageId>, It: IntoIterator<Item=T>>(&self, message_ids: It) -> Result<()> {
let ids = message_ids
.into_iter()
- .map(|message_id| message_id.0)
+ .map(|message_id| message_id.as_ref().0)
.collect::<Vec<u64>>();
let map = json!({ "messages": ids });
diff --git a/src/model/channel/group.rs b/src/model/channel/group.rs
index 83c1222..dfdfd0f 100644
--- a/src/model/channel/group.rs
+++ b/src/model/channel/group.rs
@@ -96,7 +96,7 @@ impl Group {
/// [`Channel::delete_messages`]: enum.Channel.html#method.delete_messages
/// [Manage Messages]: permissions/constant.MANAGE_MESSAGES.html
#[inline]
- pub fn delete_messages<'a, It: IntoIterator<Item=&'a MessageId>>(&self, message_ids: It) -> Result<()> {
+ pub fn delete_messages<T: AsRef<MessageId>, It: IntoIterator<Item=T>>(&self, message_ids: It) -> Result<()> {
self.channel_id.delete_messages(message_ids)
}
diff --git a/src/model/mod.rs b/src/model/mod.rs
index 6b6d9bf..5eae177 100644
--- a/src/model/mod.rs
+++ b/src/model/mod.rs
@@ -61,6 +61,13 @@ macro_rules! id_u64 {
}
}
+ // This is a hack so that functions can accept `IntoIterator<Item=IdType>`, or `IntoIterator<Item=&IdType>`
+ impl AsRef<$name> for $name {
+ fn as_ref(&self) -> &Self {
+ self
+ }
+ }
+
impl From<u64> for $name {
fn from(id_as_u64: u64) -> $name {
$name(id_as_u64)