rust:如何简化枚举嵌套匹配



我得到了std::result::Result<Row, sqlx::Error>的结果,我想检查是否找到了行。正确的代码:

let sql = "select id,name from tablename LIMIT 0";
let r = sqlx::query_as::<_, Person>(sql).fetch_one(&pool).await;
if let Err(err) = r {
match err {
sqlx::Error::RowNotFound => println!("Not Found!!!"),
_ => (),
}
}

右侧1:

if let Err(err) = r {
if let sqlx::Error::RowNotFound = err {
println!("Not Found!!!");
}
}

右路2:

r.map_err(|err| if let sqlx::Error::RowNotFound = err {
println!("Not Found!!!");
});

有更简单的方法吗?

您也可以这样匹配:

match r {
Err(sqlx::Error::RowNotFound) => println!("Not Found!!!"),
_ => (),
}

你也可以看看比赛后卫

最新更新