1 个不稳定版本
0.1.22 | 2022年9月26日 |
---|---|
0.1.21 |
|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
632 在 操作系统 中
16KB
157 行
Std3
操作系统标准库
对 rust-osdev 有用
lib.rs
:
STD3
STD3 尚未完成,如果您想帮忙,请在此 处
Rust标准库是便携式Rust软件的基础,是针对更广泛的Rust生态系统的一组最小和经过实战测试的共享抽象。它提供核心类型,如 Vec<T>
和 Option<T>
,语言原语上的库定义操作,标准宏,I/O和多线程,以及其他许多事物。
core
默认对所有Rust包可用。因此,标准库可以通过路径 core
在 use
语句中访问,例如 use core::env
。
如何阅读本文档
如果您已经知道您要查找的内容的名称,最快的方法是使用页面顶部的 搜索栏。
否则,您可能想跳转到以下有用的部分之一
如果您是第一次使用,标准库的文档编写得可以随意浏览。点击有趣的内容通常会将您带到有趣的地方。然而,还有一些重要的内容您不想错过,所以请继续阅读,了解标准库及其文档的概览!
一旦您熟悉了标准库的内容,可能会觉得文本描述过于冗长。在这个开发阶段,您可能希望点击页面顶部的[-]
按钮来将其折叠成更易于浏览的视图。
当您查看那个[-]
按钮时,也请注意source
链接。Rust的API文档附带源代码,并鼓励您阅读。标准库的源代码通常质量很高,窥视幕后往往能有所启发。
标准库文档中有什么内容?
首先,Rust标准库被划分为多个专注的模块,所有模块都列在页面下方。这些模块是构建Rust的基础,它们拥有强大的名称,如core::slice
和core::cmp
。模块的文档通常包括模块概述和示例,是您开始熟悉库的好地方。
其次,这里记录了primitive types
上的隐式方法。这可能会引起两种困惑
例如,有一个针对原语类型i32
的页面,列出了可以对32位整数调用的所有方法(非常有用),还有一个针对模块core::i32
的页面,记录了常量值MIN
和MAX
(很少有用)。
注意原语str
和str
(也称为'slice')的文档。许多对String
和Vec<T>
的方法调用实际上是对str
和str
的调用,通过deref coercion。
第三,标准库定义了Rust 预言,这是一个小型项目集合,主要是特质,它们被导入到每个crate的每个模块中。预言中的特质无处不在,因此预言文档是了解库的好入口。
最后,标准库导出了一些标准宏,并在本页上列出它们(从技术上讲,并非所有标准宏都由标准库定义 - 其中一些由编译器定义 - 但它们在这里有相同的文档)。像预言一样,标准宏默认导入到所有crate中。
为文档做出贡献
查看这里的rust贡献指南。此文档的源代码可在GitHub上找到。要做出贡献,请首先阅读指南,然后提交您的建议更改的拉取请求。
欢迎贡献!如果您看到文档中可以改进的部分,请提交PR,或者首先在Discord #docs上与我们交谈。
Rust 标准库之旅
本crate文档的其余部分致力于指出 Rust 标准库的显著特性。
容器和集合
option
和result
模块定义了可选和错误处理类型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
类型中来共享数据,如果进一步包含在 Cell
或 RefCell
中,则既可以修改也可以共享。同样,在并发环境中,通常将原子引用计数的盒子 Arc
与 Mutex
配对以获得相同的效果。
collections
模块定义了映射、集合、链表和其他典型集合类型,包括常见的 HashMap<K, V>
。
平台抽象和I/O
除了基本数据类型之外,标准库主要关注抽象化不同平台之间的差异,最值得注意的是Windows和Unix派生版本。
包括文件、TCP、UDP在内的常见I/O类型在 [io
]、[fs
] 和 [net
] 模块中定义。
thread
模块包含Rust的线程抽象。在 sync
中包含进一步的基本共享内存类型,包括 atomic
和 mpsc
,它包含消息传递的通道类型。
依赖关系
~735KB
~13K SLoC