From 8e5f77b98f26a4d850fda165185c09aba389873e Mon Sep 17 00:00:00 2001 From: Anna Date: Sat, 31 Mar 2018 17:11:03 -0400 Subject: [PATCH] feat: add serde support --- Cargo.toml | 4 +++- src/data_centers.rs | 1 + src/jobs/classification.rs | 1 + src/jobs/combat.rs | 1 + src/jobs/non_combat.rs | 1 + src/lib.rs | 4 ++++ src/roles.rs | 1 + src/worlds.rs | 1 + 8 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 37a70ff..f75ad95 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,8 @@ roles = [] # World-related data_centers = [] worlds = [] - +with_serde = ["serde", "serde_derive"] [dependencies] +serde = { version = "1", optional = true } +serde_derive = { version = "1", optional = true } diff --git a/src/data_centers.rs b/src/data_centers.rs index e4c1e59..238a5e3 100644 --- a/src/data_centers.rs +++ b/src/data_centers.rs @@ -6,6 +6,7 @@ use std::fmt::{Display, Formatter, Result as FmtResult}; use std::str::FromStr; #[derive(Debug, Clone, Copy)] +#[cfg_attr(feature = "with_serde", derive(Serialize, Deserialize))] pub enum DataCenter { Aether, Chaos, diff --git a/src/jobs/classification.rs b/src/jobs/classification.rs index 896946a..5c6a038 100644 --- a/src/jobs/classification.rs +++ b/src/jobs/classification.rs @@ -12,6 +12,7 @@ use std::str::FromStr; /// [`Job`]: ::jobs::Job /// [`NonCombatJob`]: ::jobs::NonCombatJob #[derive(Debug, Clone, Copy)] +#[cfg_attr(feature = "with_serde", derive(Serialize, Deserialize))] pub enum Classification { War, Magic, diff --git a/src/jobs/combat.rs b/src/jobs/combat.rs index 1d98bce..1ef8ec9 100644 --- a/src/jobs/combat.rs +++ b/src/jobs/combat.rs @@ -11,6 +11,7 @@ use std::str::FromStr; /// The Disciple of War and Disciple of Magic jobs available in the game. #[derive(Debug, Clone, Copy)] +#[cfg_attr(feature = "with_serde", derive(Serialize, Deserialize))] pub enum Job { // DPS Bard, diff --git a/src/jobs/non_combat.rs b/src/jobs/non_combat.rs index f85c668..445a660 100644 --- a/src/jobs/non_combat.rs +++ b/src/jobs/non_combat.rs @@ -9,6 +9,7 @@ use std::str::FromStr; /// The Disciple of the Land and Disciple of the Hand jobs available in the game. #[derive(Debug, Clone, Copy)] +#[cfg_attr(feature = "with_serde", derive(Serialize, Deserialize))] pub enum NonCombatJob { // Gatherers Botanist, diff --git a/src/lib.rs b/src/lib.rs index 689ffa9..117cba9 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,9 @@ //! Types for use in FFXIV-related projects. +#[cfg(feature = "with_serde")] +#[macro_use] +extern crate serde_derive; + #[cfg(feature = "data_centers")] pub mod data_centers; pub mod errors; diff --git a/src/roles.rs b/src/roles.rs index 877712f..997c8b4 100644 --- a/src/roles.rs +++ b/src/roles.rs @@ -11,6 +11,7 @@ use std::str::FromStr; /// /// [`Job`]: ::jobs::Job #[derive(Debug, Clone, Copy)] +#[cfg_attr(feature = "with_serde", derive(Serialize, Deserialize))] pub enum Role { Dps, Healer, diff --git a/src/worlds.rs b/src/worlds.rs index 73e226e..6e19f3a 100644 --- a/src/worlds.rs +++ b/src/worlds.rs @@ -11,6 +11,7 @@ use std::str::FromStr; /// /// Each [`DataCenter`] has multiple worlds attached to it. #[derive(Debug, Clone, Copy)] +#[cfg_attr(feature = "with_serde", derive(Serialize, Deserialize))] pub enum World { // Aether Adamantoise,