Appearance
数据类型
rust里分成两种类型:标量类型,复合类型。
编译器能够自己推断类型,但如果可能的结果较多,编译器会报错,此时需要显式赋予类型
标量类型,表示单个的值:整数类型、浮点类型、布尔类型、字符类型
值得说的是字符类型。Rust中char类型用来描述语言中最基础的单个字符,字面值使用单引号,占用4字节大小,是Unicode标量值,能够表示拼音、中日韩文、零长度空白字符、emoji表情等。
整数型(integer)
| 位长 | 有符号 | 无符号 |
|---|---|---|
| 类型 | 大小 | 范围 |
| 8位 | i8 | u8 |
| 16位 | i16 | u16 |
| 32位 | i32 | u32 |
| 64位 | i64 | u64 |
| 128位 | i128 | u128 |
| 指针大小 | isize | usize |
isize 和 usize 两种整数类型是用来衡量数据大小的,它们的位长度取决于所运行的目标平台,如果是 32 位架构的处理器将使用 32 位位长度整型。
进制表示
Rust支持二进制、八进制、十进制、十六进制四种进制表示,分别以0b、0o、0、0x开头。
rust
let binary = 0b1010;
let octal = 0o755;
let decimal = 0;
let hex = 0x1A;用下划线分隔数字,提高可读性。
rust
let num = 1_000_000; // 十进制
let num = 0b1_000_000; // 二进制
let num = 0o7_55; // 八进制
let num = 0x1A; // 十六进制浮点数型(Floating-Point)
Rust使用f32和f64两种浮点数类型,分别对应单精度和双精度浮点数。
rust
let x = 2.5_f32;
let y = 3.14_f64;
// let x32: f32 = 2.5;
// let x64: f64 = 3.14;布尔
Rust使用bool类型表示布尔值,true和false。
rust
let is_true = true;
let is_false = false;复合类型:元组(Tuple)、数组
rust
let x: i32 = 10; // 声明时指定数据类型元组
小括号里,值用逗号分开。每个位置对应一个类型,各元素类型可以不同。
rust
let tup: (i32, f64, u8) = (500, 6.4, 1);
println!("{},{},{}", tup.0, tup.1, tup.2);
// 解构的方式赋值
let (x,y,z) = tup;
println!("{},{},{}", x, y, z);数组
跟元组类似,但是元素类型相同,长度固定。
想让数据存放在stack上而不是heap上时用数组更好。
rust
let arr = [1,2,3,4,5];
// 声明类型的方式: [类型;长度]
let a:[i32; 5] = [1,2,3,4,5];
// 每个元素都相同时可以这样赋值
let a = [3:5]; // 相当于let a = [3,3,3,3,3];
// 访问时用下标
println!(a[2]);
// 如果越界,编译会通过,运行会报错如果需要存放不定长的数据,使用Vector(由标准库提供)是更好的选择。