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

#1068 in Data structures

Download history

62 downloads per month

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.7–1.4MB
~30K SLoC