5 unstable releases
Uses old Rust 2015
0.3.0 | Aug 16, 2016 |
---|---|
0.2.0 | May 15, 2015 |
0.1.3 | Jan 1, 2015 |
0.1.2 | Jan 1, 2015 |
0.1.1 | Nov 22, 2014 |
#1110 in Database interfaces
332 downloads per month
Used in 68 crates
(2 directly)
135KB
2.5K
SLoC
Rust-Sqlite3
Rustic bindings for sqlite3.
Copyright (c) 2014 Dan Connolly
Share and enjoy. LICENSE: MIT.
Documentation, Status
Three layers of API are provided:
mod ffi
provides exhaustive, though unsafe, bindgen bindings forlibsqlite.h
mod core
provides a minimal safe interface to the basic sqlite3 APImod types
providesToSql
/FromSql
traits, and the library provides convenientquery()
andupdate()
APIs.
The API design is perhaps stabilizing, though testing is uneven and I have not used the library beyond trivial integration tests.
TODO
- another thorough read-through of the sqlite API intro,
with unit tests to match; especially...
- unit testing other than the happy-paths
ToSql
/FromSql
can now be implemented by clients, but thetypes
module probably doesn't hit the 80% mark yet; e.g. it's missing uint and &[u8].- investigate test coverage tools for rust
- basic benchmarking
Motivation and Acknowledgements
I was looking into sandstorm, a personal cloud platform with an architecture based on the wonderful capability security paradigm, and I found a rust application, acronymy, that uses the native API rather than the traditional POSIX environment.
I started poring over the code and followed the dependency link to
linuxfood's rustsqlite. I started working on a memory safety
issue etc. but soon found a number of large-scale API design
issues that I wasn't sure how to approach with the upstream
developers. I was also inspired by FromSql
, ToSql
and such
from sfackler's rust-postgres API.
So I started from scratch, using bindgen, Result
(sum types) etc.
Dependencies
~1–1.4MB
~22K SLoC