Crate sqlite_tiny

Source
Expand description

License BSD-2-Clause License MIT AppVeyor CI docs.rs crates.io Download numbers dependency status

§sqlite-tiny

Welcome to sqlite-tiny 🎉

This crate is minimalistic SQLite library crate which ships the amalgamation variant and provides a tiny Rust API. If you just want the embedded SQLite library plus the generated C bindings, you can disable the api-feature (enabled by default).

§Performance Considerations

For the sake of simplicity, this crate operates under the following assumption: malloc is cheap. To keep the code clean and readable, we are quite liberal with allocating memory and copying data to avoid overly complex life-time juggling.

Some locations where we do this are (non-exhaustive):

  • Binding values: Since some values require a temporary intermediate representation before they can be bound, and statements should be able to outlive a passed argument, we instruct SQLite to copy the values into an internal buffer
  • Reading values: To avoid lifetime troubles, we always copy a value from a row/column out of the SQLite context into Rust-managed memory immediately on access

§Distriuted SQLite Version

For simplicity, this crate does not link to external SQLite versions, but exclusively builds and embeds the amalgamation in the dist-folder. For more information see dist/README.md.

Re-exports§

pub use api::sqlite::Sqlite;

Modules§

api
A tiny, Rust-native API to the embedded SQLite library
error
Implements the crate’s error type
ffi
FFI bindings to the shipped sqlite variant

Macros§

err
Creates a new error

Functions§

version
Returns the semver tuple for the distributed sqlite version as (major, minor, patch)-tuple