我迷失在看似简单的事情上:
for row in &conn.query("SELECT r.id, r.name, l.name
FROM rating r LEFT JOIN location l ON r.loc_id = l.id", &[]).unwrap() {
let rating = Rating {
id: row.get(0),
name: row.get(1),
};
}
这部分有效。我不能得到的是第三列(row.get(2)
)。
由于LEFT JOIN
,此行可以具有NULL
值。我已经阅读了文档,这里的相关答案以及许多Google页面,但无法弄明白。
显然,我想以某种方式使用Option<>
。似乎我想使用get_opt()
函数。
在伪代码中,我想要的是:
if row[2] is not null,
then $location = row[2]
else $location = null
我发现了一些有效的方法,但我不确定它是否是正确的解决方案:
let x: Option<f64> = row.get(1);
if let Some(_i) = x {
// do something
}