18 releases

0.2.3 Jan 1, 2023
0.2.1 Dec 28, 2022
0.2.0 Dec 7, 2021
0.1.14 Nov 21, 2021
0.1.7 Sep 30, 2021

#179 in Database implementations

Download history 115/week @ 2025-10-13 140/week @ 2025-10-20 144/week @ 2025-10-27 127/week @ 2025-11-03 121/week @ 2025-11-10 152/week @ 2025-11-17 119/week @ 2025-11-24 99/week @ 2025-12-01 128/week @ 2025-12-08 112/week @ 2025-12-15 98/week @ 2025-12-22 104/week @ 2025-12-29 133/week @ 2026-01-05 145/week @ 2026-01-12 124/week @ 2026-01-19 95/week @ 2026-01-26

510 downloads per month
Used in 3 crates (2 directly)

MIT license

125KB
2K SLoC

typed-sled - a database build on top of sled

API

sled is a high-performance embedded database with an API that is similar to a BTreeMap<[u8], [u8]>.
typed-sled builds on top of sled and offers an API that is similar to a BTreeMap<K, V>, where K and V are user defined types.

Example

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
struct SomeValue(u32);

// Creating a temporary sled database
let db = sled::Config::new().temporary(true).open().unwrap();

// The id is used by sled to identify which Tree in the database (db) to open
let tree = typed_sled::Tree::<String, SomeValue>::open(&db, "unique_id");

// insert and get, similar to std's BTreeMap
tree.insert(&"some_key".to_owned(), &SomeValue(10))?;

assert_eq!(tree.get(&"some_key".to_owned())?, Some(SomeValue(10)));
Ok(())


features

Multiple features for common use cases are available:

  • Search engine for searching through a tree's keys and values by using tantivy.
  • Automatic key generation.
  • Custom (de)serialization. By default bincode is used for (de)serialization, however custom (de)serializers are supported, making zero-copy or lazy (de)serialization possible.
  • Converting one typed Tree to another typed Tree with different key and value types.

Dependencies

~1.6–7.5MB
~125K SLoC