src/sets.rs

branch
dev
changeset 86
d5b0e496b72f
parent 75
e9f4550cfa18
--- a/src/sets.rs	Mon Dec 30 15:46:28 2024 -0500
+++ b/src/sets.rs	Mon Jan 06 20:29:25 2025 -0500
@@ -7,7 +7,7 @@
 use crate::loc::Loc;
 use crate::euclidean::Euclidean;
 use crate::instance::{Space, Instance};
-use serde::Serialize;
+use serde::{Serialize, Deserialize};
 
 pub mod cube;
 pub use cube::Cube;
@@ -62,7 +62,7 @@
 ///
 /// The halfspace is $H = \\{ t v + a \mid a^⊤ v = 0 \\}$, where $v$ is the orthogonal
 /// vector and $t$ the offset.
-#[derive(Clone,Copy,Debug,Serialize,Eq,PartialEq)]
+#[derive(Clone,Copy,Debug,Serialize,Deserialize,Eq,PartialEq)]
 pub struct Halfspace<A, F> where A : Euclidean<F>, F : Float {
     pub orthogonal : A,
     pub offset : F,
@@ -116,7 +116,11 @@
 }
 
 /// Polygons defined by `N` `Halfspace`s.
-#[derive(Clone,Copy,Debug,Eq,PartialEq)]
+#[derive(Clone,Copy,Debug,Eq,PartialEq,Serialize,Deserialize)]
+#[serde(bound(
+    serialize = "[Halfspace<A,F>; N] : Serialize",
+    deserialize = "[Halfspace<A,F>; N] : for<'a> Deserialize<'a>"
+))]
 pub struct NPolygon<A, F, const N : usize>(pub [Halfspace<A,F>; N])
 where A : Euclidean<F>, F : Float;
 

mercurial