use array_format::{ArrayFile, FileConfig, NoCompression};
use ndarray::Array;
#[tokio::main]
async fn main() {
let mut file = ArrayFile::create_memory(FileConfig::new(NoCompression))
.await
.unwrap();
file.define_array::<i32>("values", vec!["x".into()], vec![4], None, None)
.unwrap();
let v1 = Array::from_vec(vec![1i32, 2, 3, 4]).into_dyn();
file.write_array("values", vec![0], v1.view())
.await
.unwrap();
file.flush().await.unwrap();
println!("after flush 1: {} layer(s)", file.num_layers());
let patch = Array::from_vec(vec![99i32]).into_dyn();
file.write_array("values", vec![2], patch.view())
.await
.unwrap();
file.flush().await.unwrap();
println!("after flush 2: {} layer(s)", file.num_layers());
let before = file
.read_array::<i32>("values", vec![], vec![])
.await
.unwrap();
println!("before compact = {:?}", before.as_slice().unwrap());
file.compact().await.unwrap();
println!("after compact: {} layer(s)", file.num_layers());
let after = file
.read_array::<i32>("values", vec![], vec![])
.await
.unwrap();
println!("after compact = {:?}", after.as_slice().unwrap()); assert_eq!(after[[2]], 99);
}