Files
aho_corasick
bigdecimal
bitflags
byteorder
cfg_if
chrono
diesel
associations
connection
expression
expression_methods
macros
migration
mysql
pg
query_builder
query_dsl
query_source
sql_types
sqlite
type_impls
types
diesel_derives
diesel_migrations
env_logger
idna
instant
ipnetwork
itoa
kernel32
libc
libsqlite3_sys
lock_api
log
matches
memchr
migrations_internals
migrations_macros
mysqlclient_sys
num_bigint
num_integer
num_traits
parking_lot
parking_lot_core
percent_encoding
pq_sys
proc_macro2
quickcheck
quote
r2d2
regex
regex_syntax
ryu
scheduled_thread_pool
scopeguard
serde
serde_derive
serde_json
smallvec
syn
thread_id
thread_local
time
tinyvec
tinyvec_macros
unicode_bidi
unicode_normalization
unicode_xid
url
utf8_ranges
uuid
winapi
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use std::io::Write;

use pg::Pg;
use serialize::{self, Output};

/// Helper trait for writing tuples as named composite types
///
/// This trait is essentially `ToSql<Record<ST>>` for tuples.
/// While we can provide a valid body of `to_sql`,
/// PostgreSQL doesn't allow the use of bind parameters for unnamed composite types.
/// For this reason, we avoid implementing `ToSql` directly.
///
/// This trait can be used by `ToSql` impls of named composite types.
///
/// # Example
///
/// ```no_run
/// # #[macro_use]
/// # extern crate diesel;
/// #
/// # #[cfg(feature = "postgres")]
/// # mod the_impl {
/// #     use diesel::pg::Pg;
/// #     use diesel::serialize::{self, ToSql, Output, WriteTuple};
/// #     use diesel::sql_types::{Integer, Text};
/// #     use std::io::Write;
/// #
///     #[derive(SqlType)]
///     #[postgres(type_name = "my_type")]
///     struct MyType;
///
///     #[derive(Debug)]
///     struct MyStruct<'a>(i32, &'a str);
///
///     impl<'a> ToSql<MyType, Pg> for MyStruct<'a> {
///         fn to_sql<W: Write>(&self, out: &mut Output<W, Pg>) -> serialize::Result {
///             WriteTuple::<(Integer, Text)>::write_tuple(
///                 &(self.0, self.1),
///                 out,
///             )
///         }
///     }
/// # }
/// # fn main() {}
/// ```
pub trait WriteTuple<ST> {
    /// See trait documentation.
    fn write_tuple<W: Write>(&self, out: &mut Output<W, Pg>) -> serialize::Result;
}