6个版本 (破坏性)

0.5.1 2024年2月26日
0.5.0 2023年11月25日
0.4.0 2023年4月2日
0.3.0 2022年9月16日
0.1.0 2022年4月25日

#127 in 异步

Download history 3422/week @ 2024-03-14 2751/week @ 2024-03-21 2570/week @ 2024-03-28 2308/week @ 2024-04-04 2634/week @ 2024-04-11 2181/week @ 2024-04-18 1684/week @ 2024-04-25 1908/week @ 2024-05-02 1432/week @ 2024-05-09 1755/week @ 2024-05-16 1620/week @ 2024-05-23 1506/week @ 2024-05-30 1594/week @ 2024-06-06 2470/week @ 2024-06-13 2061/week @ 2024-06-20 1379/week @ 2024-06-27

7,802 每月下载量
用于 9 crates

MIT 许可证

25KB
406

License Crates.io Docs - Stable

tokio-rusqlite

rusqlite库的异步处理程序。

用法

use tokio_rusqlite::{params, Connection, Result};

#[derive(Debug)]
struct Person {
    id: i32,
    name: String,
    data: Option<Vec<u8>>,
}

#[tokio::main]
async fn main() -> Result<()> {
    let conn = Connection::open_in_memory().await?;

    let people = conn
        .call(|conn| {
            conn.execute(
                "CREATE TABLE person (
                    id    INTEGER PRIMARY KEY,
                    name  TEXT NOT NULL,
                    data  BLOB
                )",
                [],
            )?;

            let steven =
                Person {
                    id: 1,
                    name: "Steven".to_string(),
                    data: None,
                };

            conn.execute(
                "INSERT INTO person (name, data) VALUES (?1, ?2)",
                params![steven.name, steven.data],
            )?;

            let mut stmt = conn.prepare("SELECT id, name, data FROM person")?;
            let people = stmt
                .query_map([], |row| {
                    Ok(Person {
                        id: row.get(0)?,
                        name: row.get(1)?,
                        data: row.get(2)?,
                    })
                })?
                .collect::<std::result::Result<Vec<Person>, rusqlite::Error>>()?;

            Ok(people)
        })
        .await?;

    for person in people {
        println!("Found person {person:?}");
    }

    conn.close().await?;
    Ok(())
}

安全性

此crate使用#![forbid(unsafe_code)] 确保所有内容都在100%安全的Rust中实现。

许可证

此项目采用MIT许可证

依赖项

~25MB
~471K SLoC