pub fn batched_outer_product_into_uninit<D, A, B, OpA, OpB>(
dest: &mut StridedViewMut<'_, MaybeUninit<D>>,
lhs: &StridedView<'_, A, OpA>,
rhs: &StridedView<'_, B, OpB>,
lhs_free_ndim: usize,
rhs_free_ndim: usize,
) -> Result<()>where
D: Copy + MaybeSendSync + 'static,
A: Copy + MaybeSendSync + Mul<B, Output = D> + 'static,
B: Copy + MaybeSendSync + 'static,
OpA: ElementOp<A>,
OpB: ElementOp<B>,Expand description
Compute a batched outer product into a fully overwritten uninitialized output.
Rank, shape, destination-injectivity, and reachable-byte overlap validation completes before the first write. Safe Rust borrows already prevent input/output aliasing; the explicit overlap check in the shared broadcast kernel preserves the contract for views produced through unsafe constructors.
Ok(()) means every logical destination element is initialized. An error
occurs before writes. A panic during replay may leave a partially initialized
destination, which remains safe to drop as MaybeUninit<D>.
ยงErrors
Returns a typed rank or shape error for incompatible free/batch dimensions,
StridedError::NonInjectiveOutputLayout for an overlapping output layout,
StridedError::OverlappingInputOutput for aliased storage, or
StridedError::OffsetOverflow when a reachable byte range is not
representable.