(done) 速通 rustlings(7) 全局变量/常量

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 声明的全局常量区别如下:

相关推荐
mit6.82419 分钟前
Rust 在 Linux 7.0 内核毕业
rust
咸甜适中1 小时前
rust格式化输出(println!、format!、...)
开发语言·rust
迪普阳光开朗很健康1 小时前
告别繁琐!用ApkInfoQuick快速提取APK关键信息
android·rust·react
tianyuanwo2 小时前
Rust RPM Spec 中的动态宏定义:原理、原因与低版本兼容方案
rust·lua·spec
skilllite作者2 小时前
从“记忆”到“项目 Wiki”:我在 SkillLite 里实现了一套 Markdown-only LLM Wiki 自动维护机制
开发语言·jvm·人工智能·后端·架构·rust
代码羊羊3 小时前
Rust Panic 深入全解:不可恢复错误的处理与原理
开发语言·后端·rust
alwaysrun21 小时前
Rust 如何实现许可证管理系统
rust
编码浪子1 天前
《安全 Rust 的边界在哪?》— 中文解读
开发语言·安全·rust
不知名的老吴1 天前
聊一聊年轻的编程语言Golang与Rust
开发语言·golang·rust