Rust标准库

Rust标准库是可移植Rust软件的基础,是更广泛的Rust生态系统中使用的最小和经过实战检验的共享抽象集合。它提供了核心类型,如VecOption语言原语的库定义操作,标准宏,I/O多线程众多功能

std默认适用于所有Rust箱,在use语句中可以通过路径std访问标准库,如use std::env

如何阅读本文档

如果您已经知道您要查找的内容的名称,最快的方法是使用页面顶部的搜索栏进行搜索。

否则,您可能想要跳转到以下一些有用的部分:

如果这是您第一次查看标准库文档,则该文档是面向浏览的。点击有趣的内容通常会带您进入有趣的地方。不过,还有一些重要的部分您不想错过,因此请继续阅读,了解标准库及其文档的指南!

一旦您熟悉了标准库的内容,您可能会开始觉得文本过于冗长,分散您的精力。在这个阶段,您可以按页面顶部附近的[-]按钮,将其折叠成更易于查看的视图。

在您查看该[-]按钮的同时,也请注意源代码链接。Rust的API文档附带源代码,并鼓励您阅读它。标准库源代码通常是高质量的,而深入了解其背后的内容往往能够深受启发。

标准库文档中有什么?

首先,Rust标准库被划分为许多专注模块,这些模块都在本页下方进行了列表。这些模块是构建Rust的基础,它们拥有强大的名称,例如std::slice和std::cmp。模块的文档通常包括模块概述以及示例,是熟悉该库的一个明智的起点。

其次,在这里记录了基本类型的隐式方法。这可能会引起两个方面的困惑:

  1. 虽然基本类型是由编译器实现的,但标准库直接在基本类型上实现方法(这是唯一这样做的库),这些方法在基本类型部分中有记录。
  2. 标准库导出了许多与基本类型同名的模块,这些模块定义了与基本类型相关的其他项,但不包含所有重要的方法。

例如,有一个页面专门记录基本类型i32,其中列出了所有可在32位整数上调用的方法(非常有用),而有一个页面专门用于记录模块std::i32,记录了常量值MIN和MAX(很少有用)。

请注意基本类型str和[T](也称为’slice’)的文档。许多对String和Vec 的方法调用实际上是通过deref coercion分别对str和[T]上的方法进行调用的。

第三,标准库定义了 Rust 预定义模块,这是一个小型集合,包括大部分的 traits,会被导入到每个 crate 的每个模块中。预定义模块中的 traits 是普遍存在的,因此预定义模块的文档是了解该库的良好入口点。

最后,标准库导出了许多标准宏,并在此页面上列出了它们(严格来说,并非所有标准宏都是由标准库定义的,有些是由编译器定义的,但它们在此处都有文档说明)。与预定义模块类似,标准宏默认导入到所有 crate 中。

贡献文档变更

在这里查看 Rust 贡献指南。该文档的源代码可以在 GitHub 上找到。如需贡献变更,请确保先阅读指南,然后为您建议的变更提交拉取请求。

我们非常欢迎贡献!如果您发现文档的某个部分可以改进,请提交拉取请求,或者先在 Discord 上与我们聊天。

Rust 标准库导览

本文档其他部分旨在介绍 Rust 标准库的显著特性。

容器和集合

optionresult 模块定义了可选和错误处理类型 OptionResult<T, E>。iter 模块定义了 Rust 迭代器 trait,即 Iterator,它与 for 循环一起用于访问集合。

标准库提供了处理连续内存区域的三种常见方法:

  • Vec - 一个在运行时可调整大小的堆分配的向量。
  • [T; N] - 在编译时大小固定的内联数组。
  • [T] - 一种动态大小的切片,可访问任何其他类型的连续存储,无论是堆分配的还是非堆分配的。

切片只能通过某种指针来处理,因此有许多不同类型的切片,例如:

  • &[T] - 共享切片
  • &mut [T] - 可变切片
  • Box<[T]> - 所有权切片