// ------------------------------------------------------------------ // Airone // is a Rust library which provides a simple in-memory, // write-on-update database that is persisted // to an append-only transaction file. // // Copyright © 2022,2023,2024 Massimo Gismondi // // This file is part of Airone. // Airone is free software: you can redistribute it and/or // modify it under the terms of the GNU Affero General Public License // as published by the Free Software Foundation, either version 3 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . // ------------------------------------------------------------------ use airone::{database::settings::save_mode::AutoSave, prelude::*}; use airone_derive::AironeDbDerive; // First define the struct you want to persist // Derive the aironeDbDerive trait on it #[derive(AironeDbDerive, Debug)] struct MyTestStruct { first_field: u32, name: String, an_id: usize } fn main() { // Instantiate an aironedb, containing a vec of MyTestStruct structs let mut db: AironeDb = AironeDb::new().expect(""); // Add a new element. The change is persisted automatically db.push(MyTestStruct { first_field: 0, name: String::from("test_string"), an_id: 57 }) .unwrap(); db.get_mut(0).unwrap().set_an_id(57).unwrap(); db.get_mut(0).unwrap().set_name(String::from("aa")).unwrap(); // // Remove the element db.remove(0).unwrap(); }