gpt4 book ai didi

rust - 常量、常规不可变变量和静态变量之间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 11:32:29 28 4
gpt4 key购买 nike

我正在学习 Rust,到目前为止,似乎有 3 种声明变量的方法:

const A: u8 = 42;
static A: u8 = 42;
let A: u8 = 42;
我知道你不能有一个可变的 const ,如果不是全部大写,编译器会警告你,当你使用 const , C 预编译器的等效项将替换 A 的所有位置与文字 42 一起出现(它不会有一致的内存地址)。
从实际的角度来看,我认为它们的不可变形式之间没有任何区别。它们中的任何一个都不能突变。它们都可以完全相同地使用。有什么不同?

最佳答案

- const定义值,在相应代码中替换
- static定义表示内存地址的全局变量,即只读内存、全局原子计数器或锁(+初始化)、C-abi交互等
- let定义范围变量绑定(bind)
您不能使用 let作为全局变量(静态生命周期),所以 static适合这个角色。请注意,它也以 lifetime annotation 的形式存在.
Reference explanation

关于rust - 常量、常规不可变变量和静态变量之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65605704/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com