rust: Как упростить вложенное соответствие enum? - PullRequest
0 голосов
/ 12 июля 2020

Я получил результат для 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!!!");
});

имеет более простой способ?

1 Ответ

1 голос
/ 12 июля 2020

Вы также можете сопоставить так:

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

Вы также можете посмотреть охранников

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...