From e0e76173f63b6071b9df3ff8f53371b4b6c4ee1e Mon Sep 17 00:00:00 2001 From: acdenisSK Date: Thu, 5 Oct 2017 14:12:53 +0200 Subject: Use an as_ref hack --- src/builder/edit_member.rs | 4 ++-- src/gateway/shard.rs | 6 +++--- src/model/channel/channel_id.rs | 4 ++-- src/model/channel/group.rs | 2 +- src/model/mod.rs | 7 +++++++ src/voice/connection.rs | 4 ++-- 6 files changed, 17 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/builder/edit_member.rs b/src/builder/edit_member.rs index 2a34632..560d241 100644 --- a/src/builder/edit_member.rs +++ b/src/builder/edit_member.rs @@ -50,10 +50,10 @@ impl EditMember { /// Requires the [Manage Roles] permission to modify. /// /// [Manage Roles]: ../model/permissions/constant.MANAGE_ROLES.html - pub fn roles<'a, It: IntoIterator>(mut self, roles: It) -> Self { + pub fn roles, It: IntoIterator>(mut self, roles: It) -> Self { let role_ids = roles .into_iter() - .map(|x| Value::Number(Number::from(x.0))) + .map(|x| Value::Number(Number::from(x.as_ref().0))) .collect(); self.0.insert("roles".to_string(), Value::Array(role_ids)); diff --git a/src/gateway/shard.rs b/src/gateway/shard.rs index 2c621b1..9304e2f 100644 --- a/src/gateway/shard.rs +++ b/src/gateway/shard.rs @@ -671,14 +671,14 @@ impl Shard { /// ../../model/event/enum.Event.html#variant.GuildMembersChunk /// [`Guild`]: ../../model/struct.Guild.html /// [`Member`]: ../../model/struct.Member.html - pub fn chunk_guilds<'a, It>(&mut self, guild_ids: It, limit: Option, query: Option<&str>) - where It: IntoIterator{ + pub fn chunk_guilds, It>(&mut self, guild_ids: It, limit: Option, query: Option<&str>) + where It: IntoIterator { debug!("[Shard {:?}] Requesting member chunks", self.shard_info); let msg = json!({ "op": OpCode::GetGuildMembers.num(), "d": { - "guild_id": guild_ids.into_iter().map(|x| x.0).collect::>(), + "guild_id": guild_ids.into_iter().map(|x| x.as_ref().0).collect::>(), "limit": limit.unwrap_or(0), "query": query.unwrap_or(""), }, 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>(&self, message_ids: It) -> Result<()> { + pub fn delete_messages, It: IntoIterator>(&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::>(); 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>(&self, message_ids: It) -> Result<()> { + pub fn delete_messages, It: IntoIterator>(&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`, or `IntoIterator` + impl AsRef<$name> for $name { + fn as_ref(&self) -> &Self { + self + } + } + impl From for $name { fn from(id_as_u64: u64) -> $name { $name(id_as_u64) diff --git a/src/voice/connection.rs b/src/voice/connection.rs index 09393f6..2a358a5 100644 --- a/src/voice/connection.rs +++ b/src/voice/connection.rs @@ -409,8 +409,8 @@ fn encryption_key(client: &mut Client) -> Result { } #[inline] -fn has_valid_mode<'a, T, It> (modes: It) -> bool -where T: PartialEq<&'a str>, +fn has_valid_mode (modes: It) -> bool +where T: PartialEq, It : IntoIterator { modes.into_iter().any(|s| s == CRYPTO_MODE) -- cgit v1.2.3