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

相关推荐
土豆12506 小时前
Rust宏编程完全指南:用元编程解锁Rust的终极力量
rust·编程语言
小杍随笔11 小时前
【Rust 语言编程知识与应用:基础数据类型详解】
开发语言·后端·rust
小杍随笔16 小时前
【Rust 语言编程知识与应用:自定义数据类型详解】
开发语言·后端·rust
咚为18 小时前
Rust 跨平台编译实战:从手动配置到 Cross 容器化
开发语言·后端·rust
幸福指北21 小时前
我用 Tauri + Vue 3 + Rust 开发了一款跨平台网络连接监控工具Portview,性能炸裂!
前端·网络·vue.js·tcp/ip·rust
咚为21 小时前
深入浅出 Rust FFI:从内存安全到二进制兼容
开发语言·安全·rust
a1117761 天前
剪切板助手TieZ(开源项目rust)
rust·开源·剪切板
盒马盒马1 天前
Rust:迭代器
开发语言·后端·rust
Source.Liu2 天前
【Iced】stream.rs文件
rust·iced
Kapaseker2 天前
精通 Rust 宏 — 包装新类型
rust