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

问题描述 投票:0回答:1

我有以下方法:

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

rust refactoring
1个回答
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
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.