在Rust中将i32类型向量转换为MyEnum枚举类型向量的方法
实现convert函数的解决方案
你可以利用Rust的迭代器功能,通过map将每个i32元素包装为MyEnum::Int变体,再用collect收集成目标向量,代码实现如下:
pub enum MyEnum { Int(i32), Float(f32) } fn convert(my_vec: Vec<i32>) -> Vec<MyEnum> { my_vec.into_iter().map(|num| MyEnum::Int(num)).collect() }
代码说明
into_iter():获取向量的所有权迭代器,避免不必要的拷贝map(|num| MyEnum::Int(num)):将每个i32元素转换为MyEnum::Int枚举变体collect():自动将迭代器转换为Vec<MyEnum>类型(函数返回值已明确指定,Rust可完成类型推导)
如果你偏好更直观的循环写法,也可以手动遍历并构建结果向量:
fn convert(my_vec: Vec<i32>) -> Vec<MyEnum> { let mut result = Vec::new(); for num in my_vec { result.push(MyEnum::Int(num)); } result }
内容的提问来源于stack exchange,提问作者crispy
相关产品推荐
相关产品推荐

