我有一个不带参数的函数,它构建并返回一个Vec
,相应的结果总是相同的。我只想调用该函数一次,并将其结果存储在程序中的所有函数都可以访问的全局变量或常量中。我该怎么做呢?我的第一个尝试是尝试定义一个const
或static
,但这是不允许的:
error[E0015]: calls in statics are limited to struct and enum constructors
--> src/main.rs:2:30
|
2 | static ALL: Vec<Knowledge> = Knowledge::all();
| ^^^^^^^^^^^^^^^^
|
note: a limited form of compile-time function evaluation is available on a nightly compiler via `const fn`
--> src/main.rs:2:30
|
2 | static ALL: Vec<Knowledge> = Knowledge::all();
| ^^^^^^^^^^^^^^^^
在函数外部使用let
也不起作用。我该怎么办?是的,错误消息说我可以在晚上使用,但我不想这样做,我更喜欢使用该语言的规范版本。
发布于 2018-05-28 19:31:38
这取决于你的情况。
如果你依赖稳定的编译器,你最好的选择就是lazy_static机箱。
如果您愿意使用夜间编译器做一些实验,您可以尝试const fn feature。但请注意,const fn可以做的事情有一定的限制。
https://stackoverflow.com/questions/50565397
复制相似问题