-1
我想捕獲SQLite空結果並正確地打印消息或結果。爲什麼query_map的結果不會打印任何內容?
我準備的聲明中,結果解壓到MyStruct
,檢查結果是Some
或None
(空),如果它在for循環Some
打印結果。
此代碼正確匹配Some
或None
,但不顯示任何信息:如果我刪除所有match
報表和只放本刊環路一切
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."),
}
正常工作:
for result in rows {
println!("{:?}", result.unwrap());
}
@twistezo你只調用'next'一次*,所以你只能得到一個結果*。我不清楚爲什麼你認爲你會得到多個。我強烈推薦重讀[* Rust編程語言*,第二版](https://doc.rust-lang.org/stable/book/second-edition/),特別是[控制流程的章節] (https://doc.rust-lang.org/stable/book/second-edition/ch03-05-control-flow.html)(特別是'loop')和[關於迭代器的章節](https:// doc.rust-lang.org/stable/book/second-edition/ch13-02-iterators.html)。您的原始代碼已經遍佈所有內容('for result in rows')。 – Shepmaster