use graphviz::{Graph, Context};
use graphviz::layout::{apply_layout, Engine};
use graphviz::render::{render_to_string, render_to_bytes, Format};
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
let context = Context::new()?;
let mut graph = Graph::new("string_render", true)?;
let node1 = graph.add_node("Node1")?;
let node2 = graph.add_node("Node2")?;
graph.add_edge(&node1, &node2, None)?;
apply_layout(&context, &mut graph, Engine::Neato)?;
let svg_output = render_to_string(&context, &graph, Format::Svg)?;
println!("SVG Output:\n{}", svg_output);
let png_bytes = render_to_bytes(&context, &graph, Format::Png)?;
println!("PNG output size: {} bytes", png_bytes.len());
Ok(())
}