整数型
位长度 | 有符号 | 无符号 |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
isize和usize是当前操作系统处理数据的位长度大小,取决于所运行的目标平台
浮点数型
rust中支持32位浮点数(f32),和64位浮点数(f64),现代计算机中对于两种浮点数的处理速度相近,但64位浮点数精度更高
rust中不支持++和--操作
布尔型
- rust中布尔型用bool表示,值只能是true或false
字符(串)型
- 字符型用char表示
- 字符串用String表示,标识可变长度的文本数据
- rust中char类型大小为4字节(32bit),支持中文、日韩文字符等非英文字符,支持表情符号和零宽度空格,这些在rust中都是合法的char值
- 中文编码有GBK和UTF-8两种,编程时最好都是用UTF-8,避免编译报错
复合类型
元组
- rust中元组是用一对“()”包裹的数据,其中的数据项可以是不同的数据类型
- rust中元组数据支持解构
let tup: (i32, f64, char) = (500, 23.125, 'rust');
let (x, y, z) = tup;
数组
- rust中数组是用一对“[]”包裹的数据,其中的数据项必须是同类型的
- 对于数组中的元素,如果需要进行修改时,在声明数组时也需要将数组声明为一个可变变量
- 定义数组时声明类型时使用[]进行声明,其中使用冒号(;)进行分割,第一项时数组中数据的类型,第二项时数组的长度
- 如果需要在数组中存放不同类型的数据可以使用rust中的枚举类/元组/结构体等实现
let a = [1, 2, 3, 4, 5];
// a 是一个长度为 5 的整型数组
let b = ["January", "February", "March"];
// b 是一个长度为 3 的字符串数组
let c: [i32; 5] = [1, 2, 3, 4, 5];
// c 是一个长度为 5 的 i32 数组
let d = [3; 5];
// 等同于 let d = [3, 3, 3, 3, 3];
let first = a[0];
let second = a[1];
// 数组访问
a[0] = 123; // 错误:数组 a 不可变
let mut a = [1, 2, 3];
a[0] = 4; // 正确
// 枚举实现多类型数组
enum Data {
Int(i32),
Float(f64),
String(String),
// ... 其他类型
}
fn main() {
let data_array: [Data; 3] = [Data::Int(1), Data::Float(3.14), Data::String("Hello".to_string())];
}
// 元组实现多类型数组
fn main() {
let data_array: [(i32, f64, String); 3] = [
(1, 3.14, "One".to_string()),
(2, 2.71, "Two".to_string()),
(3, 1.61, "Three".to_string()),
];
}
// 使用结构体实现多类型数组
enum Value {
Int(i32),
Float(f64),
String(String),
// ... 其他类型
}
struct Data {
value: Value
}
// 然后你可以像这样使用它:
let data_array: [Data; 3] = [
Data { value: Value::Int(1) },
Data { value: Value::Float(3.14) },
Data { value: Value::String("Hello".to_string()) },
];