Thanks to visit codestin.com
Credit goes to lib.rs

11 releases

Uses new Rust 2024

0.0.1-alpha.12 Apr 27, 2026
0.0.1-alpha.9 Apr 26, 2026
0.0.1-alpha.5 Nov 29, 2025
0.0.1-alpha.3 Sep 30, 2025

#1739 in Database interfaces

Apache-2.0

355KB
7.5K SLoC

squire

crate CI docs Apache 2.0 license

Squire is a crate for embedding SQLite in Rust. It provides a safe, idiomatic Rust interface to the underlying SQLite C API.

⚠️ Squire is under active development, without even a 0.0.1 release yet.

use squire::{Bind, Columns, Connection, Memory};

let connection = Connection::open(Memory)?;

let connection = Connection::builder("./data.sqlite3")
    .read_only()
    .follow_symbolic_links(false)
    .open()?;

let statement = connection.prepare("SELECT id, username, score FROM users WHERE id = ?")?;

let id: squire::RowId = connection.execute("INSERT INTO users VALUES (DEFAULT, ?, ?);", ("boo", 0.69))?;

let user: (i32, String, f64) = statement.bind(id)?.fetch()?;

#[derive(squire::Query)]
#[query = "SELECT * FROM users WHERE id = ?"]
struct GetUser(i64);

#[squire::query]
fn get_user(id: i64) -> Result<User> {
    "SELECT * FROM users WHERE id = :id"
}

db.submit(get_user(101)).await

#[derive(Columns)]
pub struct User {
    pub id: squire::RowId,
    pub username: String,
    pub score: f64,
}

#[derive(Bind)]
#[bind(sequential)]
pub struct InsertUser<'a> {
    pub username: &'a str,
    pub score: f64,
}

Dependencies

~0.6–3.5MB
~59K SLoC