每个变量在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
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。