Struct satoxid::constraints::ExactlyK [−][src]
pub struct ExactlyK<I> { pub lits: I, pub k: u32, }
Expand description
This constraint encodes the requirement that exactly k
of lits
are true.
Example
let constraint = ExactlyK { k: 2, lits: vec!["a", "b", "c", "d"].into_iter(), }; encoder.add_constraint(constraint); let model = encoder.solve().unwrap(); let true_lits = model.vars().filter(|l| l.is_pos()).count(); assert!(true_lits == 2);
Fields
lits: I
k: u32
Trait Implementations
impl<V, I> Constraint<V> for ExactlyK<I> where
V: SatVar,
I: Iterator + Clone,
I::Item: Into<VarType<V>> + Debug,
[src]
impl<V, I> Constraint<V> for ExactlyK<I> where
V: SatVar,
I: Iterator + Clone,
I::Item: Into<VarType<V>> + Debug,
[src]impl<V, I> ConstraintRepr<V> for ExactlyK<I> where
V: SatVar,
I: Iterator + Clone,
I::Item: Into<VarType<V>> + Debug,
[src]
impl<V, I> ConstraintRepr<V> for ExactlyK<I> where
V: SatVar,
I: Iterator + Clone,
I::Item: Into<VarType<V>> + Debug,
[src]fn encode_constraint_implies_repr<S: Backend>(
self,
repr: Option<i32>,
solver: &mut S,
varmap: &mut VarMap<V>
) -> i32
[src]
fn encode_constraint_implies_repr<S: Backend>(
self,
repr: Option<i32>,
solver: &mut S,
varmap: &mut VarMap<V>
) -> i32
[src]Encode if Self
is satisified, that repr
is true.
Otherwise repr
is not constrained and can be true or false. Read more
fn encode_constraint_equals_repr<S: Backend>(
self,
repr: Option<i32>,
solver: &mut S,
varmap: &mut VarMap<V>
) -> i32
[src]
fn encode_constraint_equals_repr<S: Backend>(
self,
repr: Option<i32>,
solver: &mut S,
varmap: &mut VarMap<V>
) -> i32
[src]Encode if and only if Self
is satisified, that repr
is true.
fn encode_constraint_repr_cheap<B: Backend>(
self,
repr: Option<i32>,
backend: &mut B,
varmap: &mut VarMap<V>
) -> i32
[src]
fn encode_constraint_repr_cheap<B: Backend>(
self,
repr: Option<i32>,
backend: &mut B,
varmap: &mut VarMap<V>
) -> i32
[src]Encode that repr is true if the constraint is satisfied.
The implementation can decide if it has the semantics of
encode_constraint_implies_repr
or encode_constraint_equals_repr
,
depending on what is cheaper to encode. Read more
Auto Trait Implementations
impl<I> RefUnwindSafe for ExactlyK<I> where
I: RefUnwindSafe,
I: RefUnwindSafe,
impl<I> Send for ExactlyK<I> where
I: Send,
I: Send,
impl<I> Sync for ExactlyK<I> where
I: Sync,
I: Sync,
impl<I> Unpin for ExactlyK<I> where
I: Unpin,
I: Unpin,
impl<I> UnwindSafe for ExactlyK<I> where
I: UnwindSafe,
I: UnwindSafe,
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone,
[src]
impl<T> ToOwned for T where
T: Clone,
[src]type Owned = T
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn to_owned(&self) -> T
[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)
[src]
pub fn clone_into(&self, target: &mut T)
[src]🔬 This is a nightly-only experimental API. (toowned_clone_into
)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more