每个变量在 rust 中都有特定的数据类型,大抵分为两类:标量与复合类类型。
一、标量类:
1、integer 类型(
i 代表的取值范畴为:- 2 的 n - 1 次方~2 的 n - 1 次方 -1;
u 代表的取值范畴为:0~2 的 n 次方 -1;
~~~~
):
Length Signed Unsigned
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize
2、Floating-Point 类型:rust 蕴含两种公有的 float 数据类型:f32 和 f64
,例如:
fn main() {
let x = 2.0; // f64
let y: f32 = 3.0; // f32
}
数值之间的运算:rust 反对根本的加减乘除数值运算, 然而有一个根本的前提条件就是参加运算的数值必须是雷同类型的数据变量,其计算结果类型也是雷同的数据类型,例如:
fn main() {
// 加
let sum = 5 + 10; //15
// 减
let difference = 95.5 - 4.3; //91.2
// 乘
let product = 4 * 30; //120
// 除
let quotient = 56.7 / 32.2; //1.7608695652173911
let quotient = 13 / 6; //2
// 取余
let remainder = 43 % 5;
}
3、Boolean 类型:定义 rust 语言中的 boolean 变量比较简单,能够带上标识 (bool) 也能够不带上此标识,例如:
fn main() {
let t = true;
let f: bool = false;
}
二、复合类(rust 通常蕴含两种内置的复合类数据类型:tuple 与 array):
1、tuple 类型:
rust 中元组是将多种类型的多个值组合为一个复合类型的个别办法。元组的长度是固定的:申明后,它们就无奈增长或放大。咱们通过在括号内编写逗号分隔的值列表来创立元组。元组中的每个地位都有一个类型,并且元组中不同值的类型不用雷同。例如,可选的类型正文:
fn main() {let tup: (i32, f64, u8) = (500, 6.4, 1);
}
变量 tup 绑定到整个元组,因为元组被视为单个复合元素。为了从元组中取出单个值,能够应用模式匹配和 变量. 索引值
来获取元组值,如下所示:
fn main() {let tup = (500, 6.4, 1);
let (x, y, z) = tup;
let firstValue = tup.0; //500
println!("The value of y is: {}", y); //6.4
}
2、Array 类型:
array 类型与 tuple 的区别是数组中的所有变量的类型必须统一,且应用索引获取变量的时候索引值不能超过数组长度,其根本定义和应用与 ts 十分相似,例如:
fn main() {
// 定义一个全部都是整数类型的数组
let a = [1, 2, 3, 4, 5];
// 定义一个全部都是 str 类型的数组:let months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
定义一个定义好类型与固定长度的数组:let a: [i32; 5] = [1, 2, 3, 4, 5];
定义一个含有默认值且大小固定的数组:let a = [3; 5]; //`let a = [3, 3, 3, 3, 3];`
// 获取数组中的值:let first_value = a[0]; //3
// 获取超过数组长度的时候,rust 在编译的时候会报错,比方:let some_index_value = a[100]; //index out of bounds: the len is 5 but the index is 100
}