write_arrays/
write_arrays.rs

1use std::fs::File;
2use sane_array::{write_sane_io, WriteSane};
3use ndarray::{self, Dimension};
4use ndarray::array;
5use std::io::{Error};
6
7fn with_file<A, F>(path: &str, f: F) -> Result<A, Error>
8where
9    F : Fn(File) -> Result<A, Error> {
10    let file = File::create(path)?;
11    f(file)
12}
13
14fn write_sane_file<A: WriteSane, D: Dimension>(path: &str, arr: ndarray::Array<A, D>)  -> Result<(), Error> {
15    with_file(path, |mut file| {
16        write_sane_io(&mut file, &arr)
17    })
18}
19
20
21fn main() -> std::io::Result<()> {
22    write_sane_file("tests/arrays/simple.sane", array![[1,2],[3,4]])?;
23    write_sane_file("tests/arrays/scalar.sane", ndarray::arr0(1.0 as f32))?;
24    write_sane_file("tests/arrays/vec.sane", ndarray::array![1.0 as f32])?;
25    let f64s: ndarray::Array<f64, _> = ndarray::Array::range(1.0, 8.0, 0.5);
26    let i8s: ndarray::Array<i8, _> = ndarray::Array::from_iter(-5..5);
27    let u8s: ndarray::Array<u8, _> = ndarray::Array::from_iter(0..5);
28    write_sane_file("tests/arrays/f64.sane", f64s)?;
29    write_sane_file("tests/arrays/i8.sane", i8s)?;
30    write_sane_file("tests/arrays/u8.sane", u8s)?;
31    let nested = array![
32        [[1,2], [3,4], [5,6]],
33        [[7,8], [9,10], [11,12]],
34        [[13,14], [15,16], [17,18]],
35        [[19,20], [21,22], [23,24]],
36    ];
37    write_sane_file("tests/arrays/nested.sane", nested)?;
38    Ok(())
39}