Skip to main content

RegularPathConstraint

Struct RegularPathConstraint 

Source
pub struct RegularPathConstraint { /* private fields */ }
Expand description

Constrains two variables to be connected by a regular path expression.

Created by the path! macro. The path expression supports concatenation, alternation (|), transitive closure (+), and reflexive-transitive closure (*). Single-attribute hops use direct index scans; multi-step paths use the WCO join engine for concatenation and BFS for closures.

When the start variable is bound, propose enumerates all reachable endpoints. When the end is bound, confirm checks reachability.

Implementations§

Source§

impl RegularPathConstraint

Source

pub fn new( set: TribleSet, start: Variable<GenId>, end: Variable<GenId>, ops: &[PathOp], ) -> Self

Creates a path constraint from start to end over the given postfix-encoded path operations.

Trait Implementations§

Source§

impl<'a> Constraint<'a> for RegularPathConstraint

Source§

fn variables(&self) -> VariableSet

Returns the set of variables this constraint touches. Read more
Source§

fn estimate(&self, variable: VariableId, binding: &Binding) -> Option<usize>

Estimates the number of candidate values for variable given the current partial binding. Read more
Source§

fn propose( &self, variable: VariableId, binding: &Binding, proposals: &mut Vec<RawValue>, )

Enumerates candidate values for variable into proposals. Read more
Source§

fn confirm( &self, variable: VariableId, binding: &Binding, proposals: &mut Vec<RawValue>, )

Filters proposals to remove values for variable that violate this constraint. Read more
Source§

fn satisfied(&self, _binding: &Binding) -> bool

Returns whether this constraint is consistent with the current binding. Read more
Source§

fn influence(&self, variable: VariableId) -> VariableSet

Returns the set of variables whose estimates may change when variable is bound or unbound. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V