#[non_exhaustive]pub enum VarDomain {
Bound(i32, i32),
Discrete(i32, i32),
SparseBound(Vec<i32>),
Bool,
}Expand description
Representation of variable domains.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Bound(i32, i32)
A bound variable with domain [lower, upper]. O(1) memory. The solver
only tracks bound changes during search.
Discrete(i32, i32)
A discrete variable with domain [lower, upper]. O(domain size) memory.
Supports arbitrary subset removal. Prefer for domains up to ~1000 values.
SparseBound(Vec<i32>)
Sparse bound variable with an explicit non-contiguous set of domain values.
Unlike Bound/Discrete which take [lower, upper] ranges, this carries the
full domain, e.g. SparseBound(vec![-5, -2, 0, 3, 7]).
Bool
A Boolean variable with domain {0, 1}.
Trait Implementations§
impl Eq for VarDomain
impl StructuralPartialEq for VarDomain
Auto Trait Implementations§
impl Freeze for VarDomain
impl RefUnwindSafe for VarDomain
impl Send for VarDomain
impl Sync for VarDomain
impl Unpin for VarDomain
impl UnsafeUnpin for VarDomain
impl UnwindSafe for VarDomain
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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
Size for each variant:
Bound: 16 bytesDiscrete: 16 bytesSparseBound: 24 bytesBool: 0 bytes