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

如何在Rust中像Go的make()那样声明空切片?

在Rust中创建预分配容量的空Vec(对应Go的make切片写法)

Go中的players := make([]Player, 0, len(player_list))作用是:创建一个长度为0、预分配容量等于player_list长度的空切片,目的是提前预留足够内存,避免后续追加元素时频繁触发内存扩容。

在Rust里,对应的实现是使用Vec::with_capacity方法,它会创建一个空的Vec(长度为0),同时预分配指定大小的内存空间,完全匹配Go代码的意图:

let mut players: Vec<Player> = Vec::with_capacity(player_list.len());

为什么你之前的写法错误?

你尝试的vec!(Player; 0; player_list.len())是错误的用法:

  • Rust的vec!宏没有三参数的形式,正确的重复元素写法是vec!(元素值, 重复次数);
  • 即使写法正确,vec!(Player; 0)也没必要——空Vec不需要创建任何Player实例,我们只需要预分配内存空间,Vec::with_capacity才是做这件事的正确方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:40:47