diff -r 99ad55974e62 -r d5b0e496b72f src/convex.rs --- 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 { radius : F, norm : NormMapping, @@ -160,6 +162,7 @@ } } +#[derive(Serialize,Deserialize,Debug,Clone)] pub struct NormProjection { radius : F, exponent : E, @@ -194,7 +197,11 @@ /// The zero mapping -pub struct Zero(PhantomData<(Domain, F)>); +#[derive(Serialize,Deserialize,Debug,Clone)] +pub struct Zero( + #[serde(skip)] + PhantomData<(Domain, F)> +); impl Zero { pub fn new() -> Self { @@ -247,7 +254,11 @@ /// The zero indicator -pub struct ZeroIndicator(PhantomData<(Domain, F)>); +#[derive(Serialize,Deserialize,Debug,Clone)] +pub struct ZeroIndicator( + #[serde(skip)] + PhantomData<(Domain, F)> +); impl ZeroIndicator { pub fn new() -> Self {