Skip to main content

embed_diagonal_into_uninit

Function embed_diagonal_into_uninit 

Source
pub fn embed_diagonal_into_uninit<T>(
    output: &mut [MaybeUninit<T>],
    input: &[T],
    shape: &[usize],
    axis: usize,
    insert_axis: usize,
    zero: T,
) -> Result<(), StridedError>
where T: Copy + MaybeSendSync + 'static,
Expand description

Embed a dense column-major input on a diagonal in a new axis.

Insert an axis of size shape[axis] at insert_axis. Its coordinate must equal the original axis coordinate; other entries receive zero. Output is fully initialized without reading its previous contents. The active execution policy governs fill and strided diagonal-copy traversal.

§Examples

use core::mem::MaybeUninit;
let mut out = [MaybeUninit::uninit(); 4];
strided_basic::embed_diagonal_into_uninit(&mut out, &[3, 5], &[2], 0, 1, 0).unwrap();
// SAFETY: successful full-overwrite kernel initialized every element.
assert_eq!(out.map(|v| unsafe { v.assume_init() }), [3, 0, 0, 5]);

§Errors

Returns InvalidAxis, ShapeMismatch, or OffsetOverflow for invalid axes, lengths or unrepresentable layouts. Destination layout validation may return NonInjectiveOutputLayout if injectivity cannot be established.