11 releases (breaking)

0.9.0 Oct 24, 2024
0.8.1 May 14, 2024
0.8.0 Mar 31, 2024
0.7.0 Nov 14, 2023
0.1.0 May 30, 2021

#2021 in Database interfaces

Download history 1450/week @ 2024-08-05 1113/week @ 2024-08-12 1277/week @ 2024-08-19 1597/week @ 2024-08-26 1506/week @ 2024-09-02 1458/week @ 2024-09-09 1520/week @ 2024-09-16 1928/week @ 2024-09-23 1731/week @ 2024-09-30 1656/week @ 2024-10-07 2103/week @ 2024-10-14 1341/week @ 2024-10-21 1749/week @ 2024-10-28 2527/week @ 2024-11-04 1453/week @ 2024-11-11 1838/week @ 2024-11-18

7,648 downloads per month
Used in 21 crates (10 directly)

MIT/Apache

92KB
1.5K SLoC

Deadpool for SQLite Latest Version Unsafe forbidden Rust 1.75+

Deadpool is a dead simple async pool for connections and objects of any type.

This crate implements a deadpool manager for rusqlite and provides a wrapper that ensures correct use of the connection inside a separate thread.

Features

Feature Description Extra dependencies Default
rt_tokio_1 Enable support for tokio crate deadpool/rt_tokio_1 yes
rt_async-std_1 Enable support for async-std crate deadpool/rt_async-std_1 no
serde Enable support for serde crate deadpool/serde, serde/derive no
tracing Enable support for tracing by propagating Spans in the interact() calls. Enable this if you use the tracing crate and you want to get useful traces from within interact() calls. deadpool-sync/tracing, tracing no

Example

use deadpool_sqlite::{Config, Runtime};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut cfg = Config::new("db.sqlite3");
    let pool = cfg.create_pool(Runtime::Tokio1).unwrap();
    let conn = pool.get().await.unwrap();
    let result: i64 = conn
        .interact(|conn| {
            let mut stmt = conn.prepare("SELECT 1")?;
            let mut rows = stmt.query([])?;
            let row = rows.next()?.unwrap();
            row.get(0)
        })
        .await??;
    assert_eq!(result, 1);
    Ok(())
}

License

Licensed under either of

at your option.

Dependencies

~24–34MB
~557K SLoC