如何在匹配臂内部重构if语句?

时间:2019-02-20 14:45:41

标签: rust refactoring

我有以下方法:

fn get_error_id(err: CustomError) -> i64 {
    let default_id = 0;
    match err {
        CustomError::Unknown(response) => {
            if response.status == StatusCode::NOT_FOUND {
                404
            } else {
                default_id
            }
        }
        _ => default_id,
    }
}

是否可以将其重构为内联default_id

1 个答案:

答案 0 :(得分:3)

匹配臂可以包含if表达式,因此您可以像这样简化代码:

fn get_error_id(err: CustomError) -> i64 {
    match err {
        CustomError::Unknown(ref r) if r.status == StatusCode::NOT_FOUND => 404,
        _ => 0, // default_id
    }
}