我需要将大量数据存储为不可变变量,每个函数都可以访问它。
最佳方法是使用const DATA: [u64; 1000] = [ 1, 110101, ... ]
,这是可能的,因为我知道这些数据的样子。由于需要创建大量数据,唯一可行的方法是使用函数初始化常量。这当然不适用于Rust,它可能永远不会,因为我需要在初始化函数中运行循环,甚至在每晚构建中都不支持。
应该可以将main
函数中的数据初始化为普通let DATA: [u64; 1000] = ini_fn();
。然后我需要为所有子功能提供对这些数据的引用。那有点不方便;如果函数foo3()
需要DATA
但被foo2()
调用,而foo1()
调用它由main()调用,我需要借用{ {1}}三次,并且只使用一次。
我正在为这个问题寻找一个更合理的解决方案/相当于这个C代码:
DATA
将这些数据放在堆栈上会更好,因为速度很重要,但我希望数据得到缓存,因此这不是优先事项。