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

Download history 159/week @ 2024-07-20 128/week @ 2024-07-27 141/week @ 2024-08-03 105/week @ 2024-08-10 104/week @ 2024-08-17 103/week @ 2024-08-24 153/week @ 2024-08-31 106/week @ 2024-09-07 78/week @ 2024-09-14 147/week @ 2024-09-21 131/week @ 2024-09-28 9/week @ 2024-10-05 79/week @ 2024-10-12 71/week @ 2024-10-19 97/week @ 2024-10-26 85/week @ 2024-11-02

332 downloads per month
Used in 68 crates (2 directly)

MIT license

135KB
2.5K SLoC

Rust-Sqlite3

Rustic bindings for sqlite3.

Copyright (c) 2014 Dan Connolly

Share and enjoy. LICENSE: MIT.

Documentation, Status

View the documentation online

Three layers of API are provided:

  • mod ffi provides exhaustive, though unsafe, bindgen bindings for libsqlite.h
  • mod core provides a minimal safe interface to the basic sqlite3 API
  • mod types provides ToSql/FromSql traits, and the library provides convenient query() and update() APIs.

The API design is perhaps stabilizing, though testing is uneven and I have not used the library beyond trivial integration tests.

Build Status

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 the types 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