Skip to main content

erased_map_into_uninit

Function erased_map_into_uninit 

Source
pub fn erased_map_into_uninit(
    input_dtype: KernelDType,
    op: ErasedMapOp,
    ctx: &ExecContext,
    dest: &mut ErasedRawStridedUninitMut<'_>,
    input: &ErasedRawStridedPtr<'_>,
) -> Result<()>
Expand description

Apply one runtime-selected unary operation into uninitialized storage.

The dtype contract matches erased_map_into: complex absolute value writes c32 -> f32 and c64 -> f64, bool supports only ErasedMapOp::Conj, and signed integers use wrapping negate/abs.

§Examples

use core::mem::MaybeUninit;
use strided_kernel::{
    erased_map_into_uninit, ErasedMapOp, ErasedRawStridedPtr, ErasedRawStridedRef,
    ErasedRawStridedUninitMut, ExecContext, KernelDType,
};

let input = [-1.5_f64, 2.0];
let input = ErasedRawStridedRef::from_slice(&input, &[2], &[1], 0).unwrap();
let mut out = [MaybeUninit::<f64>::uninit(); 2];
let mut dest = ErasedRawStridedUninitMut::from_uninit_slice(&mut out, &[2], &[1], 0).unwrap();
erased_map_into_uninit(
    KernelDType::F64,
    ErasedMapOp::Abs,
    &ExecContext::serial(),
    &mut dest,
    &ErasedRawStridedPtr::from_ref(&input),
)
.unwrap();
// SAFETY: a successful call initializes every reachable element.
assert_eq!(unsafe { [out[0].assume_init(), out[1].assume_init()] }, [1.5, 2.0]);

§Errors

Returns a typed StridedError for dtype, shape, output-layout, overlap, or unsupported dtype/op contracts. Validation completes before any write.