diff options
| author | Zeyla Hellyer <[email protected]> | 2018-04-26 21:02:02 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2018-05-27 19:21:18 -0700 |
| commit | 309eee7ba66de7870011825a9130828e9b49e83c (patch) | |
| tree | 202559d698f927b0f8840804b7b5ccc83cb325f0 /src/model | |
| parent | Remove user account relation docs/functions (diff) | |
| download | serenity-309eee7ba66de7870011825a9130828e9b49e83c.tar.xz serenity-309eee7ba66de7870011825a9130828e9b49e83c.zip | |
Make builders mutably borrowed
Change the builders so that they are now mutably borrowed, accepting
`&mut self` instead of `self`. Their methods now return `()` instead of
`Self`.
Upgrade path:
Change code such as the following:
```rust
channel.send_message(|m| m
.embed(|e| e
.description("test")
.title("title")));
```
to the following style:
```rust
channel.send_message(|mut m| {
m.embed(|mut e| {
e.description("test");
e.title("title");
e
});
m
});
```
Closes #159.
Diffstat (limited to 'src/model')
| -rw-r--r-- | src/model/channel/channel_id.rs | 18 | ||||
| -rw-r--r-- | src/model/channel/embed.rs | 11 | ||||
| -rw-r--r-- | src/model/channel/guild_channel.rs | 7 | ||||
| -rw-r--r-- | src/model/channel/message.rs | 4 | ||||
| -rw-r--r-- | src/model/guild/member.rs | 6 | ||||
| -rw-r--r-- | src/model/guild/role.rs | 6 | ||||
| -rw-r--r-- | src/model/user.rs | 8 | ||||
| -rw-r--r-- | src/model/webhook.rs | 35 |
8 files changed, 67 insertions, 28 deletions
diff --git a/src/model/channel/channel_id.rs b/src/model/channel/channel_id.rs index f6d9963..f4336fc 100644 --- a/src/model/channel/channel_id.rs +++ b/src/model/channel/channel_id.rs @@ -402,7 +402,11 @@ impl ChannelId { /// [`ModelError::MessageTooLong`]: enum.ModelError.html#variant.MessageTooLong #[inline] pub fn say<D: ::std::fmt::Display>(&self, content: D) -> Result<Message> { - self.send_message(|m| m.content(content)) + self.send_message(|mut m| { + m.content(content); + + m + }) } /// Sends a file along with optional message contents. The filename _must_ @@ -426,7 +430,11 @@ impl ChannelId { /// /// let paths = vec!["/path/to/file.jpg", "path/to/file2.jpg"]; /// - /// let _ = channel_id.send_files(paths, |m| m.content("a file")); + /// let _ = channel_id.send_files(paths, |mut m| { + /// m.content("a file"); + /// + /// m + /// }); /// ``` /// /// Send files using `File`: @@ -442,7 +450,11 @@ impl ChannelId { /// /// let files = vec![(&f1, "my_file.jpg"), (&f2, "my_file2.jpg")]; /// - /// let _ = channel_id.send_files(files, |m| m.content("a file")); + /// let _ = channel_id.send_files(files, |mut m| { + /// m.content("a file"); + /// + /// m + /// }); /// ``` /// /// # Errors diff --git a/src/model/channel/embed.rs b/src/model/channel/embed.rs index 8837a8d..8792d18 100644 --- a/src/model/channel/embed.rs +++ b/src/model/channel/embed.rs @@ -80,10 +80,13 @@ impl Embed { /// ```rust,no_run /// use serenity::model::channel::Embed; /// - /// let embed = Embed::fake(|e| e - /// .title("Embed title") - /// .description("Making a basic embed") - /// .field("A field", "Has some content.", false)); + /// let embed = Embed::fake(|mut e| { + /// e.title("Embed title"); + /// e.description("Making a basic embed"); + /// e.field("A field", "Has some content.", false); + /// + /// e + /// }); /// ``` #[inline] pub fn fake<F>(f: F) -> Value diff --git a/src/model/channel/guild_channel.rs b/src/model/channel/guild_channel.rs index 533aaf2..c6d9031 100644 --- a/src/model/channel/guild_channel.rs +++ b/src/model/channel/guild_channel.rs @@ -496,8 +496,11 @@ impl GuildChannel { /// }, /// }; /// - /// let _ = msg.channel_id.send_files(vec![(&file, "cat.png")], |m| - /// m.content("here's a cat")); + /// let _ = msg.channel_id.send_files(vec![(&file, "cat.png")], |mut m| { + /// m.content("here's a cat"); + /// + /// m + /// }); /// } /// } /// diff --git a/src/model/channel/message.rs b/src/model/channel/message.rs index 978e181..fdc7787 100644 --- a/src/model/channel/message.rs +++ b/src/model/channel/message.rs @@ -221,11 +221,11 @@ impl Message { let mut builder = EditMessage::default(); if !self.content.is_empty() { - builder = builder.content(&self.content); + builder.content(&self.content); } if let Some(embed) = self.embeds.get(0) { - builder = builder.embed(|_| CreateEmbed::from(embed.clone())); + builder.embed(|_| CreateEmbed::from(embed.clone())); } let map = serenity_utils::vecmap_to_json_map(f(builder).0); diff --git a/src/model/guild/member.rs b/src/model/guild/member.rs index c95c07f..ce3dd01 100644 --- a/src/model/guild/member.rs +++ b/src/model/guild/member.rs @@ -113,7 +113,8 @@ impl Member { pub fn add_roles(&mut self, role_ids: &[RoleId]) -> Result<()> { self.roles.extend_from_slice(role_ids); - let builder = EditMember::default().roles(&self.roles); + let mut builder = EditMember::default(); + builder.roles(&self.roles); let map = utils::vecmap_to_json_map(builder.0); match http::edit_member(self.guild_id.0, self.user.read().id.0, &map) { @@ -395,7 +396,8 @@ impl Member { pub fn remove_roles(&mut self, role_ids: &[RoleId]) -> Result<()> { self.roles.retain(|r| !role_ids.contains(r)); - let builder = EditMember::default().roles(&self.roles); + let mut builder = EditMember::default(); + builder.roles(&self.roles); let map = utils::vecmap_to_json_map(builder.0); match http::edit_member(self.guild_id.0, self.user.read().id.0, &map) { diff --git a/src/model/guild/role.rs b/src/model/guild/role.rs index 53ec478..800d178 100644 --- a/src/model/guild/role.rs +++ b/src/model/guild/role.rs @@ -83,7 +83,11 @@ impl Role { /// # let role = RoleId(7).find().unwrap(); /// // assuming a `role` has already been bound // - /// role.edit(|r| r.hoist(true)); + /// role.edit(|mut r| { + /// r.hoist(true); + /// + /// r + /// }); /// ``` /// /// [`Role`]: struct.Role.html diff --git a/src/model/user.rs b/src/model/user.rs index 330f319..131e891 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -436,7 +436,13 @@ impl User { /// url, /// ); /// - /// match msg.author.direct_message(|m| m.content(&help)) { + /// let dm = msg.author.direct_message(|mut m| { + /// m.content(&help); + /// + /// m + /// }); + /// + /// match dm { /// Ok(_) => { /// let _ = msg.react('👌'); /// }, diff --git a/src/model/webhook.rs b/src/model/webhook.rs index ab07b43..8f2c6b2 100644 --- a/src/model/webhook.rs +++ b/src/model/webhook.rs @@ -160,7 +160,11 @@ impl Webhook { /// let mut webhook = http::get_webhook_with_token(id, token) /// .expect("valid webhook"); /// - /// let _ = webhook.execute(false, |w| w.content("test")).expect("Error executing"); + /// let _ = webhook.execute(false, |mut w| { + /// w.content("test"); + /// + /// w + /// }); /// ``` /// /// Execute a webhook with message content of `test`, overriding the @@ -176,18 +180,23 @@ impl Webhook { /// let mut webhook = http::get_webhook_with_token(id, token) /// .expect("valid webhook"); /// - /// let embed = Embed::fake(|e| e - /// .title("Rust's website") - /// .description("Rust is a systems programming language that runs - /// blazingly fast, prevents segfaults, and guarantees - /// thread safety.") - /// .url("https://rust-lang.org")); - /// - /// let _ = webhook.execute(false, |w| w - /// .content("test") - /// .username("serenity") - /// .embeds(vec![embed])) - /// .expect("Error executing"); + /// let embed = Embed::fake(|mut e| { + /// e.title("Rust's website"); + /// e.description("Rust is a systems programming language that runs + /// blazingly fast, prevents segfaults, and guarantees + /// thread safety."); + /// e.url("https://rust-lang.org"); + /// + /// e + /// }); + /// + /// let _ = webhook.execute(false, |mut w| { + /// w.content("test"); + /// w.username("serenity"); + /// w.embeds(vec![embed]); + /// + /// w + /// }); /// ``` #[inline] pub fn execute<F: FnOnce(ExecuteWebhook) -> ExecuteWebhook>(&self, |