[][src]Crate tinydb

NOTE: This project is not affiliated with the Python TinyDB, accidental naming error from when this project was started. See renaming for updates

TinyDB or tinydb is a small-footprint, superfast database designed to be used in-memory and easily dumped/retrieved from a file when it's time to save ✨

This database aims to provide an easy frontend to an efficiant in-memory database (that can also be dumped to a file). It purposefully disallows duplicate items to be sorted due to constraints with hash tables.

Example 🚀

A simple example of adding a structure then querying for it:

use serde::{Serialize, Deserialize};
use tinydb::Database;
#[derive(Debug, Eq, PartialEq, Hash, Serialize, Deserialize, Clone)]
struct ExampleStruct {
    my_age: i32
fn main() {
    let my_struct = ExampleStruct { my_age: 329 };
    let mut my_db = Database::new("query_test", None, false);
    let results = my_db.query_item(|s: &ExampleStruct| &s.my_age, 329);
    assert_eq!(results.unwrap(), &my_struct);


Simply add the following to your Cargo.toml file:

tinydb = "1"

Implementation notes

  • This database does not save 2 duplicated items, either ignoring or raising an error depending on end-user preference.
  • This project is not intended to be used inside of any critical systems due to the nature of dumping/recovery. If you are using this crate as a temporary and in-memory only database, it should preform at a reasonable speed (as it uses HashSet underneath).

Essential operations

Some commonly-used operations for the Database structure.

Create databaseDatabase::new
Create database from fileDatabase::from
Load database or create if non-existantDatabase::auto_from
Query for itemDatabase::query_item
Contains specific itemDatabase::contains
Update/replace itemDatabase::update_item
Delete itemDatabase::remove_item
Dump databaseDatabase::dump_db



Contains various items related to errors inside of TinyDB.



The primary database structure, allowing storage of a generic type with dumping/saving options avalible.