[][src]Crate include_sql

include-sql is a macro for using SQL from Rust. When using include-sql you create raw .sql files that contain your queries and then execute them from Rust.


SQL file src/crew.sql

-- name: select_ship_crew
-- Selects ship crew (sailors of a given ship)
SELECT id, name, rank
  FROM sailors
 WHERE ship_id = :ship

To execute this query then in Rust (let's say the database is Postgres)...

use postgres::{ Connection, Result };
use postgres::types::ToSql;
use include_sql::include_sql;


fn print_ship_crew(conn: &Connection, ship_id: i32) -> Result<()> {
    let rows = conn.query(SELECT_SHIP_CREW, using_select_ship_crew_args! {
        ship: &ship_id

    println!("Ship crew:");
    for row in &rows {
        let id : i32     = row.get(0);
        let name: String = row.get(1);
        let rank: String = row.get(2);
        println!(" - {} {}, ID: {}", rank, name, id);


The basis of using SQL employed by include-sql was inspired by Yesql. However include-sql is not a Yesql implemented in Rust as there is one key difference - include-sql assists in using externally defined SQL, but it offloads the actual work to the database interface. Unlike Yesql it does not generate functions that abstract database access.



Includes SQL from the provided file.