pub struct ContiguousSubgraph<G: SwhGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> { /* private fields */ }
Expand description
A view over SwhGraph
and related traits, that filters out some nodes, and renumbers
remaining nodes so that the set of valid nodes becomes a range.
Due to limitations in the Rust type system, properties available on the underlying
SwhGraph
are not automatically available on ContiguousSubgraph
.
They need to be explicitly enabled in a builder-like pattern on ContiguousSubgraph
using these methods:
§Examples
Build a ContiguousSubgraph
made of only content and directory nodes:
use dsi_progress_logger::progress_logger;
use swh_graph::properties;
use swh_graph::NodeConstraint;
use swh_graph::graph::SwhGraphWithProperties;
use swh_graph::views::{ContiguousSubgraph, Contraction, Subgraph, ContractionBackend};
fn filesystem_subgraph<G>(graph: &G) -> ContiguousSubgraph<
Subgraph<&'_ G, impl Fn(usize) -> bool + use<'_, G>, fn(usize, usize) -> bool>,
impl ContractionBackend,
properties::NoMaps,
properties::NoTimestamps,
properties::NoPersons,
properties::NoContents,
properties::NoStrings,
properties::NoLabelNames,
>
where G: SwhGraphWithProperties<Maps: properties::Maps> + Sync {
let sparse_subgraph = Subgraph::with_node_constraint(graph, "cnt,ori".parse().unwrap());
ContiguousSubgraph::new_from_noncontiguous_graph(sparse_subgraph)
}
The graph created above is slightly suboptimal, as ContiguousSubgraph
wraps
a Subgraph
, causing Subgraph
to add needless overhead by checking that nodes
exist, even though ContiguousSubgraph
does it too.
This should not be noticeable, but if it is an issue, you can skip the Subgraph
by manually building a Contraction
:
use dsi_progress_logger::progress_logger;
use sux::dict::elias_fano::{EfSeqDict, EliasFanoBuilder};
use swh_graph::properties;
use swh_graph::{NodeType};
use swh_graph::graph::SwhGraphWithProperties;
use swh_graph::views::{ContiguousSubgraph, Contraction, Subgraph, ContractionBackend};
fn filesystem_subgraph<G>(graph: &G) -> ContiguousSubgraph<
&'_ G,
EfSeqDict,
properties::NoMaps,
properties::NoTimestamps,
properties::NoPersons,
properties::NoContents,
properties::NoStrings,
properties::NoLabelNames,
>
where G: SwhGraphWithProperties<Maps: properties::Maps> {
// compute exact number of nodes in the subgraph, which is required
// by EliasFanoBuilder
let pl = progress_logger!(
item_name = "node",
expected_updates = Some(graph.num_nodes()),
);
let num_nodes = graph
.iter_nodes(pl)
.filter(|&node| match graph.properties().node_type(node) {
NodeType::Content | NodeType::Directory => true,
_ => false,
})
.count();
// compute set of nodes in the subgraph
let mut nodes_efb = EliasFanoBuilder::new(num_nodes, graph.num_nodes());
for node in 0..graph.num_nodes() {
match graph.properties().node_type(node) {
NodeType::Content | NodeType::Directory => nodes_efb.push(node),
_ => (),
}
}
let contraction = Contraction(nodes_efb.build_with_seq_and_dict());
// assemble the subgraph
ContiguousSubgraph::new_from_contraction(graph, contraction)
}
Implementations§
Source§impl<G: SwhGraphWithProperties<Contents: OptContents>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, NoContents, STRINGS, LABELNAMES>
impl<G: SwhGraphWithProperties<Contents: OptContents>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, NoContents, STRINGS, LABELNAMES>
Sourcepub fn with_contents(
self,
) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, ContiguousSubgraphContents<G, N>, STRINGS, LABELNAMES>
pub fn with_contents( self, ) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, ContiguousSubgraphContents<G, N>, STRINGS, LABELNAMES>
Makes OptContents
available on this ContiguousSubgraph
.
Requires the underlying graph to implement OptContents
Source§impl<G: SwhGraphWithProperties<LabelNames: LabelNames>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, NoLabelNames>
impl<G: SwhGraphWithProperties<LabelNames: LabelNames>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, NoLabelNames>
Sourcepub fn with_label_names(
self,
) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, ContiguousSubgraphLabelNames<G, N>>
pub fn with_label_names( self, ) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, ContiguousSubgraphLabelNames<G, N>>
Makes properties::LabelNames
available on this ContiguousSubgraph
.
Requires the underlying graph to implement properties::LabelNames
.
Source§impl<G: SwhGraphWithProperties<Maps: Maps>, N: ContractionBackend, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, NoMaps, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhGraphWithProperties<Maps: Maps>, N: ContractionBackend, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, NoMaps, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
Sourcepub fn with_maps(
self,
) -> ContiguousSubgraph<G, N, ContiguousSubgraphMaps<G, N>, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
pub fn with_maps( self, ) -> ContiguousSubgraph<G, N, ContiguousSubgraphMaps<G, N>, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
Makes properties::Maps
available on this ContiguousSubgraph
.
Requires the underlying graph to implement properties::Maps
.
Source§impl<G: SwhGraphWithProperties<Persons: OptPersons>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, NoPersons, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhGraphWithProperties<Persons: OptPersons>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, NoPersons, CONTENTS, STRINGS, LABELNAMES>
Sourcepub fn with_persons(
self,
) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, ContiguousSubgraphPersons<G, N>, CONTENTS, STRINGS, LABELNAMES>
pub fn with_persons( self, ) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, ContiguousSubgraphPersons<G, N>, CONTENTS, STRINGS, LABELNAMES>
Makes OptPersons
available on this ContiguousSubgraph
.
Requires the underlying graph to implement OptPersons
.
Source§impl<G: SwhGraphWithProperties<Strings: OptStrings>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, NoStrings, LABELNAMES>
impl<G: SwhGraphWithProperties<Strings: OptStrings>, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, NoStrings, LABELNAMES>
Sourcepub fn with_strings(
self,
) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, ContiguousSubgraphStrings<G, N>, LABELNAMES>
pub fn with_strings( self, ) -> ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, ContiguousSubgraphStrings<G, N>, LABELNAMES>
Makes OptStrings
available on this ContiguousSubgraph
.
Requires the underlying graph to implement OptStrings
.
Source§impl<G: SwhGraphWithProperties<Timestamps: OptTimestamps>, N: ContractionBackend, MAPS: MaybeMaps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, NoTimestamps, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhGraphWithProperties<Timestamps: OptTimestamps>, N: ContractionBackend, MAPS: MaybeMaps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> ContiguousSubgraph<G, N, MAPS, NoTimestamps, PERSONS, CONTENTS, STRINGS, LABELNAMES>
Sourcepub fn with_timestamps(
self,
) -> ContiguousSubgraph<G, N, MAPS, ContiguousSubgraphTimestamps<G, N>, PERSONS, CONTENTS, STRINGS, LABELNAMES>
pub fn with_timestamps( self, ) -> ContiguousSubgraph<G, N, MAPS, ContiguousSubgraphTimestamps<G, N>, PERSONS, CONTENTS, STRINGS, LABELNAMES>
Makes OptTimestamps
available on this ContiguousSubgraph
.
Requires the underlying graph to implement OptTimestamps
.
Source§impl<G: SwhGraphWithProperties, N: ContractionBackend> ContiguousSubgraph<G, N, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>
impl<G: SwhGraphWithProperties, N: ContractionBackend> ContiguousSubgraph<G, N, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>
Sourcepub fn new_from_contraction(graph: G, contraction: Contraction<N>) -> Self
pub fn new_from_contraction(graph: G, contraction: Contraction<N>) -> Self
Creates a new ContiguousSubgraph
by keeping only nodes in the Contraction
Source§impl<G: SwhGraph, N: ContractionBackend> ContiguousSubgraph<G, N, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>
impl<G: SwhGraph, N: ContractionBackend> ContiguousSubgraph<G, N, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>
Sourcepub fn underlying_graph(&self) -> &G
pub fn underlying_graph(&self) -> &G
Returns the graph this graph is a subgraph of
Use Self::contraction
to get the mapping between both sets of node ids
Sourcepub fn contraction(&self) -> &Contraction<N>
pub fn contraction(&self) -> &Contraction<N>
The structure used to match the underlying graph’s node ids with this graph’s node ids
Source§impl<G: SwhGraphWithProperties> ContiguousSubgraph<G, EfSeqDict, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>
impl<G: SwhGraphWithProperties> ContiguousSubgraph<G, EfSeqDict, NoMaps, NoTimestamps, NoPersons, NoContents, NoStrings, NoLabelNames>
Sourcepub fn new_from_noncontiguous_graph(graph: G) -> Selfwhere
G: Sync,
pub fn new_from_noncontiguous_graph(graph: G) -> Selfwhere
G: Sync,
Creates a new ContiguousSubgraph
from an existing graph with “holes”.
Trait Implementations§
Source§impl<G: SwhBackwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhBackwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhBackwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhBackwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
type Predecessors<'succ> = TranslatedSuccessors<'succ, <<G as SwhBackwardGraph>::Predecessors<'succ> as IntoIterator>::IntoIter, N> where Self: 'succ
Source§fn predecessors(&self, node_id: NodeId) -> Self::Predecessors<'_>
fn predecessors(&self, node_id: NodeId) -> Self::Predecessors<'_>
IntoIterator
over the predecessors of a node.Source§impl<G: SwhForwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhForwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhForwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhForwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
type Successors<'succ> = TranslatedSuccessors<'succ, <<G as SwhForwardGraph>::Successors<'succ> as IntoIterator>::IntoIter, N> where Self: 'succ
Source§fn successors(&self, node_id: NodeId) -> Self::Successors<'_>
fn successors(&self, node_id: NodeId) -> Self::Successors<'_>
IntoIterator
over the successors of a node.Source§impl<G: SwhGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
Source§fn is_transposed(&self) -> bool
fn is_transposed(&self) -> bool
ori->snp->rel,rev->dir->cnt
direction
(with a few dir->rev
arcs)Source§fn has_node(&self, node_id: NodeId) -> bool
fn has_node(&self, node_id: NodeId) -> bool
Source§fn num_nodes_by_type(&self) -> Result<HashMap<NodeType, usize>>
fn num_nodes_by_type(&self) -> Result<HashMap<NodeType, usize>>
Source§fn num_arcs_by_type(&self) -> Result<HashMap<(NodeType, NodeType), usize>>
fn num_arcs_by_type(&self) -> Result<HashMap<(NodeType, NodeType), usize>>
Source§fn has_arc(&self, src_node_id: NodeId, dst_node_id: NodeId) -> bool
fn has_arc(&self, src_node_id: NodeId, dst_node_id: NodeId) -> bool
src_node_id
to dst_node_id
.Source§fn actual_num_nodes(&self) -> Result<usize>
fn actual_num_nodes(&self) -> Result<usize>
Source§fn iter_nodes<'a>(
&'a self,
pl: impl ProgressLog + 'a,
) -> impl Iterator<Item = NodeId> + 'a
fn iter_nodes<'a>( &'a self, pl: impl ProgressLog + 'a, ) -> impl Iterator<Item = NodeId> + 'a
Source§fn par_iter_nodes<'a>(
&'a self,
pl: impl ConcurrentProgressLog + 'a,
) -> impl ParallelIterator<Item = NodeId> + 'awhere
Self: Sync,
fn par_iter_nodes<'a>(
&'a self,
pl: impl ConcurrentProgressLog + 'a,
) -> impl ParallelIterator<Item = NodeId> + 'awhere
Self: Sync,
Source§impl<G: SwhGraphWithProperties, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhGraphWithProperties for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhGraphWithProperties, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhGraphWithProperties for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
type Maps = MAPS
type Timestamps = TIMESTAMPS
type Persons = PERSONS
type Contents = CONTENTS
type Strings = STRINGS
type LabelNames = LABELNAMES
fn properties( &self, ) -> &SwhGraphProperties<Self::Maps, Self::Timestamps, Self::Persons, Self::Contents, Self::Strings, Self::LabelNames>
Source§impl<G: SwhLabeledBackwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhLabeledBackwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhLabeledBackwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhLabeledBackwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
type LabeledArcs<'arc> = <G as SwhLabeledBackwardGraph>::LabeledArcs<'arc> where Self: 'arc
type LabeledPredecessors<'node> = TranslatedLabeledSuccessors<'node, <ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> as SwhLabeledBackwardGraph>::LabeledArcs<'node>, <<G as SwhLabeledBackwardGraph>::LabeledPredecessors<'node> as IntoIterator>::IntoIter, N> where Self: 'node
Source§fn untyped_labeled_predecessors(
&self,
node_id: NodeId,
) -> Self::LabeledPredecessors<'_>
fn untyped_labeled_predecessors( &self, node_id: NodeId, ) -> Self::LabeledPredecessors<'_>
IntoIterator
over the predecessors of a node along with a list of labels
of each arcSource§fn labeled_predecessors(
&self,
node_id: NodeId,
) -> impl Iterator<Item = (usize, impl Iterator<Item = EdgeLabel>)>
fn labeled_predecessors( &self, node_id: NodeId, ) -> impl Iterator<Item = (usize, impl Iterator<Item = EdgeLabel>)>
IntoIterator
over the predecessors of a node along with a list of labels
of each arcSource§impl<G: SwhLabeledForwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhLabeledForwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G: SwhLabeledForwardGraph, N: ContractionBackend, MAPS: MaybeMaps, TIMESTAMPS: MaybeTimestamps, PERSONS: MaybePersons, CONTENTS: MaybeContents, STRINGS: MaybeStrings, LABELNAMES: MaybeLabelNames> SwhLabeledForwardGraph for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
type LabeledArcs<'arc> = <G as SwhLabeledForwardGraph>::LabeledArcs<'arc> where Self: 'arc
type LabeledSuccessors<'node> = TranslatedLabeledSuccessors<'node, <ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> as SwhLabeledForwardGraph>::LabeledArcs<'node>, <<G as SwhLabeledForwardGraph>::LabeledSuccessors<'node> as IntoIterator>::IntoIter, N> where Self: 'node
Source§fn untyped_labeled_successors(
&self,
node_id: NodeId,
) -> Self::LabeledSuccessors<'_>
fn untyped_labeled_successors( &self, node_id: NodeId, ) -> Self::LabeledSuccessors<'_>
IntoIterator
over the successors of a node along with a list of labels
of each arcSource§fn labeled_successors(
&self,
node_id: NodeId,
) -> impl Iterator<Item = (usize, impl Iterator<Item = EdgeLabel>)> + IntoFlattenedLabeledArcsIterator<EdgeLabel>
fn labeled_successors( &self, node_id: NodeId, ) -> impl Iterator<Item = (usize, impl Iterator<Item = EdgeLabel>)> + IntoFlattenedLabeledArcsIterator<EdgeLabel>
IntoIterator
over the successors of a node along with a list of labels
of each arcAuto Trait Implementations§
impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> !Freeze for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> RefUnwindSafe for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>where
MAPS: RefUnwindSafe,
TIMESTAMPS: RefUnwindSafe,
PERSONS: RefUnwindSafe,
CONTENTS: RefUnwindSafe,
STRINGS: RefUnwindSafe,
LABELNAMES: RefUnwindSafe,
G: RefUnwindSafe,
N: RefUnwindSafe,
impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> Send for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> Sync for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> Unpin for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>
impl<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES> UnwindSafe for ContiguousSubgraph<G, N, MAPS, TIMESTAMPS, PERSONS, CONTENTS, STRINGS, LABELNAMES>where
MAPS: UnwindSafe,
TIMESTAMPS: UnwindSafe,
PERSONS: UnwindSafe,
CONTENTS: UnwindSafe,
STRINGS: UnwindSafe,
LABELNAMES: UnwindSafe,
G: RefUnwindSafe,
N: RefUnwindSafe,
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
Source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
Source§impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
impl<T, U> CastableInto<U> for Twhere
U: CastableFrom<T>,
Source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
Source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Source§impl<T> DowncastableFrom<T> for T
impl<T> DowncastableFrom<T> for T
Source§fn downcast_from(value: T) -> T
fn downcast_from(value: T) -> T
Source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
Source§impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
impl<T, U> DowncastableInto<U> for Twhere
U: DowncastableFrom<T>,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.