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 theEnvOpenOptions
struct. - serde default
- 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