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

Rust中从Option生成含0或1个元素的Vec 有没有更简洁的实现方式

最简洁的实现方式

Rust 中 Option 原生实现了 IntoIterator 特征:None 对应空迭代器,Some(v) 对应仅产出一个元素 v 的迭代器,直接通过迭代器转 Vec 即可,和你原写法的逻辑、性能完全一致:

let o: Option<i32> = ...;
let ve: Vec<i32> = o.into_iter().collect();

其他可选等价写法

如果偏好更直观的函数式风格,也可以用 map_or_else 实现:

let ve: Vec<i32> = o.map_or_else(Vec::new, |n| vec![n]);

如果处理的是 Option 的引用,不想拿走所有权,也可以调整为:

let ve: Vec<i32> = o.iter().cloned().collect();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:54:05