常量与静态变量
常量
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
语句块。