Rust 标准库:核心模块与功能完整概述

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程
```html

标准库 Rust:完整概述



标准库 Rust (std) 是一组基础模块,为开发者提供创建可靠、快速且安全的应用程序所需的一切。与许多其他语言不同,Rust 特别关注内存安全以及无需垃圾回收的并发性。在本文中,我们将通过代码示例详细解析 std 的关键组件。



1. 标准库的主要模块



该库分为几个逻辑组。让我们来看看其中最重要的部分。



1.1. std::collections 模块

包含用于存储和管理元素集合的数据结构。最常用的有:

  • Vec<T> — 动态数组(类似于 Java 中的 ArrayList)。
  • HashMap<K, V> — 用于存储键值对的哈希表。
  • HashSet<T> — 唯一值的集合。
  • BTreeMap 和 BTreeSet — 基于红黑树的有序集合。


use std::collections::HashMap;

fn main() { let mut scores = HashMap::new(); scores.insert(String::from("Alice"), 100); scores.insert(String::from("Bob"), 90);

for (name, score) in &scores { println!("{}: {}", name, score); }}


1.2. std::io 模块

负责输入输出:键盘读取、文件操作、缓冲输入/输出。关键 trait:Read 和 Write。



use std::io::{self, BufRead};

fn main() -> io::Result<()> { let stdin = io::stdin(); for line in stdin.lock().lines() { println!("Вы ввели: {}", line?); } Ok(())}


1.3. std::thread 模块

允许创建和管理执行线程。Rust 通过所有权系统和 Send 和 Sync trait 保证线程间的数据安全。



use std::thread;

fn main() { let handle = thread::spawn(|| { for i in 1..10 { println!("Поток: {}", i); } });

for i in 1..5 { println!("Главный поток: {}", i); }

handle.join().unwrap();}


2. 字符串和文本处理



Rust 中有两种字符串类型:

  • String — 可变的、拥有所有权的字符串(存储在堆上)。
  • &str — 不可变的字符串切片(对 UTF-8 序列的引用)。


fn main() {    let mut hello = String::from("Привет, ");    hello.push_str("мир!");    println!("{}", hello); // Вывод: Привет, мир!

let slice: &str = &hello[0..6]; println!("Срез: {}", slice); // Вывод: Привет}


3. 错误处理



Rust 使用两个枚举来代替异常:

  • Option<T> — 用于值可能不存在的情况(Some 或 None)。
  • Result<T, E> — 用于可能失败的操作(Ok 或 Err)。


use std::fs::File;use std::io::Read;

fn read_file(path: &str) -> Result<String, std::io::Error> { let mut file = File::open(path)?; let mut contents = String::new(); file.read_to_string(&mut contents)?; Ok(contents)}

fn main() { match read_file("test.txt") { Ok(content) => println!("Содержимое: {}", content), Err(e) => eprintln!("Ошибка: {}", e), }}


4. 迭代器和闭包



Rust 中的迭代器是惰性的且功能强大。它们允许在没有显式循环的情况下处理数据序列。



fn main() {    let numbers = vec![1,
```                    

推荐