use array_format::{ArrayFile, AttributeValue, FileConfig, NoCompression};
const FILE_META: &str = "__file__";
#[tokio::main]
async fn main() {
let mut file = ArrayFile::create_memory(FileConfig::new(NoCompression))
.await
.unwrap();
file.define_array::<u8>(FILE_META, vec![], vec![], None, None)
.unwrap();
file.set_attribute(
FILE_META,
"title",
AttributeValue::String("My Dataset".into()),
)
.unwrap();
file.set_attribute(FILE_META, "schema_version", AttributeValue::Int32(3))
.unwrap();
file.set_attribute(
FILE_META,
"authors",
AttributeValue::StringList(vec!["alice".into(), "bob".into()]),
)
.unwrap();
file.flush().await.unwrap();
let title = file.get_attribute(FILE_META, "title").unwrap();
let version = file.get_attribute(FILE_META, "schema_version").unwrap();
let authors = file.get_attribute(FILE_META, "authors").unwrap();
println!("title = {title:?}");
println!("schema_version = {version:?}");
println!("authors = {authors:?}");
let data_arrays: Vec<String> = file
.list_arrays()
.into_iter()
.map(|m| m.name)
.filter(|name| name != FILE_META)
.collect();
println!("data arrays = {data_arrays:?}");
assert_eq!(title, Some(&AttributeValue::String("My Dataset".into())));
assert!(data_arrays.is_empty());
}