Use sqlx for compile-time checked queries or diesel for a type-safe ORM to connect to PostgreSQL from Rust.
// Cargo.toml
[dependencies]
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres"] }
tokio = { version = "1", features = ["full"] }
// src/main.rs
use sqlx::postgres::{PgPoolOptions, PgPool};
#[tokio::main]
async fn main() {
let db_url = std::env::var("DATABASE_URL").unwrap_or_else(|_| "postgres://postgres:password@localhost".to_string());
let pool = PgPoolOptions::new()
.max_connections(5)
.connect(&db_url)
.await
.expect("Failed to connect to database");
let row = sqlx::query_scalar("SELECT 'hello'")
.fetch_one(&pool)
.await
.expect("Query failed");
println!("{row}");
}