Rust 变量默认是不可变的(immutable),这是 Rust 安全性和简单并发的设计基础之一。
let
关键字声明变量:let x = 5;
mut
关键字使变量可变:let mut x = 5;
const
关键字声明:const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;
mut
修饰可以使用同一个变量名重新声明变量:let x = 5; let x = x + 1;
遮蔽与
mut
的区别:
let
关键字,否则会编译错误mut
不允许Rust 是静态类型语言,必须在编译时知道所有变量的类型。
i8
, i16
, i32
, i64
, i128
, isize
u8
, u16
, u32
, u64
, u128
, usize
i32
98_222
0xff
0o77
0b1111_0000
b'A'
f32
:32 位浮点数(单精度)f64
:64 位浮点数(双精度,默认类型)bool
类型:值为 true
或 false
char
类型:使用单引号声明,如 'z'
let tup: (i32, f64, u8) = (500, 6.4, 1);
let (x, y, z) = tup;
let five_hundred = x.0;
()
,表示空值/无返回值let a = [1, 2, 3, 4, 5];
let a: [i32; 5] = [1, 2, 3, 4, 5];
let a = [3; 5];
等同于 [3, 3, 3, 3, 3]
let first = a[0];
函数在 Rust 中非常普遍,使用 fn
关键字声明。
命名风格:snake_case(全小写,使用下划线分隔单词)
基本语法:
fn function_name(parameter1: Type1, parameter2: Type2) -> ReturnType { // 函数体}
let y = 6;
5 + 6
{}
也是表达式->
后接类型来声明返回类型return
关键字提前返回Rust 支持多种注释形式:
//
从注释开始到行尾let lucky_number = 7; // I'm feeling lucky today
//
if condition { // code} else { // code}
条件必须是 bool
类型
可使用 else if
处理多重条件
if
是表达式,可用于赋值:let number = if condition { 5 } else { 6 };
所有分支的返回值类型必须相同
Rust 提供三种循环:
loop { // code}
使用 break
退出循环
使用 continue
跳过当前迭代
可以返回值:let result = loop { if condition { break value; } };
循环标签:通过 'label: loop {}
命名循环,并使用 break 'label;
退出特定循环
while condition { // code}
for element in collection { // code}
相比 while
更安全、更简洁
可以与 Range 一起使用:for number in 1..4 {}
可以反转 Range:for number in (1..4).rev() {}
Rust 鼓励开发者采用一些最佳实践,如默认不可变变量、强类型检查、表达式为主的语法等,这些都有助于编写更安全、更可靠的代码。
好好学习,天天向上