#[macro_use]
extern crate serde_derive;
extern crate mvdb;
use std::path::Path;
use mvdb::Mvdb;
use mvdb::errors::*;
#[derive(Deserialize, Serialize, Debug, Default)]
struct NotADb {
just_one: InnerData,
multiple: Vec<InnerData>,
}
#[derive(Deserialize, Serialize, Debug, Default)]
struct InnerData {
foo: String,
bar: Vec<u8>,
baz: String,
}
fn run() -> Result<()> {
let file = Path::new("demo.json");
let db: Mvdb<NotADb> = Mvdb::from_file_or_default(&file)?;
let y = db.access(|data| {
for i in data.multiple.iter() {
println!("baz: {}", i.baz);
}
data.just_one.foo.clone()
})?;
println!("y: {:?}", y);
let z = "thisisatest".into();
let x = InnerData {
foo: "tacos".into(),
bar: vec![0, 1, 2],
baz: "burritos".into(),
};
db.access_mut(|data: &mut NotADb| {
data.just_one.foo = z;
data.multiple.push(x);
})?;
Ok(())
}
fn main() {
assert!(run().is_ok());
}