diesel_codegen 0.16.1

Custom derive and procedural macros for Diesel
Documentation
use diesel::expression::dsl::sql;
use diesel::*;
use diesel::types::Integer;

use test_helpers::connection;

#[test]
fn named_struct_definition() {
    #[derive(Debug, Clone, Copy, PartialEq, Eq, Queryable)]
    struct MyStruct {
        foo: i32,
        bar: i32,
    }

    let conn = connection();
    let data = select(sql::<(Integer, Integer)>("1, 2")).get_result(&conn);
    assert_eq!(Ok(MyStruct { foo: 1, bar: 2 }), data);
}

#[test]
fn tuple_struct() {
   #[derive(Debug, Clone, Copy, PartialEq, Eq, Queryable)]
   struct MyStruct(#[column_name(foo)] i32, #[column_name(bar)] i32);

   let conn = connection();
   let data = select(sql::<(Integer, Integer)>("1, 2")).get_result(&conn);
   assert_eq!(Ok(MyStruct(1, 2)), data);
}

#[test]
fn tuple_struct_without_column_name_annotations() {
    #[derive(Debug, Clone, Copy, PartialEq, Eq, Queryable)]
    struct MyStruct(i32, i32);

    let conn = connection();
    let data = select(sql::<(Integer, Integer)>("1, 2")).get_result(&conn);
    assert_eq!(Ok(MyStruct(1, 2)), data);
}