为什么query_map的结果不能打印任何内容?

时间:2017-08-01 16:02:20

标签: rust

我想捕获SQLite null结果并正确打印消息或结果。

我准备一个语句,将结果提取到MyStruct,检查结果是Some还是None(null),如果它是Some打印结果在for循环。

此代码与SomeNone正确匹配,但不会打印任何内容:

let mut stmt = conn.prepare(&query).expect("execute error");
let mut rows = stmt.query_map(&[&par_a, &par_b], |row| {
    MyStruct {
        a: row.get(0),
        b: row.get(1),
        c: row.get(2),
    }
}).expect("query_map error");

match rows.next() {
    Some(_x) => {
        println!("Some");
        for result in rows {
            println!("{:?}", result.unwrap());
        }
    }
    None => println!("The result is empty. Try again."),
}

如果我删除所有match语句并仅将此打印放入循环中,则一切正常:

for result in rows {
     println!("{:?}", result.unwrap());
}

1 个答案:

答案 0 :(得分:1)

丢弃了迭代器的结果

match rows.next() {
    Some(_x) => {

_x表示"我想忽略这个变量,编译器,不要抱怨它"。除非您不想忽略它

Some(row) => {
    println!("Some");
    println!("{:?}", row.unwrap());
}