入口函数
1 | fn main(){ |
声明变量
1 | n main() { |
变量可变性
变量默认不可变
可变变量:
1 | fn main() { |
print 宏 println!()
Rust 中 print 用宏实现
1 | // !代表宏调用,区别于函数它返回的是宏定义的代码块 |
未使用的变量 警告
变量未使用会有警告,如果要忽略警告,加上 _
在开头
1 | let _x = 5; |
变量解构
从一个相对复杂的变量中,匹配出该变量的一部分内容:
1 | let (a, mut b): (bool,bool) = (true, false); // 定义 |
解构式赋值(Rust 1.59 版本后),可以在赋值语句的左式中使用元组、切片和结构体模式:
1 | struct Struct { |
常量
const
定义
1 | // 数值使用 下划线 提高可读性 |
常量可以在任意作用域内声明,包括全局作用域
变量遮蔽(shadowing)
后面声明的变量会遮蔽掉前面声明
1 | // 字符串类型 |
语句和表达式
语句(statement)和表达式(expression)
表达式没有分号结尾,表达式总要返回值
表达式如果不返回任何值,会隐式地返回一个 ()
let 是语句,所以 let b = (let a = 8);
是错的,但是 let
作为表达式已经是试验功能了,在将来或许能够这样使用
序列Range
1 | 1..5 |
切片
引用集合中部分连续的元素序列
1 | let s = String::from("hello world"); |
[开始索引..终止索引]
左闭右开区间
字符串切片:
1 | let s = String::from("hello"); |
数组切片:
1 | let a = [1, 2, 3, 4, 5]; |