1 个不稳定版本

0.1.22 2022年9月26日
0.1.21 2022年9月26日
0.1.2 2022年9月26日
0.1.1 2022年9月25日
0.1.0 2022年9月25日

632操作系统

MIT 许可证

16KB
157

Std3

操作系统标准库

rust-osdev 有用

Page


lib.rs:

STD3

STD3 尚未完成,如果您想帮忙,请在此

Rust标准库是便携式Rust软件的基础,是针对更广泛的Rust生态系统的一组最小和经过实战测试的共享抽象。它提供核心类型,如 Vec<T>Option<T>,语言原语上的库定义操作,标准宏,I/O和多线程,以及其他许多事物。

core 默认对所有Rust包可用。因此,标准库可以通过路径 coreuse 语句中访问,例如 use core::env

如何阅读本文档

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

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

如果您是第一次使用,标准库的文档编写得可以随意浏览。点击有趣的内容通常会将您带到有趣的地方。然而,还有一些重要的内容您不想错过,所以请继续阅读,了解标准库及其文档的概览!

一旦您熟悉了标准库的内容,可能会觉得文本描述过于冗长。在这个开发阶段,您可能希望点击页面顶部的[-]按钮来将其折叠成更易于浏览的视图。

当您查看那个[-]按钮时,也请注意source链接。Rust的API文档附带源代码,并鼓励您阅读。标准库的源代码通常质量很高,窥视幕后往往能有所启发。

标准库文档中有什么内容?

首先,Rust标准库被划分为多个专注的模块,所有模块都列在页面下方。这些模块是构建Rust的基础,它们拥有强大的名称,如core::slicecore::cmp。模块的文档通常包括模块概述和示例,是您开始熟悉库的好地方。

其次,这里记录了primitive types上的隐式方法。这可能会引起两种困惑

  1. 虽然原语由编译器实现,但标准库直接在原语类型上实现方法(这也是唯一的库),这些方法在原语部分中进行了记录。
  2. 标准库导出许多与原语类型同名模块。这些定义了与原语类型相关的额外项,但不是至关重要的方法。

例如,有一个针对原语类型i32的页面,列出了可以对32位整数调用的所有方法(非常有用),还有一个针对模块core::i32的页面,记录了常量值MINMAX(很少有用)。

注意原语strstr(也称为'slice')的文档。许多对StringVec<T>的方法调用实际上是对strstr的调用,通过deref coercion

第三,标准库定义了Rust 预言,这是一个小型项目集合,主要是特质,它们被导入到每个crate的每个模块中。预言中的特质无处不在,因此预言文档是了解库的好入口。

最后,标准库导出了一些标准宏,并在本页上列出它们(从技术上讲,并非所有标准宏都由标准库定义 - 其中一些由编译器定义 - 但它们在这里有相同的文档)。像预言一样,标准宏默认导入到所有crate中。

为文档做出贡献

查看这里的rust贡献指南。此文档的源代码可在GitHub上找到。要做出贡献,请首先阅读指南,然后提交您的建议更改的拉取请求。

欢迎贡献!如果您看到文档中可以改进的部分,请提交PR,或者首先在Discord #docs上与我们交谈。

Rust 标准库之旅

本crate文档的其余部分致力于指出 Rust 标准库的显著特性。

容器和集合

optionresult模块定义了可选和错误处理类型Option<T>Result<T, E>iter模块定义了Rust的迭代器特质Iterator,它可以与for循环一起使用,以访问集合。

标准库公开了三种处理连续内存区域的方法

  • Vec<T> - 可在运行时调整大小的堆分配向量
  • [[T; N]][prim@array] - 编译时具有固定大小的内联数组
  • [[T]][prim@slice] - 动态大小的任何其他类型连续存储的切片,无论是堆分配的还是不是。

切片只能通过某种指针来处理,因此有很多种类型,如

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

str,一个UTF-8字符串切片,是一种原始类型,标准库为它定义了许多方法。Rust str通常以不可变引用的形式访问:&str。使用拥有类型的 String 来构建和修改字符串。

要将数据转换为字符串,请使用 format! 宏,而从字符串转换则使用 FromStr 特性。

可以通过将数据放入引用计数盒或 Rc 类型中来共享数据,如果进一步包含在 CellRefCell 中,则既可以修改也可以共享。同样,在并发环境中,通常将原子引用计数的盒子 ArcMutex 配对以获得相同的效果。

collections 模块定义了映射、集合、链表和其他典型集合类型,包括常见的 HashMap<K, V>

平台抽象和I/O

除了基本数据类型之外,标准库主要关注抽象化不同平台之间的差异,最值得注意的是Windows和Unix派生版本。

包括文件、TCP、UDP在内的常见I/O类型在 [io]、[fs] 和 [net] 模块中定义。

thread 模块包含Rust的线程抽象。在 sync 中包含进一步的基本共享内存类型,包括 atomicmpsc,它包含消息传递的通道类型。

依赖关系

~735KB
~13K SLoC