Struct swh_graph::graph::SwhUnidirectionalGraph
source · pub struct SwhUnidirectionalGraph<P, G: UnderlyingGraph = BVGraph<DynCodesDecoderFactory<BE, MmapHelper<u32>, EliasFano<SelectFixed2<CountBitVec<&'static [usize]>, &'static [u64], 8>, BitFieldVec<usize, &'static [usize]>>>>> { /* private fields */ }
Expand description
Class representing the compressed Software Heritage graph in a single direction.
Created using load_unidirectional
.
Type parameters:
P
is either()
orproperties::SwhGraphProperties
, manipulated usingload_properties
andload_all_properties
- G is the forward graph (either [
BVGraph
], orZip<BVGraph, SwhGraphLabels>
load_labels
Implementations§
source§impl<G: UnderlyingGraph> SwhUnidirectionalGraph<(), G>
impl<G: UnderlyingGraph> SwhUnidirectionalGraph<(), G>
pub fn from_underlying_graph(basepath: PathBuf, graph: G) -> Self
source§impl<M: MaybeMaps, T: MaybeTimestamps, P: MaybePersons, C: MaybeContents, S: MaybeStrings, N: MaybeLabelNames, G: UnderlyingGraph> SwhUnidirectionalGraph<SwhGraphProperties<M, T, P, C, S, N>, G>
impl<M: MaybeMaps, T: MaybeTimestamps, P: MaybePersons, C: MaybeContents, S: MaybeStrings, N: MaybeLabelNames, G: UnderlyingGraph> SwhUnidirectionalGraph<SwhGraphProperties<M, T, P, C, S, N>, G>
sourcepub fn load_properties<M2: MaybeMaps, T2: MaybeTimestamps, P2: MaybePersons, C2: MaybeContents, S2: MaybeStrings, N2: MaybeLabelNames>(
self,
loader: impl Fn(SwhGraphProperties<M, T, P, C, S, N>) -> Result<SwhGraphProperties<M2, T2, P2, C2, S2, N2>>
) -> Result<SwhUnidirectionalGraph<SwhGraphProperties<M2, T2, P2, C2, S2, N2>, G>>
pub fn load_properties<M2: MaybeMaps, T2: MaybeTimestamps, P2: MaybePersons, C2: MaybeContents, S2: MaybeStrings, N2: MaybeLabelNames>( self, loader: impl Fn(SwhGraphProperties<M, T, P, C, S, N>) -> Result<SwhGraphProperties<M2, T2, P2, C2, S2, N2>> ) -> Result<SwhUnidirectionalGraph<SwhGraphProperties<M2, T2, P2, C2, S2, N2>, G>>
Enriches the graph with more properties mmapped from disk
Example
use swh_graph::java_compat::mph::gov::GOVMPH;
swh_graph::graph::load_unidirectional(PathBuf::from("./graph"))
.expect("Could not load graph")
.init_properties()
.load_properties(|properties| properties.load_maps::<GOVMPH>())
.expect("Could not load SWHID maps")
.load_properties(|properties| properties.load_timestamps())
.expect("Could not load timestamps");
source§impl<G: UnderlyingGraph> SwhUnidirectionalGraph<(), G>
impl<G: UnderlyingGraph> SwhUnidirectionalGraph<(), G>
sourcepub fn init_properties(
self
) -> SwhUnidirectionalGraph<SwhGraphProperties<NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>, G>
pub fn init_properties( self ) -> SwhUnidirectionalGraph<SwhGraphProperties<NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>, G>
Prerequisite for load_properties
sourcepub fn load_all_properties<MPHF: SwhidMphf>(
self
) -> Result<SwhUnidirectionalGraph<SwhGraphProperties<MappedMaps<MPHF>, MappedTimestamps, MappedPersons, MappedContents, MappedStrings, MappedLabelNames>, G>>
pub fn load_all_properties<MPHF: SwhidMphf>( self ) -> Result<SwhUnidirectionalGraph<SwhGraphProperties<MappedMaps<MPHF>, MappedTimestamps, MappedPersons, MappedContents, MappedStrings, MappedLabelNames>, G>>
Enriches the graph with more properties mmapped from disk
Example
use swh_graph::java_compat::mph::gov::GOVMPH;
swh_graph::graph::load_unidirectional(PathBuf::from("./graph"))
.expect("Could not load graph")
.load_all_properties::<GOVMPH>()
.expect("Could not load properties");
source§impl<P, G: RandomAccessGraph + UnderlyingGraph> SwhUnidirectionalGraph<P, G>
impl<P, G: RandomAccessGraph + UnderlyingGraph> SwhUnidirectionalGraph<P, G>
sourcepub fn load_labels(
self
) -> Result<SwhUnidirectionalGraph<P, Zip<G, SwhLabels<MmapReaderBuilder, DeserType<'static, EF>>>>>
pub fn load_labels( self ) -> Result<SwhUnidirectionalGraph<P, Zip<G, SwhLabels<MmapReaderBuilder, DeserType<'static, EF>>>>>
Consumes this graph and returns a new one that implements SwhLabelledForwardGraph
Trait Implementations§
source§impl<P, G: UnderlyingGraph> SwhForwardGraph for SwhUnidirectionalGraph<P, G>
impl<P, G: UnderlyingGraph> SwhForwardGraph for SwhUnidirectionalGraph<P, G>
source§fn successors(&self, node_id: NodeId) -> Self::Successors<'_>
fn successors(&self, node_id: NodeId) -> Self::Successors<'_>
Return an IntoIterator
over the successors of a node.
type Successors<'succ> = <G as UnderlyingGraph>::UnlabeledSuccessors<'succ> where Self: 'succ
source§impl<P, G: UnderlyingGraph> SwhGraph for SwhUnidirectionalGraph<P, G>
impl<P, G: UnderlyingGraph> SwhGraph for SwhUnidirectionalGraph<P, G>
source§impl<MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames, G: UnderlyingGraph> SwhGraphWithProperties for SwhUnidirectionalGraph<SwhGraphProperties<MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>, G>
impl<MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames, G: UnderlyingGraph> SwhGraphWithProperties for SwhUnidirectionalGraph<SwhGraphProperties<MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>, G>
type Maps = MAPS
type Timestamps = TIMESTAMPS
type Persons = PERSONS
type Contents = CONTENTS
type Strings = STRINGS
type LabelNames = LABELNAMES
fn properties( &self ) -> &SwhGraphProperties<MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
source§impl<P, G: UnderlyingGraph> SwhLabelledForwardGraph for SwhUnidirectionalGraph<P, G>where
<G as SequentialLabeling>::Label: Pair<Left = NodeId>,
<<G as SequentialLabeling>::Label as Pair>::Right: IntoIterator,
<<<G as SequentialLabeling>::Label as Pair>::Right as IntoIterator>::Item: Borrow<u64>,
for<'succ> <G as RandomAccessLabeling>::Labels<'succ>: Iterator<Item = (usize, <<G as SequentialLabeling>::Label as Pair>::Right)>,
impl<P, G: UnderlyingGraph> SwhLabelledForwardGraph for SwhUnidirectionalGraph<P, G>where <G as SequentialLabeling>::Label: Pair<Left = NodeId>, <<G as SequentialLabeling>::Label as Pair>::Right: IntoIterator, <<<G as SequentialLabeling>::Label as Pair>::Right as IntoIterator>::Item: Borrow<u64>, for<'succ> <G as RandomAccessLabeling>::Labels<'succ>: Iterator<Item = (usize, <<G as SequentialLabeling>::Label as Pair>::Right)>,
type LabelledArcs<'arc> = LabelledArcIterator<<<<<G as RandomAccessLabeling>::Labels<'arc> as Iterator>::Item as Pair>::Right as IntoIterator>::IntoIter> where Self: 'arc
type LabelledSuccessors<'succ> = LabelledSuccessorIterator<<G as RandomAccessLabeling>::Labels<'succ>> where Self: 'succ
source§fn labelled_successors(&self, node_id: NodeId) -> Self::LabelledSuccessors<'_>
fn labelled_successors(&self, node_id: NodeId) -> Self::LabelledSuccessors<'_>
Return an
IntoIterator
over the successors of a node.Auto Trait Implementations§
impl<P, G> RefUnwindSafe for SwhUnidirectionalGraph<P, G>where G: RefUnwindSafe, P: RefUnwindSafe,
impl<P, G> Send for SwhUnidirectionalGraph<P, G>where G: Send, P: Send,
impl<P, G> Sync for SwhUnidirectionalGraph<P, G>where G: Sync, P: Sync,
impl<P, G> Unpin for SwhUnidirectionalGraph<P, G>where G: Unpin, P: Unpin,
impl<P, G> UnwindSafe for SwhUnidirectionalGraph<P, G>where G: UnwindSafe, P: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere U: CastableFrom<T>,
§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Truncate the current UnsignedInt to a possibly smaller size
§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere U: DowncastableFrom<T>,
§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere T: ?Sized,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> UpcastableFrom<T> for T
impl<T> UpcastableFrom<T> for T
§fn upcast_from(value: T) -> T
fn upcast_from(value: T) -> T
Extend the current UnsignedInt to a possibly bigger size.