Skip to main content

MidSearchContext

Struct MidSearchContext 

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

Handle for mutating the current search from inside a solution callback.

Callers receive a &mut MidSearchContext for the duration of a single callback invocation and can use it to add fresh variables or new constraints via the underlying minion_newVarMidsearch and minion_addConstraintMidsearch FFI calls. Any variables added this way are tracked so subsequent callbacks’ solution maps include them.

The handle is not Send or Sync — it is only valid for the current callback invocation on the current thread.

Implementations§

Source§

impl MidSearchContext<'_>

Source

pub fn add_var( &mut self, name: &str, domain: VarDomain, ) -> Result<(), MinionError>

Add a fresh variable to the running search.

The variable is branched on as an aux variable at the end of the search order, so subsequent solutions will enumerate its values. It is tracked so its value appears in the solution map of every later callback.

Source

pub fn add_constraint( &mut self, constraint: Constraint, ) -> Result<(), MinionError>

Add a new constraint to the running search.

The constraint is propagated immediately; an immediate propagation wipeout is reported as a MinionError.

Auto Trait Implementations§

§

impl<'a> !Send for MidSearchContext<'a>

§

impl<'a> !Sync for MidSearchContext<'a>

§

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

§

impl<'a> Freeze for MidSearchContext<'a>

§

impl<'a> RefUnwindSafe for MidSearchContext<'a>

§

impl<'a> Unpin for MidSearchContext<'a>

§

impl<'a> UnsafeUnpin for MidSearchContext<'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> 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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 24 bytes