首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在rust中,如何定义一个值为函数结果的全局变量/常量?

在rust中,如何定义一个值为函数结果的全局变量/常量?
EN

Stack Overflow用户
提问于 2018-05-28 19:29:55
回答 1查看 5.2K关注 0票数 3

我有一个不带参数的函数,它构建并返回一个Vec,相应的结果总是相同的。我只想调用该函数一次,并将其结果存储在程序中的所有函数都可以访问的全局变量或常量中。我该怎么做呢?我的第一个尝试是尝试定义一个conststatic,但这是不允许的:

代码语言:javascript
复制
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也不起作用。我该怎么办?是的,错误消息说我可以在晚上使用,但我不想这样做,我更喜欢使用该语言的规范版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-28 19:31:38

这取决于你的情况。

如果你依赖稳定的编译器,你最好的选择就是lazy_static机箱。

如果您愿意使用夜间编译器做一些实验,您可以尝试const fn feature。但请注意,const fn可以做的事情有一定的限制。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50565397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档