pub enum DotReject {
NoLoop,
NoAccumulation,
NoProduct,
NotInt,
NonAffineIndex,
NotAligned,
NotCounted,
ExtraWork,
NotFromZero,
}Expand description
Why a program is not a recognizable dot product — a typed refusal, never a miscompile. Ordered from the least to the most advanced, so a search reports the refusal of the loop that came closest: what a loop’s body computes ranks before whether its counter is provable, so a dot product with an unprovable counter outranks a loop that accumulates nothing.
Variants§
NoLoop
No While counter is less than BOUND loop.
NoAccumulation
No Set s to s + … in the loop body.
NoProduct
The accumulated term is not item _ of A * item _ of B.
NotInt
A product, but not of two declared Seq of Int arrays — the integer dot product the app computes.
NonAffineIndex
An index is not affine in the counter.
NotAligned
The two operands are not 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 dot product.
NotFromZero
The accumulator is not set to zero right before the loop.
Trait Implementations§
Source§impl Ord for DotReject
impl Ord for DotReject
Source§impl PartialOrd for DotReject
impl PartialOrd for DotReject
impl Copy for DotReject
impl Eq for DotReject
impl StructuralPartialEq for DotReject
Auto Trait Implementations§
impl Freeze for DotReject
impl RefUnwindSafe for DotReject
impl Send for DotReject
impl Sync for DotReject
impl Unpin for DotReject
impl UnsafeUnpin for DotReject
impl UnwindSafe for DotReject
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.