Rust 拥有强大且严格的类型系统,是其安全性和性能的基础之一。本文将带你全面了解 Rust 中的各种类型,涵盖从基础标量类型到复杂自定义类型、引用、集合、智能指针等。


一、标量类型(Scalar Types)

标量类型用于表示一个单独的值,是 Rust 中最基本的数据类型:

类型

描述

示例

i8 ~ i128, isize

有符号整数类型

let x: i32 = -10;

u8 ~ u128, usize

无符号整数类型

let y: u8 = 255;

f32, f64

浮点数(32/64 位)

let pi: f64 = 3.14;

char

Unicode 字符(4 字节)

let c: char = '💡';

bool

布尔类型(true/false)

let b: bool = true;


二、复合类型(Compound Types)

复合类型用于将多个值组合在一起。

类型

描述

示例

元组 ()

固定长度,可以包含不同类型的值

let t: (i32, f64, char) = (1, 2.0, 'c');

数组 []

固定长度、元素类型必须相同

let arr: [i32; 3] = [1, 2, 3];

切片 &[T]

动态长度,引用数组的一部分

let slice: &[i32] = &arr[0..2];


三、所有权与智能指针

Rust 通过所有权机制和智能指针实现内存安全。

类型

描述

Box<T>

在堆上分配的值的所有权

Rc<T>

引用计数(单线程)

Arc<T>

原子引用计数(线程安全)

RefCell<T>

运行时可变性(单线程)

Cell<T>

拷贝类型的内部可变性

&T, &mut T

不可变与可变引用


四、字符串与文本

Rust 中的字符串分为堆分配和切片两类:

类型

描述

String

可变的堆分配字符串

&str

字符串切片(通常是字面量)


五、集合类型(标准库)

Rust 提供丰富的数据结构,用于集合和映射:

类型

描述

所属模块

Vec<T>

动态数组

std::vec

HashMap<K, V>

哈希映射表

std::collections

HashSet<T>

无重复集合

std::collections

BTreeMap<K, V>

有序映射表

std::collections

BTreeSet<T>

有序集合

std::collections


六、自定义类型

Rust 允许开发者自定义复杂的数据结构和类型:

struct Point { x: i32, y: i32 }

enum Option<T> {
    Some(T),
    None,
}

type Kilometers = i32; // 类型别名

类型

描述

struct

自定义结构体

enum

枚举类型

union

联合体,多个字段共用内存

type

类型别名


七、特殊类型

类型

描述

()

单元类型,表示无返回值

!

never 类型,表示永不返回

PhantomData<T>

用于标记泛型参数未实际使用


八、Trait 与泛型

Trait 和泛型为 Rust 提供强大的抽象能力:

fn print_info<T: std::fmt::Debug>(val: T) {
    println!("{:?}", val);
}

类型

描述

impl Trait

用于简化 trait 返回类型

<T: Trait>

泛型约束


本站由 困困鱼 使用 Stellar 创建。