Cargo Features

[dependencies]
heed = { version = "0.20.0", default-features = false, features = ["serde", "read-txn-no-tls", "serde-bincode", "serde-json", "serde-rmp", "preserve_order", "arbitrary_precision", "raw_value", "unbounded_depth", "posix-sem", "mdb_idl_logn_8", "mdb_idl_logn_9", "mdb_idl_logn_10", "mdb_idl_logn_11", "mdb_idl_logn_12", "mdb_idl_logn_13", "mdb_idl_logn_14", "mdb_idl_logn_15", "mdb_idl_logn_16"] }
default = serde, serde-bincode, serde-json

The serde feature makes some types serializable, like the EnvOpenOptions struct.

serde default

Enables bitflags and serde

read-txn-no-tls

The #MDB_NOTLS flag is automatically set on Env opening,
RoTxn and RoCursors implements the Send trait. This allows the user to move RoTxns and RoCursors between threads as read transactions will no more use thread local storage and will tie reader locktable slots to #MDB_txn objects instead of to threads.

According to the LMDB documentation, when this feature is not enabled:
A thread can only use one transaction at a time, plus any child transactions. Each transaction belongs to one thread. [...]
The #MDB_NOTLS flag changes this for read-only transactions.

And a #MDB_BAD_RSLOT error will be thrown when multiple read transactions exists on the same thread

serde-bincode default

Enable the serde en/decoders for bincode, serde_json, or rmp_serde

Enables serde-bincode of heed-types

serde-json default

Enables serde-json of heed-types

serde-rmp

Enables serde-rmp of heed-types

preserve_order

serde_json features

Enables preserve_order of heed-types

arbitrary_precision

Enables arbitrary_precision of heed-types

raw_value

Enables raw_value of heed-types

unbounded_depth

Enables unbounded_depth of heed-types

posix-sem

Whether to tell LMDB to use POSIX semaphores during compilation (instead of the default, which are System V semaphores). POSIX semaphores are required for Apple's App Sandbox on iOS & macOS, and are possibly faster and more appropriate for single-process use. There are tradeoffs for both POSIX and SysV semaphores; which you should look into before enabling this feature. Also, see here: https://github.com/LMDB/lmdb/blob/3947014aed7ffe39a79991fa7fb5b234da47ad1a/libraries/liblmdb/lmdb.h#L46-L69

Enables posix-sem of lmdb-master-sys

mdb_idl_logn_8

These features configure the MDB_IDL_LOGN macro, which determines the size of the free and dirty page lists (and thus the amount of memory allocated when opening an LMDB environment in read-write mode).

Each feature defines MDB_IDL_LOGN as the value in the name of the feature. That means these features are mutually exclusive, and you must not specify more than one at the same time (or the crate will fail to compile).

For more information on the motivation for these features (and their effect), see https://github.com/mozilla/lmdb/pull/2.

Enables mdb_idl_logn_8 of lmdb-master-sys

mdb_idl_logn_9

Enables mdb_idl_logn_9 of lmdb-master-sys

mdb_idl_logn_10

Enables mdb_idl_logn_10 of lmdb-master-sys

mdb_idl_logn_11

Enables mdb_idl_logn_11 of lmdb-master-sys

mdb_idl_logn_12

Enables mdb_idl_logn_12 of lmdb-master-sys

mdb_idl_logn_13

Enables mdb_idl_logn_13 of lmdb-master-sys

mdb_idl_logn_14

Enables mdb_idl_logn_14 of lmdb-master-sys

mdb_idl_logn_15

Enables mdb_idl_logn_15 of lmdb-master-sys

mdb_idl_logn_16

Enables mdb_idl_logn_16 of lmdb-master-sys