An open API service indexing awesome lists of open source software.

https://github.com/kizzycode/sqlite-tiny-rust

A minimalistic SQLite crate which ships the amalgamation variant and provides a tiny Rust API
https://github.com/kizzycode/sqlite-tiny-rust

Last synced: about 2 months ago
JSON representation

A minimalistic SQLite crate which ships the amalgamation variant and provides a tiny Rust API

Awesome Lists containing this project

README

        

[![License BSD-2-Clause](https://img.shields.io/badge/License-BSD--2--Clause-blue.svg)](https://opensource.org/licenses/BSD-2-Clause)
[![License MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![AppVeyor CI](https://ci.appveyor.com/api/projects/status/github/KizzyCode/sqlite-tiny-rust?svg=true)](https://ci.appveyor.com/project/KizzyCode/sqlite-tiny-rust)
[![docs.rs](https://docs.rs/sqlite-tiny/badge.svg)](https://docs.rs/sqlite-tiny)
[![crates.io](https://img.shields.io/crates/v/sqlite-tiny.svg)](https://crates.io/crates/sqlite-tiny)
[![Download numbers](https://img.shields.io/crates/d/sqlite-tiny.svg)](https://crates.io/crates/sqlite-tiny)
[![dependency status](https://deps.rs/crate/sqlite-tiny/latest/status.svg)](https://deps.rs/crate/sqlite-tiny)

# `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](dist/). For more information see [`dist/README.md`](dist/README.md).