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<'_>
impl MidSearchContext<'_>
Sourcepub fn add_var(
&mut self,
name: &str,
domain: VarDomain,
) -> Result<(), MinionError>
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.
Sourcepub fn add_constraint(
&mut self,
constraint: Constraint,
) -> Result<(), MinionError>
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> 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
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