https://github.com/zitsen/unqlite-sys.rs
Rust bindings for UnQlite library.
https://github.com/zitsen/unqlite-sys.rs
Last synced: about 1 year ago
JSON representation
Rust bindings for UnQlite library.
- Host: GitHub
- URL: https://github.com/zitsen/unqlite-sys.rs
- Owner: zitsen
- License: apache-2.0
- Created: 2015-12-21T07:42:35.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2017-06-12T05:24:22.000Z (about 9 years ago)
- Last Synced: 2025-04-30T08:11:53.910Z (about 1 year ago)
- Language: C
- Homepage: https://zitsen.github.io/unqlite-sys.rs
- Size: 1.44 MB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# unqlite-sys
Rust bindings for [UnQlite][] library.
[![travis-badge][]][travis] [![release-badge][]][cargo] [![downloads]][cargo]
[![docs-badge][]][docs] [![license-badge][]][cargo]
As its official site says, **UnQlite** is
> An Embeddable NoSQL Database Engine.
Please see [UnQLite C/C++ API Reference][] for full API documents.
## Usage
This crate provides several features for [UnQlite compile-time
options][apidoc-compile]:
* **enable-threads**: equivalent to `UNQLITE_ENABLE_THREADS` enabled.
* **jx9-disable-builtin-func**: equivalent to `JX9_DISABLE_BUILTIN_FUNC` enabled.
* **jx9-enable-math-fuc**: equivalent to `JX9_ENABLE_MATH_FUNC` enabled.
* **jx9-disable-disk-io**: equivalent to `JX9_DISABLE_DISK_IO` enabled.
* **enable-jx9-hash-io**: equivalent to `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`:
```toml
[dependencies.unqlite-sys]
version = "0.3.0"
features = [ "enable-threads" ]
```
For multiple features just add them in toml `features` array.
## Threadsafe
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:
```rust
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 ...
}
}
```
[UnQlite]: http://unqlite.org
[UnQLite C/C++ API Reference]: http://unqlite.org/c_api.html
[travis-badge]: https://img.shields.io/travis/zitsen/unqlite-sys.rs.svg?style=flat-square
[travis]: https://travis-ci.org/zitsen/unqlite-sys.rs
[release-badge]: https://img.shields.io/crates/v/unqlite-sys.svg?style=flat-square
[downloads]: https://img.shields.io/crates/d/unqlite-sys.svg?style=flat-square
[cargo]: https://crates.io/crates/unqlite-sys
[docs-badge]: https://img.shields.io/badge/API-docs-blue.svg?style=flat-square
[docs]: https://zitsen.github.io/unqlite-sys.rs
[license-badge]: https://img.shields.io/crates/l/unqlite-sys.svg?style=flat-square
[apidoc-compile]: http://unqlite.org/c_api_const.html#compile_time