diff options
| author | Zeyla Hellyer <[email protected]> | 2018-08-01 08:35:04 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2018-08-01 08:35:04 -0700 |
| commit | e1332a54af46eff6051097ff4989c8d0fde4ca37 (patch) | |
| tree | 9f2a8753e994e1b533ca20da67ce5325a79fdfd1 /src/model | |
| parent | Move unit tests into source (diff) | |
| download | serenity-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.rs | 52 | ||||
| -rw-r--r-- | src/model/guild/mod.rs | 1 |
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; |