(一)Rust基本类型

本文最后更新于 2024年6月24日 上午

1 常量类型

Rust是一个静态类型语言,每一个变量都应该有确定的数据类型。

1.1 整型类型

长度 有符号 无符号
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
128-bit i128 u128
arch isize usize

整型类型的可以使用不同进制进行描述。

数字进制 例子
十进制 98_222
十六进制 0xff
八进制 0o77
二进制 0b1111_0000
单字节(u8) b’A’

1.2 浮点类型

Rust拥有两个浮点数的基本类型,分别是f32f64f64是Rust的默认类型,因为在现代CPU中,f32f64速度相同,但f64拥有更大的范围。Rust中所有的浮点类型均是有符号的。

1
2
3
4
5
6
7
fn main {
// 未明确指定类型,默认为f64
let x = 2.0;

// 明确指定类型,类型为f32
let y:f32 = 3.0;
}

1.3 布尔类型

Rust和大多数其他语言一样,布尔类型只有两个可能值:truefalse。布尔类型占用一个字节,可以使用bool

1
2
3
4
5
fn main() {
let t = true;

let f:bool = false; // 显式声明类型
}

1.4 字符类型

Rust中的字符占用4字节,这意味着它相较于ASCII来说能标识更多字符。

1
2
3
4
5
fn main() {
let c = 'z';
let z: char = 'ℤ'; // with explicit type annotation
let heart_eyed_cat = '😻';
}

2 复合类型

2.1 元组类型

元组可以将不同类型的变量组合在一起。元组在声明后长度不能变化,无法缩小或增长。下面是声明一个元组的例子。

1
2
3
fn main() {
let tup: (i32,f64,u8) = (500,6.4,1);
}

上面例子中,元组tup绑定到整个元组,因为元组被视为一个单独的复合元素。为了从元组中得到其内部独立的变量,我们可以使用模式匹配来解析元组值。

1
2
3
4
5
6
7
fn main() {
let tup = (500, 6.4, 1);

let (x, y, z) = tup;

println!("The value of y is: {y}");
}

这个程序首先创建了一个元组,并将tup绑定到该元组。然后使用lettup拆分为独立的变量xyz。这种方法叫做解构,因为它将一个元组拆分为三个单独的部分。最后这个程序输出了y的值。

我们可以通过另一种方式获取元组中的元素。直接通过使用句点后面跟随我们想要获取值的索引来访问元组中的元素。

1
2
3
4
5
6
7
8
9
fn main() {
let x: (i32, f64, u8) = (500, 6.4, 1);

let five_hundred = x.0;

let six_point_four = x.1;

let one = x.2;
}

这个程序创建了一个元组x,通过独立的索引获取了元组中每一个元素的值。和大多数编程语言一样,元组的索引也是从0开始。没有任何值的元组有一个特殊的名字,unit。这个值和它的类型都写作(),这代表空值或者空返回类型。表达式隐式返回unit如果它们没有返回任何值。

2.2 数组类型

2.2.1 数组声明

另一个获取不同值集合的方法是使用数组。和元组不同,数组中的每一个元素需要是相同的数据类型。不同于其他语言中的数组,Rust中的数组为固定长度。下面是声明数组的一个例子。

1
2
3
fn main() {
let a = [1,2,3,4,5];
}

当你在元素数量固定或者你想要在栈上分配内存而非堆时数组非常有用。同时数组还有另一种声明方式,例如

1
2
3
fn main() {
let a: [i32;5] = [1,2,3,4,5];
}

这里,i32代表数组中每一个元素的类型,5代表数组中有5个元素。

你还可以通过给定初始值初始化一个数组,使数组中的每个元素都是该值,例如

1
2
3
fn main() {
let a:[3;5];
}

数组a中包含5个元素,并且每个元素的初始值均为3

2.2.2 操作数组元素

可以通过索引获取数组中的元素,例如

1
2
3
4
5
6
fn main() {
let a = [1, 2, 3, 4, 5];

let first = a[0];
let second = a[1];
}

也可以通过索引修改数组中的元素,例如

1
2
3
4
5
6
7
8
9
fn main() {
let mut a = [1,2,3,4,5];

println!("a[0]={}",a[0]);

a[0] = 12;

println!("a[0]={}",a[0]);
}

参考

Rust docs


(一)Rust基本类型
https://www.happyallday.cn/Rust/RustLang_01_BasicType/
作者
DevoutPrayer
发布于
2024年6月23日
更新于
2024年6月24日
许可协议