#sqlite #sql

rust-sqlite

sqlite3的Rust封装

5个不稳定版本

使用旧的Rust 2015

0.3.0 2016年8月16日
0.2.0 2015年5月15日
0.1.3 2015年1月1日
0.1.2 2015年1月1日
0.1.1 2014年11月22日

#1048数据库接口

Download history 149/week @ 2024-03-15 184/week @ 2024-03-22 294/week @ 2024-03-29 122/week @ 2024-04-05 162/week @ 2024-04-12 152/week @ 2024-04-19 183/week @ 2024-04-26 145/week @ 2024-05-03 161/week @ 2024-05-10 157/week @ 2024-05-17 156/week @ 2024-05-24 123/week @ 2024-05-31 91/week @ 2024-06-07 177/week @ 2024-06-14 160/week @ 2024-06-21 73/week @ 2024-06-28

504 每月下载量
68 Crates 使用(其中2个直接使用)

MIT 许可证

135KB
2.5K SLoC

Rust-Sqlite3

sqlite3的Rust封装。

版权所有 (c) 2014 Dan Connolly

分享并享受。许可证: MIT。

文档,状态

在线查看文档

提供三层API

  • mod ffi 提供了对 libsqlite.h 的详尽但不安全的 bindgen 绑定
  • mod core 提供对基本sqlite3 API的最小安全接口
  • mod types 提供了 ToSql/FromSql 特性,该库还提供了方便的 query()update() API。

API设计可能正在稳定,尽管测试不均匀,并且我没有在超越简单集成测试之外使用该库。

Build Status

待办事项

  • 再次仔细阅读sqlite API简介,并匹配单元测试;特别是...
    • 除了快乐路径以外的单元测试
  • ToSql/FromSql 现在可以被客户端实现,但 types 模块可能还没有达到80%的覆盖率;例如,它缺少uint和 &[u8]。
  • 研究rust的测试覆盖率工具
  • 基本基准测试

动机和致谢

我在研究 sandstorm,一个基于美妙 能力安全范式的个人云平台,并发现了一个使用原生API而不是传统POSIX环境的rust应用程序 acronymy

我开始仔细研究代码,并跟随依赖链接到linuxfood的 rustsqlite。我开始处理一个 内存安全问题 等,但很快就发现了一些大规模API设计问题,我不确定如何与上游开发者合作。我也受到了sfackler的 rust-postgres API中的 FromSqlToSql 等特性的启发。

所以我从头开始,使用 bindgenResult(求和类型)等等。

依赖关系

~1–1.4MB
~22K SLoC