Rust 数据结构
2025年3月6日大约 1 分钟约 391 字
数据结构 | Python | Rust |
---|---|---|
数组(Array) | list | [T; N] (固定大小) |
动态数组(Vector) | list | Vec<T> (动态大小) |
元组(Tuple) | tuple | (T1, T2, T3, ...) |
集合(Set) | set | HashSet<T> |
哈希表(字典) | dict | HashMap<K, V> |
链表(Linked List) | collections.deque (双端队列) | LinkedList<T> (需 std::collections ) |
堆栈(Stack) | list (LIFO 操作) | Vec<T> (push() / pop() ) |
队列(Queue) | collections.deque | VecDeque<T> |
优先队列(Priority Queue) | heapq | BinaryHeap<T> |
let mut arr: [i32; 4] = [1, 2, 3, 4]; // 长度固定为4的数组,元素必须类型相同
arr[1] = 10; // 修改数组中的值
let mut numbers: Vec<i32> = vec![1, 2, 3]; // 动态数组,可变长度,元素必须类型相同
numbers.push(4); // 添加元素
numbers.pop().unwrap()
let t: (i32, &str, f64) = (1, "hello", 3.14); // 元组可以包含不同类型的元素
let (x, y, z) = (1, 2, 3); // 解构元组
// 集合
let mut s: HashSet<i32> = HashSet::new(); // 不允许重复,顺序不固定
s.insert(1);
// 哈希表(字典)
use std::collections::HashMap;
let mut person = HashMap::new();
person.insert("name", "Alice");
// 队列
use std::collections::VecDeque;
let mut queue: VecDeque<i32> = VecDeque::new();
queue.push_back(1);
queue.pop_front().unwrap()
在 Rust 语言中,::
是路径(path)运算符,用于访问:
语法 | 作用 | 例子 |
---|---|---|
:: | 调用关联函数(类方法)(类似于 Python 的静态方法) | VecDeque::new() |
:: | 访问模块中的函数 | utils::greet() |
:: | 访问常量 | Config::VERSION |
:: | 访问枚举变体(Enum Variants) | Color::Red |
. | 调用实例方法 | queue.push_back(1) |
Rust 之所以不采用 VecDeque.new()
语法,是为了区分静态方法(关联函数)和实例方法,使代码更清晰、安全。🚀