pub fn erased_zip_into_uninit(
dtype: KernelDType,
op: ErasedZipOp,
ctx: &ExecContext,
dest: &mut ErasedRawStridedUninitMut<'_>,
lhs: &ErasedRawStridedPtr<'_>,
rhs: &ErasedRawStridedPtr<'_>,
) -> Result<()>Expand description
Apply one runtime-selected binary operation into uninitialized storage.
The dtype contract matches erased_zip_into.
Signed-integer divide and remainder scan the divisor before any write and
return StridedError::IntegerDivisionByZero when it contains zero; all
other integer arithmetic wraps. Real maximum/minimum propagate NaN.
§Examples
use core::mem::MaybeUninit;
use strided_kernel::{
erased_zip_into_uninit, ErasedRawStridedPtr, ErasedRawStridedRef,
ErasedRawStridedUninitMut, ErasedZipOp, ExecContext, KernelDType,
};
let lhs = [i32::MAX, 7];
let rhs = [1_i32, 2];
let lhs = ErasedRawStridedRef::from_slice(&lhs, &[2], &[1], 0).unwrap();
let rhs = ErasedRawStridedRef::from_slice(&rhs, &[2], &[1], 0).unwrap();
let mut out = [MaybeUninit::<i32>::uninit(); 2];
let mut dest = ErasedRawStridedUninitMut::from_uninit_slice(&mut out, &[2], &[1], 0).unwrap();
erased_zip_into_uninit(
KernelDType::I32,
ErasedZipOp::Add,
&ExecContext::serial(),
&mut dest,
&ErasedRawStridedPtr::from_ref(&lhs),
&ErasedRawStridedPtr::from_ref(&rhs),
)
.unwrap();
// SAFETY: a successful call initializes every reachable element.
assert_eq!(unsafe { [out[0].assume_init(), out[1].assume_init()] }, [i32::MIN, 9]);§Errors
Returns a typed StridedError for dtype, shape, output-layout, overlap,
unsupported dtype/op contracts, or an integer zero divisor. Validation
completes before any write.