pub enum BoolOp {
Const(bool),
Copy(BitId),
Not(Box<BoolOp>),
Parity {
inputs: Box<[BitId]>,
constant: bool,
},
Xor(Box<[BoolOp]>),
And(Box<[BoolOp]>),
Or(Box<[BoolOp]>),
Select {
condition: Box<BoolOp>,
when_false: Box<BoolOp>,
when_true: Box<BoolOp>,
},
Call {
body: Arc<BoolOp>,
inputs: Box<[BitId]>,
},
}Expand description
Boolean bytecode with absolute register operands, or argument slots within a
shared BoolOp::Call body.
Evaluators must load every
listed operand, including unselected Select arms and duplicate parity
inputs.
Variants§
Const(bool)
Copy(BitId)
Not(Box<BoolOp>)
Parity
Xor(Box<[BoolOp]>)
And(Box<[BoolOp]>)
Or(Box<[BoolOp]>)
Select
Call
Evaluate a shared pure body. Copies in body name positions in inputs;
the invocation binds those positions to registers in its enclosing scope.
Every argument is required, including arguments unused by the body.
Values and timestamps are evaluated independently per call.
Trait Implementations§
impl Eq for BoolOp
impl StructuralPartialEq for BoolOp
Auto Trait Implementations§
impl Freeze for BoolOp
impl RefUnwindSafe for BoolOp
impl Send for BoolOp
impl Sync for BoolOp
impl Unpin for BoolOp
impl UnsafeUnpin for BoolOp
impl UnwindSafe for BoolOp
Blanket Implementations§
§impl<T, BorrowedSelf> BitwiseMutViaBorrow<BorrowedSelf> for T
impl<T, BorrowedSelf> BitwiseMutViaBorrow<BorrowedSelf> for T
fn assign_index(&mut self, index: usize, to: bool)
fn negate_index(&mut self, index: usize)
fn clear_bits(&mut self)
fn assign_random(
&mut self,
bit_count: usize,
random_number_generator: &mut impl RngExt,
)where
BorrowedSelf: BitLength,
§impl<Bits, Other, BorrowedSelf, BorrowedOther> BitwisePairMutViaBorrow<Other, BorrowedSelf, BorrowedOther> for Bits
impl<Bits, Other, BorrowedSelf, BorrowedOther> BitwisePairMutViaBorrow<Other, BorrowedSelf, BorrowedOther> for Bits
fn assign(&mut self, other: &Other)
fn bitxor_assign(&mut self, other: &Other)
fn bitand_assign(&mut self, other: &Other)
fn bitor_assign(&mut self, other: &Other)
§impl<T, Other, BorrowedSelf, BorrowedOther> BitwisePairViaBorrow<Other, BorrowedSelf, BorrowedOther> for T
impl<T, Other, BorrowedSelf, BorrowedOther> BitwisePairViaBorrow<Other, BorrowedSelf, BorrowedOther> for T
§impl<T, BorrowedSelf> BitwiseViaBorrow<BorrowedSelf> for T
impl<T, BorrowedSelf> BitwiseViaBorrow<BorrowedSelf> for T
fn index(&self, index: usize) -> bool
fn weight(&self) -> usize
fn parity(&self) -> bool
fn is_zero(&self) -> bool
fn is_unit(&self, index: usize) -> bool
fn support<'a>(&'a self) -> impl SortedIteratorwhere
BorrowedSelf: 'a,
fn max_support(&self) -> Option<usize>
fn min_support(&self) -> Option<usize>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.