我们先从Rust基本的变量声明定义与数据类型开始学习,了解这门语言基本特性。
1 变量与可变性
-
变量声明
变量声明以let关键字开头,x为变量名,变量名后紧跟冒号和数据类型,但是rust编译器有自动推导变量类型的功能,可以省略显式的声明。
let x:i32 = 10;
//等价于
let x = 10; -
默认变量是不可变的 只读状态
let x = 10;
x = 20;//错误❌ 不能对 不可变 变量进行赋值 -
可变变量
mut关键字将变量x声明为可变变量,即x为可写状态
let mut x=10;//x可变
x = 20; //修改变量值 -
变量遮蔽(shadow)
Rust允许在同一个代码块中声明一个与之前已声明变量同名的新变量,新变量会遮蔽之前的变量,即无法再去访问前一个同名的变量,这样就实现了变量遮蔽(类似于覆盖)。
fn main() {
let x = 3;
let x = x * 2;
println!("x: {}", x); //输出:x:6let x = "Hello, Rust!"; println!("x: {}", x);//输出:Hello, Rust!
}
变量遮蔽的实质是通过let关键字声明了一个新的变量,只是名称恰巧与前一个变量名相同而已,但它们是两个完全不同的变量,处于不同的内存空间,值 可以不同,值的类型也可以不同。
2 常量定义
常量是指绑定到一个标识符且不允许改变的值,一旦定义后就没有任何方法能改变其值了。常量名通常是大写字母 ,且必须指定常量的数据类型
const MAX_NUM: u32 = 1024;
常量与不可变变量对比:
1)常量声明使用const关键字,且必须注明值的类型。
2)常量不能遮蔽,不能重复定义。
3)常量可以在任何作用域中声明,包括全局作用域。
4)常量只能被赋值为常量表达式或数学表达式,不能是函数返回值,或是其他在运行时才能确定的值。
3. 基本的数据类型
Rust的基本数据类型有整数类型、浮点数类型、布尔类型、字符类型、范围类型等。
1. 整数类型
长度 | 有符合 | 无符号 |
---|---|---|
8位 | i8 | u8 |
16位 | i16 | u16 |
32位 | i32 | u32 |
64位 | i64 | u64 |
128位 | i128 | u128 |
arch | isize | usize |
定义与使用
let integer1: u32 = 17; // 显式类型声明
let integer2 = 17u32; // 类型后缀声明
let integer3 = 17; // 默认i32类型
let integer4: u32 = 0b10001; // 二进制
let integer5: u32 = 0o21; // 八进制
let integer6: u32 = 0x11; // 十六进制
let integer7 = 50_000; // 数字可读性分隔符_
为了方便阅读数值较大的数字,Rust允许使用下划线""作为虚拟分隔符来对数字进行可读性分隔。比如,为了提高50000的可读性,可以写成50_000。Rust在编译时会自动移除数字可读性分隔符""。
2. 浮点数类型
f32 :单精度浮点数,小数点后至少有6位有效数字。
f64:双精度浮点数,小数点后至少有15位有效数字。 定义与使用:
let float1: f32 = 1.1; // 显式类型声明
let float2 = 2.2f32; // 类型后缀声明
let float3 = 3.3; // 默认f64类型
let float4 = 11_000.555_001; // 数字可读性分隔符_
3. bool(布尔)类型
Rust使用bool来声明布尔类型的变量,布尔类型只有两个可能的取值,即true或false。 例如:
let t: bool = true; // 显式类型声明
let f = false; // 隐式类型声明
4. 字符类型
Rust使用UTF-8作为底层的编码。字符类型代表的是一个Unicode标量值(Unicode Scalar Value),包括数字、字母、Unicode和其他特殊字符。这个字符类型区别于C/C++中的定义,每个字符占4个字节。
let c = 'z';
let c1 = '✅';
5. 范围类型
范围类型常用来生成从一个整数开始到另一个整数结束的整数序列,有左闭右开和全闭两种形式,比如(1..5)是左闭右开区间,表示生成1、2、3、4这4个数字;(1..=5)是全闭区间,表示生成1、2、3、4、5这5个数字。
fn main() {
print!("1-5: ");
for i in 1..5 {
print!("{} ", i);
}
println!();
}
4 demo测试
编写一个简单的demo巩固上面的知识点。
命令:cargo new demo1_datatype
创建工程。

测试代码:
fn main() {
let x = 5; //默认类型i32
let x = x+1; //遮蔽x=5,此时x=6
println!("遮蔽变量 x={}", x);
let mut y = 5;
y += 10; //可变变量
println!("可变变量 y={}", y);
const MAX_VALUE:i32=100*32; //常量
println!("MAX_VALUE={}", MAX_VALUE);
let z:char = '》'; //字符类型
println!("字符类型 z={}, size={}字节", z, std::mem::size_of::<char>());
let f = false; //布尔类型
println!("布尔类型 f={}", f);
for i in 1..=5 { //for循环 范围类型
print!("{} ", i);
}
println!("");
}
编译输出:

5 小结
我们先从基础语法开始学习,循序渐进掌握它的精髓。此处我也给大家推荐一下rust官方教程链接:Rust 程序设计语言 - Rust 程序设计语言 中文版
我是小C,欢迎大家一起交流学习~~~