use vizoxide::{Graph, Context};
use vizoxide::layout::{apply_layout, Engine};
use vizoxide::render::{render_to_writer, Format};
use std::error::Error;
use std::io::Cursor;
fn main() -> Result<(), Box<dyn Error>> {
let context = Context::new()?;
let mut graph = Graph::new("writer_example", true)?;
let node1 = graph.add_node("N1")?;
let node2 = graph.add_node("N2")?;
graph.add_edge(&node1, &node2, None)?;
apply_layout(&context, &mut graph, Engine::Fdp)?;
let mut buffer = Cursor::new(Vec::new());
render_to_writer(&context, &graph, Format::Svg, &mut buffer)?;
let output = String::from_utf8(buffer.into_inner())?;
println!("Rendered SVG Output:\n{}", output);
Ok(())
}