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

Rust中通过索引函数生成固定长度数组的最地道实现方法

我在实现八叉树时,节点的子节点采用包含8个Box元素的数组表示。我需要创建该数组并通过递归函数完成填充,目前我使用的实现代码如下(写法较为繁琐):

{
    let mut temp = [Box::new(Foo::default()); 8];

    for i in 0..8 {
        temp[i] = Box::new(my_foo_generator(i));
    }
    temp
}

但该实现要求Foo必须实现Default trait,这在当前场景下完全没有必要:既然我已经有通过索引生成Foo实例的函数,完全不需要先初始化数组再覆盖元素。
另外我需要方案具备可扩展性:如果要生成的数组包含50000个元素,使用宏显然不是合适的选择。
更通用的问题是:我能不能不使用可变变量,直接通过接收元素索引作为入参的函数来生成数组?

补充

我后续找到了array_init crate,用法如下:

use array_init::array_init;

{
   let result : [Box<Foo>; 8] 
              = array_init(|i| Box::new(my_foo_generator(i)))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:51:02