数组

现在的语言除了支持基本的操作之外,还多了一个就是切片

在 Rust 中,数组(Array)是一种用于存储固定大小、同类型元素的集合。数组的大小和元素类型在编译时就被确定,这使得它们在内存中是连续存储的。

1. 创建数组

数组可以使用方括号创建,元素用逗号分隔。

fn main() {
    // 创建一个包含 5 个 i32 类型元素的数组
    let arr: [i32; 5] = [1, 2, 3, 4, 5];

    // 访问数组元素
    println!("第一个元素: {}", arr[0]);
    println!("第二个元素: {}", arr[1]);

    // 遍历数组
    for &item in &arr {
        println!("{}", item);
    }
}

2. 数组的特性

  • 固定大小:数组的大小在定义时就被固定,不能动态改变。

  • 同类型元素:数组只能包含同一种类型的元素。

  • 内存连续:数组在内存中是连续存储的,这使得随机访问非常高效。

  • 初始化:可以使用相同的值来初始化数组:

3. 数组与切片(Slice)

切片是对数组的一部分的引用,允许以更灵活的方式处理数据。切片不拥有数据,只是对数据的一种视图。

4. 与其他语言的数组比较

特性
Rust 数组
C 语言数组
Python 列表
Java 数组

大小固定

固定大小,编译时确定

固定大小,编译时确定

动态大小,可随意扩展

固定大小,编译时确定

类型限制

同类型元素

同类型元素

支持不同类型元素

同类型元素

内存管理

Rust 的所有权系统

手动管理内存

自动内存管理

自动内存管理

初始化

使用相同的值初始化

手动初始化

动态初始化

手动初始化

切片支持

支持切片(引用)

不支持切片

使用切片功能(列表切片)

不支持切片

5. 总结

Rust 的数组提供了一种高效的方式来存储固定大小和同类型的元素,支持强类型和内存安全。与 C 语言相比,Rust 更加注重类型安全和内存管理,而与 Python 和 Java 的数组/列表相比,Rust 的数组具有固定大小和相同类型的限制,适用于需要高性能和类型安全的场景。Rust 的切片功能则提供了更灵活的数据访问方式。

Last updated