pub struct PathCountSpec<'a> {
pub rel_types: Vec<Option<&'a str>>,
pub labels: Vec<Option<&'a str>>,
pub vertex_allow: Vec<Option<Vec<NodeId>>>,
}Expand description
Pattern description for Graph::count_linear_paths: an open directed
path of one or two hops, (v0)-[t1]->(v1) or
(v0)-[t1]->(v1)-[t2]->(v2), with an optional relationship type per hop
and an optional label per node variable. None means unconstrained.
rel_types.len() is the hop count (1 or 2); labels.len() is the node
count (hop count plus one). The two-hop count follows Cypher MATCH
relationship-uniqueness semantics: the two relationships must be distinct,
which only constrains self-loop assignments where one edge could fill both
hops.
Fields§
§rel_types: Vec<Option<&'a str>>Relationship type per hop, in path order. Length 1 or 2.
labels: Vec<Option<&'a str>>Label per node variable, in path order. Length is rel_types.len() + 1.
vertex_allow: Vec<Option<Vec<NodeId>>>Optional explicit allow-set of node ids per variable, in path order. A
Some(ids) entry restricts that variable to ids (intersected with its
label, if any); None leaves it unconstrained beyond the label. The
caller resolves these sets by pushing per-vertex property predicates down
into index lookups, so a filtered path count stays a kernel call instead
of materializing rows. An empty vector (the default) means no variable is
constrained, identical to the unfiltered path count.
Trait Implementations§
Source§impl<'a> Clone for PathCountSpec<'a>
impl<'a> Clone for PathCountSpec<'a>
Source§fn clone(&self) -> PathCountSpec<'a>
fn clone(&self) -> PathCountSpec<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more