A producer of an n-dimensional set of elements; for example an array view, mutable array view or an iterator that yields chunks.
NdProducers are iterable (implement
IntoIterator) but not directly
iterators. This separation is needed because the producer represents
a multidimensional set of items, it can be split along a particular axis for
parallelization, and it has no fixed correspondance to a sequence.
The natural exception is one dimensional producers, like
AxisIter traverses a one dimensional sequence, along an axis, while
producing multidimensional items).
The element produced per iteration.
Return the shape of the producer.
This trait is private to implement; this method exists to make it impossible to implement outside the crate.