From c21b3c7bc1cb7c733269b03e464923c2a7116df1 Mon Sep 17 00:00:00 2001 From: MA Beaudet Date: Tue, 9 Nov 2021 11:52:54 +0100 Subject: [PATCH] feat: apply C-SERDE to data structures --- Cargo.toml | 1 + src/card.rs | 8 +++++++- src/evaluator.rs | 4 ++++ src/lib.rs | 5 +++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index b6c1a26..90ef266 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,4 +13,5 @@ default = ["rand"] [dependencies] rand = { version = "0.8.4", optional = true } rayon = { version = "1.5.1", optional = true } +serde = { version = "1.0", optional = true, features = ["derive"] } wasm-bindgen = "0.2.78" diff --git a/src/card.rs b/src/card.rs index 5710c41..cfdb93a 100644 --- a/src/card.rs +++ b/src/card.rs @@ -2,6 +2,10 @@ use std::str::FromStr; use crate::{constants::PRIMES, MyError, Rules}; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[derive(Debug, Default, Clone)] pub struct Cards(pub(crate) Vec); @@ -39,6 +43,7 @@ impl From for Vec { } } +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[derive(Debug, Clone)] pub struct Deck(pub(crate) Cards); @@ -113,8 +118,9 @@ impl Default for Deck { /// Card::from_str("Kd").unwrap().get(), /// 0b00001000_00000000_01001011_00100101_u32 /// ); -#[repr(transparent)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[derive(Debug, Clone, Copy)] +#[repr(transparent)] pub struct Card(pub(crate) u32); impl Card { diff --git a/src/evaluator.rs b/src/evaluator.rs index bd2c270..ce492d7 100644 --- a/src/evaluator.rs +++ b/src/evaluator.rs @@ -6,6 +6,10 @@ use crate::{ Algorithm, MyError, Rules, }; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[derive(Debug)] pub struct Evaluator { pub rules: Rules, diff --git a/src/lib.rs b/src/lib.rs index e56fa0c..b343571 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,6 +19,9 @@ use constants::{ VALUE_STR, }; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; + use wasm_bindgen::prelude::*; #[derive(Debug)] @@ -41,6 +44,7 @@ impl std::fmt::Display for MyError { } } +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[derive(Debug, Clone, Copy)] pub enum Rules { Classic, @@ -53,6 +57,7 @@ impl Default for Rules { } } +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] #[derive(Debug, Clone, Copy)] pub enum Algorithm { CactusKev, -- 2.20.1