pub struct ProgArray {
pub elem_ty: Ty,
pub elem_words: usize,
pub slot: FieldSlot,
pub home: Home,
pub rand: bool,
pub prop_index: Option<usize>,
pub elem_domain: Option<Vec<BigUint>>,
pub assoc: bool,
}Expand description
A dynamic array or queue property of a Program (LRM 18.4, 18.5.7).
Fields§
§elem_ty: TyElement type (the solver’s 2-state view of it).
elem_words: usize64-bit words per stored element (ceil(2 * width / 64), 4-state packed:
the same layout the collection store and codegen use).
slot: FieldSlotWhere the collection handle lives, as an offset into Self::home.
home: HomeThe object Self::slot is an offset into.
rand: boolWhether the property is rand. A non-rand array a constraint reads
is state.
prop_index: Option<usize>As ProgVar::prop_index; one rand_mode bit covers the whole array.
elem_domain: Option<Vec<BigUint>>The enum values every element must be one of, for an array of an enum
type (LRM 6.19.3: a rand enum is limited to its named values).
assoc: boolAn associative array: its keys (hence its size) are never randomized, only the values at the keys it already has (LRM 18.4), so the solved values are written back by key instead of resizing a sequence.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ProgArray
impl<'de> Deserialize<'de> for ProgArray
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ProgArray
impl StructuralPartialEq for ProgArray
Auto Trait Implementations§
impl Freeze for ProgArray
impl RefUnwindSafe for ProgArray
impl Send for ProgArray
impl Sync for ProgArray
impl Unpin for ProgArray
impl UnsafeUnpin for ProgArray
impl UnwindSafe for ProgArray
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.