raphtory-storage 0.17.0

Raphtory storage interface
Documentation
use crate::disk::storage_interface::node::DiskNode;
use pometry_storage::graph::TemporalGraph;
use raphtory_api::core::entities::VID;
use rayon::iter::{IndexedParallelIterator, IntoParallelIterator, ParallelIterator};

#[derive(Copy, Clone, Debug)]
pub struct DiskNodesRef<'a> {
    graph: &'a TemporalGraph,
}

impl<'a> DiskNodesRef<'a> {
    pub(crate) fn new(graph: &'a TemporalGraph) -> Self {
        Self { graph }
    }

    pub fn len(&self) -> usize {
        self.graph.num_nodes()
    }

    pub fn node(self, vid: VID) -> DiskNode<'a> {
        DiskNode::new(self.graph, vid)
    }

    pub fn par_iter(self) -> impl IndexedParallelIterator<Item = DiskNode<'a>> {
        (0..self.graph.num_nodes())
            .into_par_iter()
            .map(move |vid| self.node(VID(vid)))
    }

    pub fn iter(self) -> impl Iterator<Item = DiskNode<'a>> {
        (0..self.graph.num_nodes()).map(move |vid| self.node(VID(vid)))
    }
}