//! Definitions for serializing and deserializing graph and translator. //! //! N.B. after serialization the size of the graph may be much larger than //! before since a lot of ```Rc``` are used in ```RSsystem```. use std::io; use petgraph::Graph; use serde::{Deserialize, Serialize}; use super::{structure::{RSlabel, RSsystem}, translator::Translator}; #[derive(Serialize, Deserialize)] struct GraphAndTranslator { graph: Graph, translator: Translator } /// Serializer for graph and translator. pub fn ser( writer: W, graph: &Graph, translator: &Translator ) -> Result<(), serde_cbor_2::Error> where W: io::Write, { serde_cbor_2::to_writer(writer, &GraphAndTranslator { graph: graph.clone(), translator: translator.clone() }) } /// Deserializer for file that contains graph and translator. pub fn de( reader: R ) -> Result<(Graph, Translator), serde_cbor_2::Error> where R: io::Read, { let gat: GraphAndTranslator = serde_cbor_2::from_reader(reader)?; Ok((gat.graph, gat.translator)) }