aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authoracdenisSK <[email protected]>2017-08-04 05:50:22 +0200
committeracdenisSK <[email protected]>2017-08-04 05:50:43 +0200
commit7e913b6185468d2dd3740c711d418a300584b5bb (patch)
tree1e48f9e3b66a3029921eafceffb2c219837d9d48 /src
parentChange to c-like enums and transmute (diff)
downloadserenity-7e913b6185468d2dd3740c711d418a300584b5bb.tar.xz
serenity-7e913b6185468d2dd3740c711d418a300584b5bb.zip
Make some functions accept anything that's implemented Display
Diffstat (limited to 'src')
-rw-r--r--src/builder/create_embed.rs35
-rw-r--r--src/builder/create_message.rs8
-rw-r--r--src/model/channel/channel_id.rs2
3 files changed, 31 insertions, 14 deletions
diff --git a/src/builder/create_embed.rs b/src/builder/create_embed.rs
index 0d848ee..01c3323 100644
--- a/src/builder/create_embed.rs
+++ b/src/builder/create_embed.rs
@@ -18,7 +18,7 @@
use chrono::{DateTime, TimeZone};
use serde_json::Value;
use std::default::Default;
-use std::fmt::Display;
+use std::fmt::{Write, Display};
use internal::prelude::*;
use model::Embed;
@@ -96,10 +96,12 @@ impl CreateEmbed {
/// Set the description of the embed.
///
/// **Note**: This can't be longer than 2048 characters.
- pub fn description(mut self, description: &str) -> Self {
+ pub fn description<D: Display>(mut self, description: D) -> Self {
+ let mut s = "".to_owned();
+ let _ = writeln!(&mut s, "{}", description);
self.0.insert(
"description".to_owned(),
- Value::String(description.to_owned()),
+ Value::String(s),
);
CreateEmbed(self.0)
@@ -289,9 +291,11 @@ impl CreateEmbed {
}
/// Set the title of the embed.
- pub fn title(mut self, title: &str) -> Self {
+ pub fn title<D: Display>(mut self, title: D) -> Self {
+ let mut s = "".to_owned();
+ let _ = writeln!(&mut s, "{}", title);
self.0
- .insert("title".to_owned(), Value::String(title.to_owned()));
+ .insert("title".to_owned(), Value::String(s));
CreateEmbed(self.0)
}
@@ -439,17 +443,23 @@ impl CreateEmbedField {
}
/// Set the field's name. It can't be longer than 256 characters.
- pub fn name(mut self, name: &str) -> Self {
+ pub fn name<D: Display>(mut self, name: D) -> Self {
+ let mut s = "".to_owned();
+ let _ = writeln!(&mut s, "{}", name);
+
self.0
- .insert("name".to_owned(), Value::String(name.to_owned()));
+ .insert("name".to_owned(), Value::String(s));
self
}
/// Set the field's value. It can't be longer than 1024 characters.
- pub fn value(mut self, value: &str) -> Self {
+ pub fn value<D: Display>(mut self, value: D) -> Self {
+ let mut s = "".to_owned();
+ let _ = writeln!(&mut s, "{}", value);
+
self.0
- .insert("value".to_owned(), Value::String(value.to_owned()));
+ .insert("value".to_owned(), Value::String(s));
self
}
@@ -486,9 +496,12 @@ impl CreateEmbedFooter {
}
/// Set the footer's text.
- pub fn text(mut self, text: &str) -> Self {
+ pub fn text<D: Display>(mut self, text: D) -> Self {
+ let mut s = "".to_owned();
+ let _ = writeln!(&mut s, "{}", text);
+
self.0
- .insert("text".to_owned(), Value::String(text.to_owned()));
+ .insert("text".to_owned(), Value::String(s));
self
}
diff --git a/src/builder/create_message.rs b/src/builder/create_message.rs
index c472ab6..63743cd 100644
--- a/src/builder/create_message.rs
+++ b/src/builder/create_message.rs
@@ -1,6 +1,7 @@
use super::CreateEmbed;
use model::ReactionType;
use internal::prelude::*;
+use std::fmt::{Write, Display};
/// A builder to specify the contents of an [`http::send_message`] request,
/// primarily meant for use through [`ChannelId::send_message`].
@@ -44,9 +45,12 @@ impl CreateMessage {
/// Set the content of the message.
///
/// **Note**: Message contents must be under 2000 unicode code points.
- pub fn content(mut self, content: &str) -> Self {
+ pub fn content<D: Display>(mut self, content: D) -> Self {
+ let mut s = "".to_owned();
+ let _ = writeln!(&mut s, "{}", content);
+
self.0
- .insert("content".to_owned(), Value::String(content.to_owned()));
+ .insert("content".to_owned(), Value::String(s));
CreateMessage(self.0, self.1)
}
diff --git a/src/model/channel/channel_id.rs b/src/model/channel/channel_id.rs
index 4de9710..1c7eb46 100644
--- a/src/model/channel/channel_id.rs
+++ b/src/model/channel/channel_id.rs
@@ -369,7 +369,7 @@ impl ChannelId {
/// [`ChannelId`]: struct.ChannelId.html
/// [`ModelError::MessageTooLong`]: enum.ModelError.html#variant.MessageTooLong
#[inline]
- pub fn say(&self, content: &str) -> Result<Message> {
+ pub fn say<D: ::std::fmt::Display>(&self, content: D) -> Result<Message> {
self.send_message(|m| m.content(content))
}