| Crates.io | no-std-tinybase-derive |
| lib.rs | no-std-tinybase-derive |
| version | 0.1.6 |
| created_at | 2025-10-12 18:31:48.037974+00 |
| updated_at | 2025-10-12 18:35:08.375871+00 |
| description | A tiny embedded database built in Rust. |
| homepage | |
| repository | https://github.com/JSH32/tinybase.git |
| max_upload_size | |
| id | 1879506 |
| size | 14,006 |

#![no_std] edition)TinyBase is an in-memory database built with Rust, based on the sled embedded key-value store. It supports indexing and constraints, allowing you to create efficient queries and ensure data consistency. This fork of TinyBase ports it to low-level applications without access to the Rust standard library.
To use TinyBase in your Rust project, add the following line to your Cargo.toml file's [dependencies] section.:
tinybase = { version = "0.1.5", features = ["derive"] }
Here's a simple example demonstrating how to use TinyBase with a Person struct.
#[derive(Repository, Serialize, Deserialize, Debug, Clone)]
struct Person {
#[index]
#[unique]
pub name: String,
#[index]
pub last_name: String,
pub age: u8,
}
fn main() {
let db = TinyBase::new(Some("./people"), true);
let people = Person::init(&db, "people").unwrap();
init_example_data(&people);
println!(
"Found all the Smith's:\n{:#?}",
people.find_by_last_name("Smith".to_owned()).unwrap()
);
println!(
"Replaced lastnames with Brown:\n{:#?}",
QueryBuilder::new(&people)
.with_condition(ConditionBuilder::or(
ConditionBuilder::by(&people.name, "John".to_string()),
ConditionBuilder::by(&people.last_name, "Jones".to_string()),
))
.update(|record| Person {
last_name: "Brown".to_owned(),
..record
})
.unwrap()
);
}
This example demonstrates how to create a new TinyBase instance, open a table (or create one if it doesn't exist), add indexes and constraints, and perform basic operations (insert/select).
You can view more examples in examples