src/measures/discrete.rs

branch
dev
changeset 38
0f59c0d02e13
parent 37
c5d8bd1a7728
--- a/src/measures/discrete.rs	Thu Jan 23 23:35:28 2025 +0100
+++ b/src/measures/discrete.rs	Mon Jan 06 21:37:03 2025 -0500
@@ -6,7 +6,7 @@
     Index,IndexMut,
 };
 use std::iter::Sum;
-use serde::ser::{Serializer, Serialize, SerializeSeq};
+use serde::{Serialize, Deserialize};
 use nalgebra::DVector;
 
 use alg_tools::norms::Norm;
@@ -26,7 +26,7 @@
 /// This is the measure $μ = ∑_{k=1}^n α_k δ_{x_k}$, consisting of several
 /// [`DeltaMeasure`], i.e., “spikes” $α_k δ_{x_k}$ with weights $\alpha_k$ in `F` at locations
 /// $x_k$ in `Domain`.
-#[derive(Clone,Debug)]
+#[derive(Clone,Debug,Serialize,Deserialize)]
 pub struct DiscreteMeasure<Domain, F : Num> {
     pub(super) spikes : Vec<DeltaMeasure<Domain, F>>,
 }
@@ -456,25 +456,6 @@
     }
 }
 
-// Need to manually implement serialisation for DeltaMeasure<Loc<F, N>, F> [`csv`] writer fails on
-// structs with nested arrays as well as with #[serde(flatten)].
-// Then derive no longer works for DiscreteMeasure
-impl<F : Num, const N : usize> Serialize for DiscreteMeasure<Loc<F, N>, F>
-where
-    F: Serialize,
-{
-    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
-    where
-        S: Serializer,
-    {
-        let mut s = serializer.serialize_seq(Some(self.spikes.len()))?;
-        for δ in self.spikes.iter() {
-            s.serialize_element(δ)?;
-        }
-        s.end()
-    }
-}
-
 impl<Domain : PartialEq, F : Float> Measure<F> for DiscreteMeasure<Domain, F> {
     type Domain = Domain;
 }

mercurial