src/convex.rs

branch
dev
changeset 86
d5b0e496b72f
parent 73
ca53a962106c
--- a/src/convex.rs	Mon Dec 30 15:46:28 2024 -0500
+++ b/src/convex.rs	Mon Jan 06 20:29:25 2025 -0500
@@ -3,6 +3,7 @@
 */
 
 use std::marker::PhantomData;
+use serde::{Serialize, Deserialize};
 use crate::types::*;
 use crate::mapping::{Mapping, Space};
 use crate::linops::IdOp;
@@ -68,6 +69,7 @@
 }
 
 
+#[derive(Serialize,Deserialize,Debug,Clone)]
 pub struct NormConstraint<F : Float, E : NormExponent> {
     radius : F,
     norm : NormMapping<F, E>,
@@ -160,6 +162,7 @@
     }
 }
 
+#[derive(Serialize,Deserialize,Debug,Clone)]
 pub struct NormProjection<F : Float, E : NormExponent> {
     radius : F,
     exponent : E,
@@ -194,7 +197,11 @@
 
 
 /// The zero mapping
-pub struct Zero<Domain : Space, F : Num>(PhantomData<(Domain, F)>);
+#[derive(Serialize,Deserialize,Debug,Clone)]
+pub struct Zero<Domain : Space, F : Num>(
+    #[serde(skip)]
+    PhantomData<(Domain, F)>
+);
 
 impl<Domain : Space, F : Num> Zero<Domain, F> {
     pub fn new() -> Self {
@@ -247,7 +254,11 @@
 
 
 /// The zero indicator
-pub struct ZeroIndicator<Domain : Space, F : Num>(PhantomData<(Domain, F)>);
+#[derive(Serialize,Deserialize,Debug,Clone)]
+pub struct ZeroIndicator<Domain : Space, F : Num>(
+    #[serde(skip)]
+    PhantomData<(Domain, F)>
+);
 
 impl<Domain : Space, F : Num> ZeroIndicator<Domain, F> {
     pub fn new() -> Self {

mercurial