You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust中如何使用match匹配处理Result<>类型的函数返回值

完全可以,match 是 Rust 处理 Result 枚举最原生也最常用的方式,刚好可以满足你「成功走业务逻辑、失败走错误处理」的需求。

你可以把示例代码中注释为 // here 的位置替换为如下逻辑:

match get_pokemon(&args[1]).await {
    // 匹配成功分支,拿到返回的字符串内容
    Ok(body) => {
        // 注意:parse_response 是异步函数,需要加 .await 才能拿到最终的 Pokemon 实例
        let pokemon = parse_response(body).await;
        // 这里写请求成功后的业务逻辑,比如打印宝可梦信息等
        println!("宝可梦数据获取完成");
    }
    // 匹配失败分支,拿到错误信息
    Err(err) => {
        // 这里写自定义错误处理逻辑,比如打印错误、上报、优雅退出等
        eprintln!("请求宝可梦接口失败: {}", err);
        std::process::exit(1);
    }
}

如果你的场景不需要精细化处理错误分支,也可以用更简洁的 if let 语法:

if let Ok(body) = get_pokemon(&args[1]).await {
    let pokemon = parse_response(body).await;
    // 成功逻辑
} else {
    // 失败默认处理
    eprintln!("请求失败");
}

额外提一个现有代码的小问题:你定义的 parse_response 是异步函数,原代码直接调用没有加 .await,会导致拿到的是 Future 实例而非 Pokemon 结构体,运行时会报错,上面的示例代码已经修正了这个问题。

内容的提问来源于stack exchange,提问作者dxbednarczyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:57:04