RustRocks

crates.io badge DOCS.RS badge Linux Build Status macOS Build Status Windows Build Status

Another RocksDB binding for Rust. Documentation

Make RocksDB really rocks!

Installation

Dynamicly link RocksDB:

toml [dependencies] rocks = "0.1"

Static link against RocksDB(with snappy enabled by default):

toml [dependencies.rocks] version = "0.1" default-features = false features = ["static-link"]

With all static features(all compression types):

toml [dependencies.rocks] version = "0.1" default-features = false features = ["full"]

How to compile

Feel free to refer Travic-CI, AppVeyor and Github Actions configuration files.

Static Link

```console $ git submodule update --init --recursive $ cargo test --features static-link -- --test-threads 1 (This will build with snappy as the only compression supported)

$ cargo test --features full -- --test-threads 1 (This will build with all compression supported) ```

Dynamic Link

For macOS(with RocksDB installed via brew):

console $ brew install rocksdb $ cargo test -- --nocapture --test-threads 1

For Linux:

console (install rocksdb via package manager or make & install) $ sudo apt install lld (NOTE: gcc-ld can't handle circular references while linking.) (for more, refer the last section of README) $ RUSTFLAGS="-C link-arg=-fuse-ld=lld" cargo test -- --test-threads 1

Use environment variables if rocksdb is installed to non-default directory:

LD_LIBRARY_PATH=/usr/local/lib LIBRARY_PATH=/usr/local/lib CXXFLAGS=-I/usr/local/include

Ubuntu LTS

RocksDB changes its API often, so rust-rocks use different branch to support Ubuntu LTS.

```console

sudo apt install librocksdb-dev libsnappy-dev ```

You also need lld form official source or http://apt.llvm.org/.

Branches:

Windows

You need VS 2017 or VS 2019, and install RocksDB via vcpkg.

FAQ

Feel free to Open a New Issue.

List current supported compression types

console $ cargo run --example it-works RocksDB: 6.7.3 Compression Supported: - NoCompression - SnappyCompression - ZlibCompression - BZip2Compression - LZ4Compression - LZ4HCCompression - ZSTD - ZSTDNotFinalCompression

Development

Bindgen:

console $ cd rocks-sys $ PATH="/usr/local/opt/llvm/bin:$PATH" make (this will regenerate the bindgen c.rs)

Known bugs

Linking error under Linux

Minor memory leaks

Iterator leaks lifetime

Ref: https://github.com/bh1xuw/rust-rocks/issues/15