leto 0.43.0

N-dimensional strided arrays, zero-copy views, and storage backends
Documentation
use leto::Array3;

#[test]
fn array_index_fill_map_and_zip_are_value_semantic() {
    let mut values = Array3::from_shape_vec([2, 2, 2], (0..8).collect::<Vec<i32>>())
        .expect("shape matches storage length");

    assert_eq!(values[[0, 0, 0]], 0);
    assert_eq!(values[[1, 1, 1]], 7);

    values[[1, 0, 1]] = 42;
    assert_eq!(values[[1, 0, 1]], 42);

    let doubled = values.mapv(|value| value * 2);
    assert_eq!(doubled[[1, 0, 1]], 84);

    let summed = values.zip_map(&doubled, |left, right| left + right);
    assert_eq!(summed[[1, 0, 1]], 126);

    values.fill(-3);
    assert!(values.iter().all(|&value| value == -3));
}