structsy 0.5.2

Simple single file structs database
Documentation
use structsy::{Structsy, StructsyError, StructsyTx};
use structsy_derive::{Persistent, PersistentEmbedded};

#[derive(Persistent, Debug, PartialEq)]
struct MyData {
    #[index(mode = "cluster")]
    name: String,
    address: Address,
}
impl MyData {
    fn new(name: &str, address: Address) -> MyData {
        MyData {
            name: name.to_string(),
            address,
        }
    }
}

#[derive(PersistentEmbedded, Debug, PartialEq)]
struct Address {
    host: String,
    port: u16,
}
impl Address {
    fn new(host: &str, port: u16) -> Address {
        Address {
            host: host.to_string(),
            port,
        }
    }
}

fn main() -> Result<(), StructsyError> {
    let db = Structsy::open("example_embedded.db")?;
    db.define::<MyData>()?;

    let my_data = MyData::new("My Host", Address::new("127.0.0.1", 2424));
    let mut tx = db.begin()?;
    let id = tx.insert(&my_data)?;
    tx.commit()?;

    let mut iter = db.scan::<MyData>()?;
    let (_id, data) = iter.next().unwrap();
    assert_eq!(data.name, "My Host");

    let mut tx = db.begin()?;
    tx.delete(&id)?;
    tx.commit()?;

    let mut iter = db.scan::<MyData>()?;
    assert_eq!(None, iter.next());

    Ok(())
}