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

Rust如何拆分并展平迭代器?求等效merge_map的惯用实现

Rust中实现元素拆分合并与反向过滤的惯用方式
  • 关于你说的类似merge_map的拆分合并操作:直接用flat_map就行,这就是Rust里做这种“把每个元素生成的子迭代器展开合并”的惯用方法。比如你要实现的需求,代码可以这么写:

    let word_list = vec!["a".to_string(), "b.c".to_string(), "d".to_string()];
    // 得到&str类型的结果集合
    let result: Vec<&str> = word_list.iter().flat_map(|s| s.split('.')).collect();
    // 如果需要String类型的结果,就加上一步转换:
    // let result: Vec<String> = word_list.iter().flat_map(|s| s.split('.').map(|part| part.to_string())).collect();
    

    flat_map会自动把每个字符串split后产生的子迭代器里的元素逐个平铺到最终集合,正好能把输入["a","b.c","d"]转换成["a","b","c","d"]。

  • 关于filter的反向操作:Rust里没有专门的“反filter”方法,惯用方式就是直接在filter的判断条件里取反。比如原来用filter(|x| x.is_empty())保留空元素,反向操作就是filter(|x| !x.is_empty())来移除空元素。

内容的提问来源于stack exchange,提问作者Sidhin S Thomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 14:40:44