pub enum ZipReject {
NoLoop,
NoAccumulation,
UnsupportedTerm,
NotInt,
NonAffineIndex,
NotAligned,
NotCounted,
ExtraWork,
NotFromZero,
}Expand description
Why a program is not a recognizable zip sum, least to most advanced (what a loop’s body computes ranks before whether its counter is provable).
Variants§
NoLoop
No While counter is less than BOUND loop.
NoAccumulation
No Set s to s + …, plain or under an If, in the loop body.
UnsupportedTerm
The accumulated term reads something other than array elements and constants (the counter, the accumulator, a variable the loop does not fix), uses an operator or calls a function a term does not have, or is ill-typed.
NotInt
A well-typed term, but not an Int over Int arrays — the integer sum the zip-sum app computes.
NonAffineIndex
An index is not affine in the counter.
NotAligned
The arrays are not all read at one unit-stride index of the counter.
NotCounted
The counter is not set to a constant right before the loop, or is not stepped by exactly one.
ExtraWork
The loop body does more than the zip sum.
NotFromZero
The accumulator is not set to zero right before the loop.
Trait Implementations§
Source§impl Ord for ZipReject
impl Ord for ZipReject
Source§impl PartialOrd for ZipReject
impl PartialOrd for ZipReject
impl Copy for ZipReject
impl Eq for ZipReject
impl StructuralPartialEq for ZipReject
Auto Trait Implementations§
impl Freeze for ZipReject
impl RefUnwindSafe for ZipReject
impl Send for ZipReject
impl Sync for ZipReject
impl Unpin for ZipReject
impl UnsafeUnpin for ZipReject
impl UnwindSafe for ZipReject
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,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§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
§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
key and return true if they are equal.