Skip to main content

icb_graph/
cache.rs

1use crate::graph::{CodePropertyGraph, GraphData};
2use anyhow::Result;
3use std::{fs, path::Path};
4
5/// Load a cached graph from disk (bincode + zstd).
6pub fn load_graph(path: &Path) -> Result<CodePropertyGraph> {
7    let compressed = fs::read(path)?;
8    let bytes = zstd::decode_all(&compressed[..])?;
9    let data: GraphData = bincode::deserialize(&bytes)?;
10    Ok(CodePropertyGraph::from(data))
11}
12
13/// Save a graph to disk (bincode + zstd).
14pub fn save_graph(graph: &CodePropertyGraph, path: &Path) -> Result<()> {
15    let data = GraphData::from(graph);
16    let bytes = bincode::serialize(&data)?;
17    let compressed = zstd::encode_all(&bytes[..], 0)?;
18    fs::write(path, compressed)?;
19    Ok(())
20}