本教程环境:
系统:MacOS
Rust 版本:1.77.2
在 Rust 中,变量和常量都是用来存储数据的。
变量
变量使用 let
关键字声明。变量默认是不可变的。一旦被赋值不能更改其值。
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
static
和 const
看起来很相似,但是它们的使用场景和目的通常是不同的。const
主要用于值不会更改的常量,而 static
变量通常用于涉及全局或长期存储的情况。
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 <文件名>
。
本教程代码仓库:https://github.com/zcfsmile/RustLearning/tree/main/variables
🌟🌟 🙏🙏感谢您的阅读,如果对你有帮助,欢迎关注、点赞 🌟🌟