[英]What is the difference between a constant and a static variable and which should I choose?
[英]What's the difference between a constant, and regular immutable variable, and a static variable?
我正在学习 Rust,到目前为止,似乎有 3 种声明变量的方法:
const A: u8 = 42;
static A: u8 = 42;
let A: u8 = 42;
我知道你不能有一个可变的const
,如果它不是全部大写,编译器会警告你,当你使用const
时,相当于 C 预编译器将用文字替换A
出现的每个地方42
(它不会有一致的 memory 地址)。
从实际的角度来看,我认为它们的不可变形式之间没有任何区别。 它们中的任何一个都不能突变。 它们都可以完全相同地使用。 有什么不同?
有什么不同?
这个问题可以很容易地简化为const
与不可变static
因为这是唯一非常相似的情况( let
旨在将变量引入当前范围)。
当您不介意在整个地方内联的值时,应该使用const
。 通常,这意味着小物体; 通常为常数整数。 否则使用不可变static
。
在实践中,对于大多数用例(特别是私有项目),在考虑 LLVM 进行的优化时,通常几乎没有区别。
如果您想导出 object 和相关的低级问题,您可能需要仔细查看 codegen 是否特别糟糕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.