[Rust 入门] Rust 变量与常量

本教程环境:

系统:MacOS

Rust 版本:1.77.2

在 Rust 中,变量和常量都是用来存储数据的。

变量

变量使用 let 关键字声明。变量默认是不可变的。一旦被赋值不能更改其值。

rust 复制代码
fn main() {
    // 变量使用 let 
    let age = 10;
    println!("age: {}", age); 
    age = 11;
    println!("new age: {}", age);
}

执行上面的代码报错 "cannot assign twice to immutable variable age ": 如果要声明一个可变的变量,需要使用 **let mut** 进行声明

静态变量

Rust 中使用 static 声明静态全局变量,在程序的整个运行期间都存在。**默认是不可变的。**可以使用 static mut 来定义可变的静态变量,但是这种情况是不安全的,只能在 unsafe 块中进行访问。 static 变量的一些注意事项:

  • 在内存中有确定的位置;
  • 在程序的整个生命周期都存在;
  • 一般声明在全局作用域中;
  • 声明是需要显式的设置类型注解;
  • 初始化只能设置编译器可以确定的常量表达式。

常量

Rust 中使用 const 声明常量。并且永远也不能改变其值。 const变量的一些注意事项:

  • 大多数情况下,常量编译期间被评估,使用时,直接内敛到具体的位置,不需要额外占用内存。就像是使用字面量一样。
  • 不能更改;
  • 可以在任何作用域中声明,包括局部作用域;
  • 声明是需要显式的设置类型注解;
  • 初始化只能设置编译器可以确定的常量表达式。

const vs static

staticconst 看起来很相似,但是它们的使用场景和目的通常是不同的。const 主要用于值不会更改的常量,而 static 变量通常用于涉及全局或长期存储的情况。

rust 复制代码
static LANGUAGE: &str = "Rust";
const THRESHOLD: i32 = 10;
static mut COUNTER: i32 = 0;

fn main() {
    println!("This is a program written in {}.", LANGUAGE);
    
    let mut count = 0;
    
    while count < THRESHOLD {
        count += 1;
        println!("Count is: {}", count);
    }

    // 请注意,不安全代码块是存在风险的实践,应仅在必要时使用。
    unsafe {
        COUNTER += 1;
        println!("Counter is now: {}", COUNTER);
    }
}

src/bin 目录

在 Cargo 创建的 Rust 项目中,src/bin 目录用于存放可独立执行的二进制 crate。每个文件会被 Cargo 看作是一个单独的二进制 crate。这种布局使得在单一的项目仓库中管理多个相关的二进制文件变得非常方便。 运行的时候执行 cargo run --bin <文件名>

本教程代码仓库:github.com/zcfsmile/Ru...

🌟🌟 🙏🙏感谢您的阅读,如果对你有帮助,欢迎关注、点赞 🌟🌟

相关推荐
qq_297574671 天前
【实战教程】SpringBoot 集成阿里云短信服务实现验证码发送
spring boot·后端·阿里云
韩立学长1 天前
【开题答辩实录分享】以《智能大学宿舍管理系统的设计与实现》为例进行选题答辩实录分享
数据库·spring boot·后端
编码者卢布1 天前
【Azure Storage Account】Azure Table Storage 跨区批量迁移方案
后端·python·flask
她说..1 天前
策略模式+工厂模式实现审批流(面试问答版)
java·后端·spring·面试·springboot·策略模式·javaee
梦梦代码精1 天前
开源、免费、可商用:BuildingAI一站式体验报告
开发语言·前端·数据结构·人工智能·后端·开源·知识图谱
李慕婉学姐1 天前
【开题答辩过程】以《基于Spring Boot的疗养院理疗管理系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·spring boot·后端
tb_first1 天前
SSM速通2
java·javascript·后端
一路向北⁢1 天前
Spring Boot 3 整合 SSE (Server-Sent Events) 企业级最佳实践(一)
java·spring boot·后端·sse·通信
风象南1 天前
JFR:Spring Boot 应用的性能诊断利器
java·spring boot·后端
爱吃山竹的大肚肚1 天前
微服务间通过Feign传输文件,处理MultipartFile类型
java·spring boot·后端·spring cloud·微服务