aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2018-04-26 21:02:02 -0700
committerZeyla Hellyer <[email protected]>2018-05-27 19:21:18 -0700
commit309eee7ba66de7870011825a9130828e9b49e83c (patch)
tree202559d698f927b0f8840804b7b5ccc83cb325f0 /src/model
parentRemove user account relation docs/functions (diff)
downloadserenity-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.rs18
-rw-r--r--src/model/channel/embed.rs11
-rw-r--r--src/model/channel/guild_channel.rs7
-rw-r--r--src/model/channel/message.rs4
-rw-r--r--src/model/guild/member.rs6
-rw-r--r--src/model/guild/role.rs6
-rw-r--r--src/model/user.rs8
-rw-r--r--src/model/webhook.rs35
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,