#storage #persistent #data

crio

An easy to use persistent data storage library

24 releases (5 stable)

2.0.5 Jun 28, 2022
2.0.3 Jun 13, 2022
1.0.1 Mar 31, 2022
0.4.5 Mar 30, 2022
0.1.6 Mar 24, 2022

#581 in Data structures

MIT license

14KB
163 lines

Persistent Data Container

An easy to use persistent data storage library. Integrates well with serde.

Usage

use crio::Client;
use serde_derive::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
struct Message {
    id: usize,
    message: String,
}

let msg1 = Message {
    id: 1,
    message: "Hello there, you suck".to_string(),
};
let msg2 = Message {
    id: 2,
    message: "No you".to_string(),
};
let msg3 = Message {
    id: 3,
    message: "You both suck".to_string(),
};
let messages = vec![msg1, msg2, msg3];
let client: Client<Message> = Client::new("messages", false)?; // If no file is found, a new empty file is created.
client.write_many(&messages)?; // If no file is found, a new file is created and then written to. Append is set to false such that it overwrites any previous value stored on the same file
let returned_messages = client.load()?;
if let Some(data) = returned_messages {
    assert_eq!(messages, data);
} else {
    panic!("File is empty");
}

Dependencies

~0.9–1.5MB
~33K SLoC