Closed changpengdiao closed 2 years ago
Hi. Regarding impl FromRow
for tuples – it is only up to arity 12.
This is mentioned in the docs:
// The FromRow trait does not support to-tuple conversion for rows with more than 12 columns,
// but you can do this by hand using row indexing or `Row::take` method:
let row: Row = conn.exec_first("select 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12", ())?.unwrap();
for i in 0..row.len() {
assert_eq!(row[i], Value::Int(i as i64));
}
Note that you can also use frunk to simplify this:
// Another way to handle wide rows is to use HList (requires `mysql_common/frunk` feature)
use frunk::{HList, hlist, hlist_pat};
let query = "select 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15";
type RowType = HList!(u8, u16, u32, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8);
let first_three_columns = conn.query_map(query, |row: RowType| {
// do something with the row (see the `frunk` crate documentation)
let hlist_pat![c1, c2, c3, ...] = row;
(c1, c2, c3)
});
assert_eq!(first_three_columns.unwrap(), vec![(0_u8, 1_u16, 2_u32)]);
mysql version 22.1.0 struct TucPriv with 6 feilds,can run; with 19 feilds,compiler error![1](https://user-images.githubusercontent.com/13061179/174516621-368a8a47-0d81-44cd-b95a-6306f9cc218b.png)