Skip to main content

ExplanationContext

Struct ExplanationContext 

Source
pub struct ExplanationContext<'a> { /* private fields */ }
Expand description

The context that is available when lazily explaining propagations.

See [Propagator] for more information.

Implementations§

Source§

impl<'a> ExplanationContext<'a>

Source

pub fn get_predicate(&mut self, predicate_id: PredicateId) -> Predicate

Source

pub fn working_nogood(&self) -> impl Iterator<Item = Predicate>

Get the current working nogood.

The working nogood does not necessarily contain the predicate that is being explained. However, the explanation will be used to either resolve with the working nogood or minimize it some other way.

Source

pub fn get_trail_position(&self) -> usize

Returns the trail position before which the propagation took place.

For example, if the context is created for explaining a predicate [x >= v] at trail position i, then this method will return i - 1

Trait Implementations§

Source§

impl<'a> Debug for ExplanationContext<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for ExplanationContext<'a>

§

impl<'a> RefUnwindSafe for ExplanationContext<'a>

§

impl<'a> Send for ExplanationContext<'a>

§

impl<'a> Sync for ExplanationContext<'a>

§

impl<'a> Unpin for ExplanationContext<'a>

§

impl<'a> !UnwindSafe for ExplanationContext<'a>

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> Downcast for T
where T: Any,

Source§

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>

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)

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)

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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
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> ProblemSolution for T
where T: HasAssignments,

Source§

fn num_domains(&self) -> usize

Returns the number of defined DomainIds.

Source§

fn get_integer_value<Var>(&self, var: Var) -> i32
where Var: IntegerVariable,

Source§

fn get_literal_value(&self, literal: Literal) -> bool

Source§

impl<T> ReadDomains for T
where T: HasAssignments,

Source§

fn evaluate_predicate(&self, predicate: Predicate) -> Option<bool>

Returns whether the provided Predicate is assigned (either true or false) or is currently unassigned.
Source§

fn evaluate_literal(&self, literal: Literal) -> Option<bool>

Returns whether the provided Literal is assigned (either true or false) or is currently unassigned.
Source§

fn get_holes_at_current_checkpoint<Var>( &self, var: &Var, ) -> impl Iterator<Item = i32>
where Var: IntegerVariable,

Returns the holes in the domain which were created on the current checkpoint.
Source§

fn get_holes<Var>(&self, var: &Var) -> impl Iterator<Item = i32>
where Var: IntegerVariable,

Returns all of the holes (currently) in the domain of var (including ones which were created at previous decision levels).
Source§

fn is_fixed<Var>(&self, var: &Var) -> bool
where Var: IntegerVariable,

Returns true if the domain of the given variable is singleton (i.e., the variable is fixed).
Source§

fn lower_bound<Var>(&self, var: &Var) -> i32
where Var: IntegerVariable,

Returns the lowest value in the domain of var.
Source§

fn lower_bound_at_trail_position<Var>( &self, var: &Var, trail_position: usize, ) -> i32
where Var: IntegerVariable,

Returns the lowest value in the domain of var at the given trail_position. Read more
Source§

fn upper_bound<Var>(&self, var: &Var) -> i32
where Var: IntegerVariable,

Returns the highest value in the domain of var.
Source§

fn upper_bound_at_trail_position<Var>( &self, var: &Var, trail_position: usize, ) -> i32
where Var: IntegerVariable,

Returns the highest value in the domain of var at the given trail_position. Read more
Source§

fn contains<Var>(&self, var: &Var, value: i32) -> bool
where Var: IntegerVariable,

Returns whether the provided value is in the domain of var.
Source§

fn contains_at_trail_position<Var>( &self, var: &Var, value: i32, trail_position: usize, ) -> bool
where Var: IntegerVariable,

Returns whether the provided value is in the domain of var at the given trail_position. Read more
Source§

fn iterate_domain<Var>(&self, var: &Var) -> impl Iterator<Item = i32>
where Var: IntegerVariable,

Returns an Iterator over the values in the domain of the provided var (including the lower-bound and upper-bound values).
Source§

fn is_decision_predicate(&self, predicate: Predicate) -> bool

Returns whether the provided Predicate was posted as a decision (i.e., it was posted as a Predicate without a reason).
Source§

fn is_initial_bound(&self, predicate: Predicate) -> bool

Returns whether the provided Predicate is an initial bound of its domain.
Source§

fn get_checkpoint_for_predicate(&self, predicate: Predicate) -> Option<usize>

If the provided Predicate is true, then this method returns the checkpoint at which it first become true; otherwise, it returns None.
Source§

fn read_trailed_integer(&self, trailed_integer: TrailedInteger) -> i64

Returns the current value of the provided TrailedInteger.
Source§

fn new_trailed_integer(&mut self, initial_value: i64) -> TrailedInteger

Creates a new TrailedInteger assigned to the provided initial_value.
Source§

fn write_trailed_integer(&mut self, trailed_integer: TrailedInteger, value: i64)

Assigns the provided TrailedInteger to the provided value.
Source§

fn get_checkpoint(&self) -> usize

Returns the current checkpoint.
Source§

fn initial_lower_bound(&self, var: DomainId) -> i32

Returns the lowest value in the domain of var at the time of its creation.
Source§

fn initial_upper_bound(&self, var: DomainId) -> i32

Returns the highest value in the domain of var at the time of its creation.
Source§

fn initial_holes(&self, var: DomainId) -> Vec<i32>

Returns all of the holes present at the time of thecreation of var.
Source§

fn number_of_domains(&self) -> u32

Returns the number of currently defined domains.
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