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

如何在Rust的for循环中根据变量值动态创建对应名称的Vec?

Rust是静态编译语言,变量名需在编译期确定,无法在运行时动态生成vec_0、vec_1这类带序号后缀的变量名,你可以用以下三种常用方案替代:

  • 方案1:嵌套Vec(适合运行时才知道Vec数量的场景)
    把所有生成的Vec存到一个外层的Vec里,用索引访问对应位置的子Vec,实现效果和动态命名的变量完全一致:
// 生成2个容量为100的i32类型Vec,存入外层集合
let mut vecs: Vec<Vec<i32>> = (0..2)
    .map(|_| Vec::with_capacity(100))
    .collect();

// 索引0对应原本的vec_0,索引1对应原本的vec_1
vecs[0].push(10);
vecs[1].push(20);
  • 方案2:固定长度数组(适合编译期就确定Vec数量的场景)
    如果你需要的Vec数量是固定的、写代码时就可以确认,可以直接用数组解构拿到独立的变量:
// 直接生成2个独立的Vec变量
let [vec_0, vec_1]: [Vec<i32>; 2] = [(); 2].map(|_| Vec::with_capacity(100));
  • 方案3:HashMap存储(适合需要用自定义名称区分Vec的场景)
    如果你不想用数字索引,也可以用HashMap给每个Vec设置自定义标识:
use std::collections::HashMap;

let mut vec_map: HashMap<String, Vec<i32>> = (0..2)
    .map(|i| (format!("vec_{i}"), Vec::with_capacity(100)))
    .collect();

// 通过名称获取对应的Vec
vec_map.get_mut("vec_0").unwrap().push(10);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:45:01