RUST 中,let 不能用于声明全局变量
全局常量必须显示声明类型
rust
// The type of constants must always be annotated.
const NUMBER: u64 = 3;
fn main() {
println!("Number: {NUMBER}");
}
另一种全局 "常量" 声明方式是使用 static,默认只读。
若使用 static mut,则是可变全局变量,由于可变全局变量容易造成别名/并发问题,必须使用 unsafe 块访问。
rust
static GREETING: &str = "hello"; // 只读全局
static mut COUNTER: i32 = 0; // 可变全局,需要 unsafe
fn incr() {
unsafe {
COUNTER += 1; // 修改时要显式不安全
}
}
fn main() {
println!("{GREETING}");
unsafe { println!("count = {COUNTER}"); }
incr();
}
使用 static 声明的全局常量和使用 const 声明的全局常量区别如下:
