pub struct HypercubeLinearPropagator { /* private fields */ }Expand description
A Propagator for the hypercube linear constraint.
Trait Implementations§
Source§impl Clone for HypercubeLinearPropagator
impl Clone for HypercubeLinearPropagator
Source§fn clone(&self) -> HypercubeLinearPropagator
fn clone(&self) -> HypercubeLinearPropagator
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for HypercubeLinearPropagator
impl Debug for HypercubeLinearPropagator
Source§impl Propagator for HypercubeLinearPropagator
impl Propagator for HypercubeLinearPropagator
Source§fn propagate(&mut self, context: PropagationContext<'_>) -> Result<(), Conflict>
fn propagate(&mut self, context: PropagationContext<'_>) -> Result<(), Conflict>
Performs propagation with state (i.e., with being able to mutate internal data structures,
as opposed to
Propagator::propagate_from_scratch). Read moreSource§fn propagate_from_scratch(
&self,
context: PropagationContext<'_>,
) -> Result<(), Conflict>
fn propagate_from_scratch( &self, context: PropagationContext<'_>, ) -> Result<(), Conflict>
Performs propagation from scratch (i.e., without relying on updating
internal data structures, as opposed to
Propagator::propagate). Read moreSource§fn notify(
&mut self,
_context: NotificationContext<'_>,
_local_id: LocalId,
_event: OpaqueDomainEvent,
) -> EnqueueDecision
fn notify( &mut self, _context: NotificationContext<'_>, _local_id: LocalId, _event: OpaqueDomainEvent, ) -> EnqueueDecision
Returns whether the propagator should be enqueued for propagation when a [
DomainEvent]
happens to one of the variables the propagator is subscribed to (as registered during
creation with [PropagatorConstructor] using [PropagatorConstructorContext::register]). Read moreSource§fn notify_backtrack(
&mut self,
_context: Domains<'_>,
_local_id: LocalId,
_event: OpaqueDomainEvent,
)
fn notify_backtrack( &mut self, _context: Domains<'_>, _local_id: LocalId, _event: OpaqueDomainEvent, )
This function is called when the effect of a [
DomainEvent] is undone during backtracking
of one of the variables the propagator is subscribed to (as registered during creation with
[PropagatorConstructor] using [PropagatorConstructorContext::register_backtrack]). Read moreSource§fn notify_predicate_id_satisfied(
&mut self,
_context: NotificationContext<'_>,
_predicate_id: PredicateId,
) -> EnqueueDecision
fn notify_predicate_id_satisfied( &mut self, _context: NotificationContext<'_>, _predicate_id: PredicateId, ) -> EnqueueDecision
Returns whether the propagator should be enqueued for propagation when a
Predicate (with
corresponding PredicateId) which the propagator is subscribed to (as registered either
during using PropagationContext::register_predicate or during creation with
[PropagatorConstructor] using [PropagatorConstructorContext::register_predicate]). Read moreSource§fn synchronise(&mut self, _context: NotificationContext<'_>)
fn synchronise(&mut self, _context: NotificationContext<'_>)
Called after backtracking, allowing the propagator to
update its internal data structures given the new variable domains. Read more
Source§fn detect_inconsistency(
&self,
_domains: Domains<'_>,
) -> Option<PropagatorConflict>
fn detect_inconsistency( &self, _domains: Domains<'_>, ) -> Option<PropagatorConflict>
A function which returns
Some with a PropagatorConflict when this propagator can
detect an inconsistency (and None otherwise). Read moreSource§fn lazy_explanation(
&mut self,
_code: u64,
_context: ExplanationContext<'_>,
) -> &[Predicate]
fn lazy_explanation( &mut self, _code: u64, _context: ExplanationContext<'_>, ) -> &[Predicate]
Source§fn log_statistics(&self, _statistic_logger: StatisticLogger)
fn log_statistics(&self, _statistic_logger: StatisticLogger)
Logs statistics of the propagator using the provided
StatisticLogger. Read moreAuto Trait Implementations§
impl Freeze for HypercubeLinearPropagator
impl RefUnwindSafe for HypercubeLinearPropagator
impl Send for HypercubeLinearPropagator
impl Sync for HypercubeLinearPropagator
impl Unpin for HypercubeLinearPropagator
impl UnwindSafe for HypercubeLinearPropagator
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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>
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 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>
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