From 7895919f87be70c6439982903443c8dac10fcabc Mon Sep 17 00:00:00 2001 From: szymon Date: Fri, 14 Aug 2026 18:30:00 +0200 Subject: [PATCH] feat: add serde for necessary fields --- Cargo.lock | 17 ++++++++++------- Cargo.toml | 5 ++--- src/logic/board/board.rs | 3 +++ src/logic/board/field.rs | 4 +++- src/logic/board/pawn.rs | 5 +++-- src/logic/math/position.rs | 3 ++- 6 files changed, 23 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac90b9e..88f5475 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,6 +9,7 @@ dependencies = [ "env_logger", "log", "rand", + "serde", "uuid", ] @@ -480,31 +481,32 @@ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", + "serde_derive", ] [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] @@ -594,6 +596,7 @@ checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" dependencies = [ "getrandom", "js-sys", + "serde_core", "wasm-bindgen", ] diff --git a/Cargo.toml b/Cargo.toml index 632801c..5d05366 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,9 +13,8 @@ edition = "2024" env_logger = "0.11.11" log = "0.4.33" rand = "0.10.2" +serde = { version = "1.0.229", features = ["derive"] } [dependencies.uuid] version = "1.24.0" -features = [ - "v4", -] +features = ["serde", "v4"] diff --git a/src/logic/board/board.rs b/src/logic/board/board.rs index c6c8b65..a7e8675 100644 --- a/src/logic/board/board.rs +++ b/src/logic/board/board.rs @@ -11,6 +11,9 @@ use std::ops::{Index, IndexMut}; use log::{debug, error, info, trace, warn}; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize)] pub struct Board { board: Vec, pub size: usize, diff --git a/src/logic/board/field.rs b/src/logic/board/field.rs index 592bfe4..7b093b8 100644 --- a/src/logic/board/field.rs +++ b/src/logic/board/field.rs @@ -1,8 +1,10 @@ use std::fmt; +use serde::{Deserialize, Serialize}; + use crate::logic::{board::pawn::Pawn, math::position::Position}; -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct Field { pub position: Position, pub pawn: Option, diff --git a/src/logic/board/pawn.rs b/src/logic/board/pawn.rs index 4ff18a8..9ad752d 100644 --- a/src/logic/board/pawn.rs +++ b/src/logic/board/pawn.rs @@ -1,8 +1,9 @@ +use serde::{Deserialize, Serialize}; use uuid::Uuid; use crate::logic::{math::position::Position, player::Player}; -#[derive(PartialEq, Eq, Debug)] +#[derive(PartialEq, Eq, Debug, Serialize, Deserialize)] pub enum PawnState { Man, Dame, @@ -10,7 +11,7 @@ pub enum PawnState { } /// Basic pawn -#[derive(Debug, PartialEq, Eq)] +#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)] pub struct Pawn { pub state: PawnState, pub owner: Uuid, diff --git a/src/logic/math/position.rs b/src/logic/math/position.rs index 6188ca9..6dcaf6b 100644 --- a/src/logic/math/position.rs +++ b/src/logic/math/position.rs @@ -2,10 +2,11 @@ use core::fmt; use std::ops::Sub; use log::{debug, trace}; +use serde::{Deserialize, Serialize}; use crate::logic::math::vector::Vector2D; -#[derive(Clone, Copy, PartialEq, Eq, Debug)] +#[derive(Clone, Copy, PartialEq, Eq, Debug, Serialize, Deserialize)] /// Position on the board. Consists of row and column. Should be treated like a point in space on /// unsigned grid. ///