Skip to content

A reimplementation of LevelDB in Rust (no bindings).

License

Notifications You must be signed in to change notification settings

enmand/leveldb-rs

This branch is 1 commit ahead of, 4 commits behind dermesser/leveldb-rs:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

b783c4c · Sep 1, 2024
Sep 28, 2022
Aug 28, 2024
Sep 1, 2024
Apr 3, 2024
Oct 8, 2017
Sep 14, 2023
Oct 15, 2020
Sep 1, 2024
Jun 8, 2016
Jul 17, 2023
May 17, 2019
Jul 27, 2021

Repository files navigation

leveldb-rs

crates.io

A fully compatible implementation of LevelDB in Rust. (any incompatibility is a bug!)

The implementation is very close to the original; often, you can see the same algorithm translated 1:1, and class (struct) and method names are similar or the same.

NOTE: I do not endorse using this library for any data that you care about. I do care, however, about bug reports.

Status

Working fairly well. Please file an issue if you encounter problems.

Goals

Some of the goals of this implementation are

  • As few copies of data as possible; most of the time, slices of bytes (&[u8]) are used. Owned memory is represented as Vec<u8> (and then possibly borrowed as slice). Zero-copy is not always possible, though, and sometimes simplicity is favored.
  • Correctness -- self-checking implementation, good test coverage, etc. Just like the original implementation.
  • Clarity; commented code, clear structure (hopefully doing a better job than the original implementation).
  • Coming close-ish to the original implementation; clarifying the translation of typical C++ constructs to Rust, and doing a better job at helping understand the internals.

About

A reimplementation of LevelDB in Rust (no bindings).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 99.9%
  • Shell 0.1%