我想捕获SQLite null结果并正确打印消息或结果。
我准备一个语句,将结果提取到MyStruct
,检查结果是Some
还是None
(null),如果它是Some
打印结果在for循环。
此代码与Some
或None
正确匹配,但不会打印任何内容:
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());
}
答案 0 :(得分:1)
你丢弃了迭代器的结果:
match rows.next() {
Some(_x) => {
_x
表示"我想忽略这个变量,编译器,不要抱怨它"。除非您不想忽略它。
Some(row) => {
println!("Some");
println!("{:?}", row.unwrap());
}