From 4f3e57faeda31481eba5b7be185d169cd63f8373 Mon Sep 17 00:00:00 2001 From: elvis Date: Sun, 19 Oct 2025 21:09:25 +0200 Subject: [PATCH] Serialize/Deserialize trace --- rsprocess/src/trace.rs | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/rsprocess/src/trace.rs b/rsprocess/src/trace.rs index 8e6c8d4..a7ea637 100644 --- a/rsprocess/src/trace.rs +++ b/rsprocess/src/trace.rs @@ -3,6 +3,8 @@ use std::ops::{Index, IndexMut}; use std::rc::Rc; use std::slice::SliceIndex; +use serde::{Deserialize, Serialize}; + use crate::reaction::{BasicReaction, PositiveReaction, Reaction}; use crate::set::{BasicSet, PositiveSet, Set}; use crate::system::{BasicSystem, PositiveSystem, System}; @@ -80,7 +82,7 @@ impl]>> IndexMut // ----------------------------------------------------------------------------- // Slicing Trace // ----------------------------------------------------------------------------- -#[derive(Clone, Default, Hash)] +#[derive(Clone, Default, Hash, Serialize, Deserialize)] pub struct SlicingElement { pub context: S, pub reaction_products: S, @@ -130,7 +132,7 @@ where } } -#[derive(Clone, Default, Debug, Hash)] +#[derive(Clone, Default, Debug, Hash, Serialize, Deserialize)] pub struct EnabledReactions { pub data: Vec, } @@ -190,12 +192,10 @@ impl EnabledReactions { } } -#[derive(Clone, Debug, Hash)] -pub struct SlicingTrace< - S: BasicSet, - R: BasicReaction, - Sys: BasicSystem, -> { + +#[derive(Clone, Debug, Hash, Serialize, Deserialize)] +pub struct SlicingTrace +{ pub elements: Vec>, pub enabled_reactions: Vec, @@ -206,12 +206,7 @@ pub struct SlicingTrace< pub products_elements: Rc, } -impl< - S: BasicSet, - R: BasicReaction, - Sys: BasicSystem, -> Default for SlicingTrace -{ +impl Default for SlicingTrace { fn default() -> Self { Self { elements: Vec::default(), @@ -224,12 +219,7 @@ impl< } } -impl< - S: BasicSet + Debug, - R: BasicReaction, - Sys: BasicSystem, -> SlicingTrace -{ +impl SlicingTrace { pub fn is_empty(&self) -> bool { self.elements.is_empty() }