//! Edge storage with CSR (Compressed Sparse Row) format
use super::data_structures::EdgeRec;
use anyhow::Result;
/// Edge storage manager
pub struct EdgeStore {
// TODO: Implement memory-mapped CSR storage
edges: Vec<EdgeRec>,
}
impl EdgeStore {
pub fn new() -> Self {
Self { edges: Vec::new() }
}
pub fn insert(&mut self, edge: EdgeRec) -> Result<u64> {
let id = self.edges.len() as u64;
self.edges.push(edge);
Ok(id)
}
pub fn get(&self, id: u64) -> Option<&EdgeRec> {
self.edges.get(id as usize)
}
}
impl Default for EdgeStore {
fn default() -> Self {
Self::new()
}
}