write_arrays/
write_arrays.rs1use 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}