diff --git a/Cargo.toml b/Cargo.toml index d681f58..04e873c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,14 +7,16 @@ members = [".", "crates/*", "crates/*/fuzz"] resolver = "2" [workspace.dependencies] -bimap = "0.6.3" derive-getters = "0.5" -petgraph = { git = "https://codeberg.org/topola/petgraph.git" } rstar = "0.12" serde_json = "1.0" spade = "2.12" thiserror = "2.0" +[workspace.dependencies.bimap] +version = "0.6.3" +features = ["serde"] + [workspace.dependencies.geo-types] version = "0.7" default-features = false @@ -25,6 +27,10 @@ version = "0.29" default-features = false features = ["spade", "use-serde"] +[workspace.dependencies.petgraph] +git = "https://codeberg.org/topola/petgraph.git" +features = ["serde-1"] + [workspace.dependencies.serde] version = "1" features = ["derive"] diff --git a/src/drawing/graph.rs b/src/drawing/graph.rs index 8b14957..3ecfdde 100644 --- a/src/drawing/graph.rs +++ b/src/drawing/graph.rs @@ -3,7 +3,6 @@ // SPDX-License-Identifier: MIT use enum_dispatch::enum_dispatch; - use petgraph::stable_graph::NodeIndex; use crate::{drawing::Drawing, graph::GetPetgraphIndex}; @@ -90,7 +89,7 @@ macro_rules! impl_loose_weight { // TODO: This enum shouldn't exist: we shouldn't be carrying the tag around like this. Instead we // should be getting it from the graph when it's needed. #[enum_dispatch(GetPetgraphIndex, MakePrimitive)] -#[derive(Debug, Hash, Clone, Copy, PartialEq, Eq)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] pub enum PrimitiveIndex { FixedDot(FixedDotIndex), LooseDot(LooseDotIndex), diff --git a/src/geometry/geometry.rs b/src/geometry/geometry.rs index 1d85c74..5846bb5 100644 --- a/src/geometry/geometry.rs +++ b/src/geometry/geometry.rs @@ -12,6 +12,7 @@ use petgraph::{ visit::EdgeRef, Direction::{self, Incoming}, }; +use serde::{Deserialize, Serialize}; use crate::{ drawing::{ @@ -63,7 +64,7 @@ pub enum GeometryLabel { Compound, } -#[derive(Debug, Hash, Clone, Copy, PartialEq, Eq)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, Deserialize, Serialize)] pub enum GenericNode
{
Primitive(P),
Compound(C),
diff --git a/src/graph.rs b/src/graph.rs
index 29bbc07..492d5e1 100644
--- a/src/graph.rs
+++ b/src/graph.rs
@@ -9,6 +9,7 @@ use std::{
use enum_dispatch::enum_dispatch;
use petgraph::stable_graph::NodeIndex;
+use serde::{Deserialize, Serialize};
pub trait MakeRef<'a, R: 'a, C> {
fn ref_(&self, context: &'a C) -> R;
@@ -19,9 +20,14 @@ pub trait GetPetgraphIndex {
fn petgraph_index(&self) -> NodeIndex