Skip to main content

copy_into_uninit

Function copy_into_uninit 

Source
pub fn copy_into_uninit<T>(
    dest: &mut StridedViewMut<'_, MaybeUninit<T>>,
    src: &StridedView<'_, T>,
) -> Result<(), StridedError>
where T: Copy + MaybeSendSync + 'static,
Expand description

Copy initialized values into a potentially uninitialized destination.

On success every logical destination element is initialized; holes are untouched. Accepts identity views; use map_into for element operations such as conjugation. Sequential strided f32/f64 copies use the permutation engine; other types, contiguous and bounded parallel copies retain map.

§Errors

Returns a shape/rank error for mismatched views, NonInjectiveOutputLayout for overlapping destination elements, or OffsetOverflow for size overflow.

§Examples

use std::mem::MaybeUninit;
use strided_basic::{copy_into_uninit, StridedView, StridedViewMut};
let src = [1.0_f64, 2.0];
let mut dst = [MaybeUninit::uninit(); 2];
copy_into_uninit(
    &mut StridedViewMut::new(&mut dst, &[2], &[1], 0).unwrap(),
    &StridedView::new(&src, &[2], &[1], 0).unwrap(),
).unwrap();
// SAFETY: the successful copy initialized both destination elements.
assert_eq!(unsafe { dst[1].assume_init() }, 2.0);