Crates.io | unqlite-sys |
lib.rs | unqlite-sys |
version | 1.1.0 |
source | src |
created_at | 2015-12-21 09:09:36.835019 |
updated_at | 2017-06-12 05:45:49.124895 |
description | Rust `unqlite` bindings. |
homepage | https://github.com/zitsen/unqlite-sys.rs |
repository | https://github.com/zitsen/unqlite-sys.rs.git |
max_upload_size | |
id | 3719 |
size | 2,038,662 |
Rust bindings for UnQlite library.
As its official site says, UnQlite is
An Embeddable NoSQL Database Engine.
Please see UnQLite C/C++ API Reference for full API documents.
This crate provides several features for UnQlite compile-time options:
UNQLITE_ENABLE_THREADS
enabled.JX9_DISABLE_BUILTIN_FUNC
enabled.JX9_ENABLE_MATH_FUNC
enabled.JX9_DISABLE_DISK_IO
enabled.UNQLITE_ENABLE_JX9_HASH_IO
enabled.To provide the same default behavior as original C does, non of the features
is enabled by default. When you want some features, such as enable-threads,
just config in Cargo.toml
:
[dependencies.unqlite-sys]
version = "0.3.0"
features = [ "enable-threads" ]
For multiple features just add them in toml features
array.
Note that even "enable-threads" is featured in your crate, it's not meant that your code is threadsafe.
When UnQLite has been compiled with threading support then the threading mode can be altered at run-time using the unqlite_lib_config() interface together with one of these verbs:
UNQLITE_LIB_CONFIG_THREAD_LEVEL_SINGLE
UNQLITE_LIB_CONFIG_THREAD_LEVEL_MULTI
Platforms others than Windows and UNIX systems must install their own mutex subsystem via unqlite_lib_config() with a configuration verb set to UNQLITE_LIB_CONFIG_USER_MUTEX. Otherwise the library is not threadsafe.
Note that you must link UnQLite with the POSIX threads library under UNIX systems (i.e: -lpthread).
To use in multithread cases, that is threadsafe, you may use like this:
extern crate unqlite_sys as ffi;
use ffi::constants as ffic;
fn main() {
unsafe {
ffi::unqlite_lib_config(ffic::UNQLITE_LIB_CONFIG_THREAD_LEVEL_MULTI);
ffi::unqlite_lib_init();
assert_eq!(ffi::unqlite_lib_is_threadsafe(), 1);
// do stuff ...
}
}