aboutsummaryrefslogtreecommitdiff
path: root/src/model
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2018-08-01 08:35:04 -0700
committerZeyla Hellyer <[email protected]>2018-08-01 08:35:04 -0700
commite1332a54af46eff6051097ff4989c8d0fde4ca37 (patch)
tree9f2a8753e994e1b533ca20da67ce5325a79fdfd1 /src/model
parentMove unit tests into source (diff)
downloadserenity-e1332a54af46eff6051097ff4989c8d0fde4ca37.tar.xz
serenity-e1332a54af46eff6051097ff4989c8d0fde4ca37.zip
Add From impls for Game, generify Game params
Add more `impl From<T> for Game` implementations, and make `Into<Game>` trait bounds for all function parameters accepting a Game.
Diffstat (limited to 'src/model')
-rw-r--r--src/model/gateway.rs52
-rw-r--r--src/model/guild/mod.rs1
2 files changed, 52 insertions, 1 deletions
diff --git a/src/model/gateway.rs b/src/model/gateway.rs
index b73d900..9af4a7e 100644
--- a/src/model/gateway.rs
+++ b/src/model/gateway.rs
@@ -131,6 +131,58 @@ impl Game {
}
}
+impl<'a> From<&'a str> for Game {
+ fn from(name: &'a str) -> Self {
+ Game::playing(name)
+ }
+}
+
+impl From<String> for Game {
+ fn from(name: String) -> Self {
+ Game::playing(&name)
+ }
+}
+
+impl<'a> From<(String, GameType)> for Game {
+ fn from((name, kind): (String, GameType)) -> Self {
+ Self {
+ url: None,
+ kind,
+ name,
+ }
+ }
+}
+
+impl<'a> From<(&'a str, &'a str)> for Game {
+ fn from((name, url): (&'a str, &'a str)) -> Self {
+ Self {
+ kind: GameType::Streaming,
+ name: name.to_owned(),
+ url: Some(url.to_owned()),
+ }
+ }
+}
+
+impl From<(String, String)> for Game {
+ fn from((name, url): (String, String)) -> Self {
+ Self {
+ kind: GameType::Streaming,
+ url: Some(url),
+ name,
+ }
+ }
+}
+
+impl From<(String, GameType, String)> for Game {
+ fn from((name, kind, url): (String, GameType, String)) -> Self {
+ Self {
+ url: Some(url),
+ kind,
+ name,
+ }
+ }
+}
+
impl<'de> Deserialize<'de> for Game {
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> StdResult<Self, D::Error> {
let mut map = JsonMap::deserialize(deserializer)?;
diff --git a/src/model/guild/mod.rs b/src/model/guild/mod.rs
index 480f7e6..30651d6 100644
--- a/src/model/guild/mod.rs
+++ b/src/model/guild/mod.rs
@@ -2022,7 +2022,6 @@ mod test {
mod model {
use chrono::prelude::*;
use model::prelude::*;
- use prelude::*;
use std::collections::*;
use std::sync::Arc;