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

Rust中处理Result匹配绑定代码重复的惯用方法(含binary_search_by_key场景)

问题背景

闭包foo接收一个字符并将其插入已排序向量,foo通过binary_search_by_key确定正确的插入索引。请问以下代码的更惯用写法是什么?

match myvec.binary_search_by_key(&<--snip-->) {
    Ok(idx) => idx,
    Err(idx) => idx,
}
惯用写法

你可以利用Rust的模式合并特性,把两个分支合并成一个,写法更简洁直观:

match myvec.binary_search_by_key(&<--snip-->) {
    Ok(idx) | Err(idx) => idx,
}

另外也可以借助Result的unwrap_or_else方法实现等价逻辑,但在这个场景下,模式合并的可读性会更优:

myvec.binary_search_by_key(&<--snip-->).unwrap_or_else(|idx| idx)

两种写法的行为完全一致——无论binary_search_by_key是找到元素返回Ok(idx),还是未找到元素返回Err(idx),最终都会返回对应的索引值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:22:03