diff options
| author | acdenisSK <[email protected]> | 2017-10-02 22:29:10 +0200 |
|---|---|---|
| committer | acdenisSK <[email protected]> | 2017-10-02 22:29:10 +0200 |
| commit | 6a4e52b3fac7d2e96e3a1a67901fbdd4721fb249 (patch) | |
| tree | ae9ad7d7cb73d4ece6a199796af5975545071493 /src/builder | |
| parent | `to_owned` -> `to_string` (diff) | |
| download | serenity-6a4e52b3fac7d2e96e3a1a67901fbdd4721fb249.tar.xz serenity-6a4e52b3fac7d2e96e3a1a67901fbdd4721fb249.zip | |
Use the de-generification trick.
Fixes #168
Diffstat (limited to 'src/builder')
| -rw-r--r-- | src/builder/create_embed.rs | 16 | ||||
| -rw-r--r-- | src/builder/create_message.rs | 6 | ||||
| -rw-r--r-- | src/builder/edit_guild.rs | 27 | ||||
| -rw-r--r-- | src/builder/edit_member.rs | 8 | ||||
| -rw-r--r-- | src/builder/get_messages.rs | 24 |
5 files changed, 60 insertions, 21 deletions
diff --git a/src/builder/create_embed.rs b/src/builder/create_embed.rs index a128c91..7303693 100644 --- a/src/builder/create_embed.rs +++ b/src/builder/create_embed.rs @@ -62,14 +62,20 @@ impl CreateEmbed { /// [`colour`]: #method.colour #[cfg(feature = "utils")] #[inline] - pub fn color<C: Into<Colour>>(self, colour: C) -> Self { self.colour(colour.into()) } + pub fn color<C: Into<Colour>>(self, colour: C) -> Self { self.colour(colour) } + /// Set the colour of the left-hand side of the embed. #[cfg(feature = "utils")] pub fn colour<C: Into<Colour>>(mut self, colour: C) -> Self { + self._colour(colour.into()) + } + + #[cfg(feature = "utils")] + fn _colour(mut self, colour: Colour) -> Self { self.0.insert( "color".to_string(), - Value::Number(Number::from(colour.into().0 as u64)), + Value::Number(Number::from(colour.0 as u64)), ); CreateEmbed(self.0) @@ -282,8 +288,12 @@ impl CreateEmbed { /// let mut client = Client::new("token", Handler); client.start().unwrap(); /// ``` pub fn timestamp<T: Into<Timestamp>>(mut self, timestamp: T) -> Self { + self._timestamp(timestamp.into()) + } + + fn _timestamp(mut self, timestamp: Timestamp) -> Self { self.0 - .insert("timestamp".to_string(), Value::String(timestamp.into().ts)); + .insert("timestamp".to_string(), Value::String(timestamp.ts)); CreateEmbed(self.0) } diff --git a/src/builder/create_message.rs b/src/builder/create_message.rs index 96bad82..123c0b5 100644 --- a/src/builder/create_message.rs +++ b/src/builder/create_message.rs @@ -75,7 +75,11 @@ impl CreateMessage { /// Adds a list of reactions to create after the message's sent. pub fn reactions<R: Into<ReactionType>>(mut self, reactions: Vec<R>) -> Self { - self.1 = Some(reactions.into_iter().map(|r| r.into()).collect()); + self._reactions(reactions.into_iter().map(|r| r.into()).collect()) + } + + fn _reactions(mut self, reactions: Vec<ReactionType>) -> Self { + self.1 = Some(reactions); CreateMessage(self.0, self.1) } diff --git a/src/builder/edit_guild.rs b/src/builder/edit_guild.rs index 0719305..a4f2c54 100644 --- a/src/builder/edit_guild.rs +++ b/src/builder/edit_guild.rs @@ -22,13 +22,14 @@ impl EditGuild { /// valid. /// /// [`afk_timeout`]: #method.afk_timeout - pub fn afk_channel<C: Into<ChannelId>>(mut self, channel: Option<C>) -> Self { + pub fn afk_channel<C: Into<ChannelId>>(self, channel: Option<C>) -> Self { + self._afk_channel(channel.map(|c| c.into())) + } + + fn _afk_channel(mut self, channel: Option<ChannelId>) -> Self { self.0.insert( "afk_channel_id".to_string(), - match channel { - Some(channel) => Value::Number(Number::from(channel.into().0)), - None => Value::Null, - }, + channel.map_or(Value::Null, |ChannelId(id)| Value::Number(Number::from(id))) ); self @@ -98,10 +99,14 @@ impl EditGuild { /// Transfers the ownership of the guild to another user by Id. /// /// **Note**: The current user must be the owner of the guild. - pub fn owner<U: Into<UserId>>(mut self, user_id: U) -> Self { + pub fn owner<U: Into<UserId>>(self, user_id: U) -> Self { + self._owner(user_id.into()) + } + + fn _owner(mut self, user_id: UserId) -> Self { self.0.insert( "owner_id".to_string(), - Value::Number(Number::from(user_id.into().0)), + Value::Number(Number::from(user_id.0)), ); self @@ -185,9 +190,13 @@ impl EditGuild { /// /// [`VerificationLevel`]: ../model/enum.VerificationLevel.html /// [`VerificationLevel::High`]: ../model/enum.VerificationLevel.html#variant.High - pub fn verification_level<V>(mut self, verification_level: V) -> Self + pub fn verification_level<V>(self, verification_level: V) -> Self where V: Into<VerificationLevel> { - let num = Value::Number(Number::from(verification_level.into().num())); + self._verification_level(verification_level.into()) + } + + fn _verification_level(mut self, verification_level: VerificationLevel) -> Self { + let num = Value::Number(Number::from(verification_level.num())); self.0.insert("verification_level".to_string(), num); diff --git a/src/builder/edit_member.rs b/src/builder/edit_member.rs index e450669..53cf0d0 100644 --- a/src/builder/edit_member.rs +++ b/src/builder/edit_member.rs @@ -66,10 +66,14 @@ impl EditMember { /// Requires the [Move Members] permission. /// /// [Move Members]: ../model/permissions/constant.MOVE_MEMBERS.html - pub fn voice_channel<C: Into<ChannelId>>(mut self, channel_id: C) -> Self { + pub fn voice_channel<C: Into<ChannelId>>(self, channel_id: C) -> Self { + self._voice_channel(channel_id.into()) + } + + fn _voice_channel(mut self, channel_id: ChannelId) -> Self { self.0.insert( "channel_id".to_string(), - Value::Number(Number::from(channel_id.into().0)), + Value::Number(Number::from(channel_id.0)), ); self diff --git a/src/builder/get_messages.rs b/src/builder/get_messages.rs index 71af9e5..eff90f4 100644 --- a/src/builder/get_messages.rs +++ b/src/builder/get_messages.rs @@ -55,24 +55,36 @@ pub struct GetMessages(pub BTreeMap<String, u64>); impl GetMessages { /// Indicates to retrieve the messages after a specific message, given by /// its Id. - pub fn after<M: Into<MessageId>>(mut self, message_id: M) -> Self { - self.0.insert("after".to_string(), message_id.into().0); + pub fn after<M: Into<MessageId>>(self, message_id: M) -> Self { + self._after(message_id.into()) + } + + fn _after(mut self, MessageId(id): MessageId) -> Self { + self.0.insert("after".to_string(), id); self } /// Indicates to retrieve the messages _around_ a specific message in either /// direction (before+after) the given message. - pub fn around<M: Into<MessageId>>(mut self, message_id: M) -> Self { - self.0.insert("around".to_string(), message_id.into().0); + pub fn around<M: Into<MessageId>>(self, message_id: M) -> Self { + self._around(message_id.into()) + } + + fn _around(mut self, MessageId(id): MessageId) -> Self { + self.0.insert("around".to_string(), id); self } /// Indicates to retrieve the messages before a specific message, given by /// its Id. - pub fn before<M: Into<MessageId>>(mut self, message_id: M) -> Self { - self.0.insert("before".to_string(), message_id.into().0); + pub fn before<M: Into<MessageId>>(self, message_id: M) -> Self { + self._before(message_id.into()) + } + + fn _before(mut self, MessageId(id): MessageId) -> Self { + self.0.insert("before".to_string(), id); self } |