变量
声明变量
Rust 是强类型语言,但具有自动判断变量类型的能力。
如果要声明变量,需要使用 let 关键字。
let a = 123;
在这句声明语句之后,以下三行代码都是被禁止的:
a = "abc";
a = 4.56;
a = 456;
第一行的错误在于当声明 a 是 123 以后,a 就被确定为整型数字,不能把字符串类型的值赋给它。
第二行的错误在于自动转换数字精度有损失,Rust 语言不允许精度有损失的自动数据类型转换。
第三行的错误在于 a 不是个可变变量。
常量与不可变变量的区别:
变量的值可以"重新绑定",但在"重新绑定"以前不能私自被改变,这样可以确保在每一次"绑定"之后的区域里编译器可以充分的推理程序逻辑。
虽然 Rust 有自动判断类型的功能,但有些情况下声明类型更加方便,即尽可能带上类型:let a: u64 = 123;
重影
重影与可变变量的赋值不是一个概念,重影是指用同一个名字重新代表另一个变量实体,其类型、可变属性和值都可以变化。但可变变量赋值仅能发生值的变化。
// 举例
let x = 5;
println!("The value of x is: {}", x);
let x = x + 1;
println!("The value of x is: {}", x);
// 修改为字符串
let x = "string";
println!("The value of x is: {}", x);
数据类型
整数型
浮点型
支持 32 位浮点数(f32)和 64 位浮点数(f64),64.0 将表示 64 位浮点数,因为现代计算机处理器对两种浮点数计算的速度几乎相同,但 64 位浮点数精度更高。
布尔型
布尔型用 bool 表示,值只能为 true 或 false。
字符型
字符型用 char 表示。
复合类型
数组用一对 [ ] 包括的同类型数据。
let a = [1, 2, 3, 4, 5];
元组是用一对 ( ) 包括的一组数据,可以包含不同种类的数据:
let tup: (i32, f64, u8) = (500, 6.4, 1);
运算
Rust 不支持++和 --,但支持+= 和 -=等。
注释
// 这是第一种注释方式
/* 这是第二种注释方式 */
/*
* 多行注释
* 多行注释
* 多行注释
*/
三个正斜杠 /// 依然是合法的注释开始。所以 Rust 可以用 /// 作为说明文档注释的开头: