13 unstable releases (3 breaking)
new 0.13.2 | Mar 8, 2025 |
---|---|
0.13.1 | Feb 27, 2025 |
0.12.1 | Feb 22, 2025 |
0.11.4 | Feb 7, 2025 |
0.10.2 | Jan 7, 2025 |
#210 in Database interfaces
799 downloads per month
190KB
5K
SLoC

Clorinde
Clorinde generates type-checked Rust interfaces from PostgreSQL queries, with an emphasis on compile-time safety and high performance. It is a fork of Cornucopia that enhances the original with an improved architecture and expanded capabilities.
Key Features
- SQL-first approach with powerful query validation
- Sync and async driver support with optional connection pooling
- Non-allocating row mapping
- Available as both a library and CLI tool
- Close to native
rust-postgres
performance - Complete support for custom PostgreSQL types (composites, domains, and enums)
- Custom Rust type mapping
- One-dimensional array handling for all supported types
- Granular type nullity control
Installation
Install with:
cargo install clorinde
Quick Example
Write your PostgreSQL queries with annotations and named parameters:
-- queries/authors.sql
--! insert_author
INSERT INTO Author
(first_name, last_name, country)
VALUES
(:first_name, :last_name, :country);
--! authors
SELECT first_name, last_name, country FROM Author;
Generate the crate with clorinde
, then you can import it into your project after adding it to your Cargo.toml
:
clorinde = { path = "./clorinde" }
And use the generated crate in your code:
use clorinde::queries::authors::{authors, insert_author};
insert_author.bind(&client, "Agatha", "Christie", "England");
let all_authors = authors().bind(&client).all();
for author in all_authors {
println!("[{}] {}, {}",
author.country,
author.last_name.to_uppercase(),
author.first_name
)
}
For more examples go to the examples directory, or head over to the book to learn more.
MSRV
This crate uses Rust 2021 edition, which requires at least version 1.62.1.
Prior Art
- sqlc (Go) - Generate type-safe code from SQL
- Kanel (TypeScript) - Generate TypeScript types from Postgres
- jOOQ (Java) - Generate typesafe SQL from your database schema
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~17–29MB
~476K SLoC