常量与静态变量
注:常量与静态变量在定义时需要明确指定类型,并且遵循
SCREAMING_SNAKE_CASE
命名规范 (即全大写 + 下划线的形式)。
常量
Rust 语言中使用 const
关键字来定义一个常量,例如:
rust
const THRESHOLD: i32 = 10;
const PI:f32 = 3.14;
const STRING: &'static str = "hello,world!";
常量可以在任何位置定义,包括全局作用域,它与程序中的具体内存位置没有关联。无论常量在哪里使用,它们本质上都是内联的,这意味着当它们被使用时,都是直接被拷贝到相关的上下文中来使用的。对相同常量的引用不保证它们引用的是相同的内存地址。
此外,不能出现同名常量,常量不能被屏蔽/遮挡,也不能被重复定义。
静态变量
Rust 使用关键字 static
声明一个全局的变量,例如:
rust
static LEVELS: u32 = 0;
全局变量和常量类似,但是一个重要的区别就是,全局变量不会被内联,在整个程序中,全局变量只有一个实例,也就是说所有的引用都会指向一个相同的地址。
和常量不同,静态变量可以定义为可变的:
rust
static mut LEVELS: u32 = 0;
由于 Rust 的目标是尽可能的避免出现并发 bug,因此,读取或写入可变静态项变量时需要引入 unsafe
语句块。