Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

std - Rust 中文版 #4

Open
hexiaowen opened this issue Dec 21, 2021 · 0 comments
Open

std - Rust 中文版 #4

hexiaowen opened this issue Dec 21, 2021 · 0 comments
Labels

Comments

@hexiaowen
Copy link
Owner

hexiaowen commented Dec 21, 2021

Crate std

https://rust.ffactory.org/std/index.html

1.0.0[−][src]

Expand description

Rust 标准库

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

std 默认情况下可用于所有的 Rust crates。因此,可以通过 use 语句使用路径 std 来访问标准库,就像在 use std::env 中一样。

如何阅读本文档

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

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

如果这是您第一次来,那么标准库的文档可以被随意的阅读。点击有趣的东西通常会把您带到有趣的地方。 尽管如此,您还是不想错过一些重要的内容,因此请继续阅读标准库及其文档!

一旦您熟悉了标准库的内容,您可能会发现冗长的描述会使人分心。在开发阶段,您可能需要按页面顶部附近的 [-] 按钮,将其折叠为更易于阅读的视图。

当您看到 [-] 按钮的时候,也请注意 [src] 按钮。Rust 的 API 文档附带了源代码,我们鼓励您阅读它。 标准库的资源通常是高质量的,通常可以启发人们对幕后的了解。

标准库文档中有什么?

首先,Rust 标准库分为多个重点 模块,所有的这些模块都会在本页下方列出。这些模块是所有 Rust 锻造的基础,它们具有强大的名称,如 std::slicestd::cmp。 模块的文档通常包括模块的概述和示例,是开始熟悉库的好地方。

其次,此处记录了 primitive types 上的隐式方法。造成混淆的原因有两个:

  1. 虽然原语是由编译器实现的,但标准库是直接在原语类型上实现方法 (而且它是唯一一个这样做的库)。在 原语 部分中对此进行了说明。
  2. 标准库导出了许多模块,这些模块的名称和原始类型的名称相同。它们定义了与原始类型有关的其他项,但没有定义所有重要的方法。

例如,有一个 基本类型为 i32 的页面列出了可以调用的所有方法 32 位整数 (非常有用),并且有一个 page for the module std::i32 记录了常量值 MINMAX (很少有用)。

请注意原始 str[T] (也称为 ‘slice’) 的文档。StringVec<T> 上许多方法的调用实际上都是通过 解引用强制多态 分别对 str[T] 上的方法的调用。

第三,标准库还定义了 The Rust Prelude,这是一小部分项目 - 主要是 traits - 导入到每个 crate 的每个模块中。 prelude 中的 traits 无处不在,这使 prelude 文档成为了解该库的一个很好的切入点。

最后,标准库导出了许多标准宏,并且在 此页面 上列出了它们 (从技术上讲,并不是所有的标准宏都由标准库定义的 - 有些是由编译器定义的 - 但它们在这里的文档是相同的)。

与 prelude 一样,默认情况下会将标准宏导入到所有 crates 中。

对文档的更改做出贡献

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

感谢您的贡献! 如果您看到可以改进的部分文档,请提交 PR,或者先在 Discord #docs 上与我们聊天。

Rust 标准库之旅

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

容器和集合

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

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

  • Vec<T> - 在运行时可调整大小的堆分配的 vector
  • [T; N] - 在编译时具有固定大小的内联 数组
  • [T] - 动态调整大小的 切片 到任何其他类型的连续存储中,无论是否进行了堆分配。

切片只能通过某种 指针 来处理,因此具有多种形式,例如:

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

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

要转换为字符串,请使用 format! 宏; 要从字符串转换,请使用 FromStr trait。

可以通过将数据放在引用计数的 Box 或 Rc 类型中来共享数据,并且,如果进一步包含在 CellRefCell 中,则可以对其进行可变的和共享。 同样,在并发设置中,通常将原子引用计数的 Box ArcMutex 配合以获得相同的效果。

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

平台抽象和 I/O

除了基本的数据类型外,标准库还主要关注对通用平台差异的抽象 (尤其是 Windows 和 Unix 派生平台)。

常见的 I/O 类型包括 filesTCPUDP。它们被定义在 iofsnet 模块中。

thread 模块包含了 Rust 的线程抽象。sync 包含更多的原始共享内存类型,包括 atomicmpsc,其中包含用于消息传递的通道类型。

Re-exports

| pub use core::[arch](../core/arch/index.html "mod core::arch"); | |

Primitive Types

| never | Experimental

! 类型,也称为 “never”。

|
| array |

一个固定大小的数组,表示为 [T; N],用于元素类型 T 和非负编译时常量大小, N.

|
| bool |

布尔类型。

|
| char |

一个字符类型。

|
| f32 |

32 位浮点类型 (特别是 IEEE 754-2008 中定义的 “binary32” 类型)。

|
| f64 |

64 位浮点类型 (特别是 IEEE 754-2008 中定义的 “binary64” 类型)。

|
| fn |

函数指针,例如 fn(usize) -> bool

|
| i8 |

8 位带符号整数类型。

|
| i16 |

16 位带符号整数类型。

|
| i32 |

32 位带符号整数类型。

|
| i64 |

64 位带符号整数类型。

|
| i128 |

128 位带符号整数类型。

|
| isize |

指针大小的有符号整数类型。

|
| pointer |

原始,不安全的指针 *const T* mut T

|
| reference |

引用,共享和可变。

|
| slice |

动态大小的视图到一个连续的序列, [T]. 这里的连续意味着元素的布局应使每个元素与其相邻元素之间的距离相同。

|
| str |

字符串片。

|
| tuple |

有限的异质序列, (T, U, ..).

|
| u8 |

8 位无符号整数类型。

|
| u16 |

16 位无符号整数类型。

|
| u32 |

32 位无符号整数类型。

|
| u64 |

64 位无符号整数类型。

|
| u128 |

128 位无符号整数类型。

|
| unit |

() 类型,也称为 “unit”。

|
| usize |

指针大小的无符号整数类型。

|

Modules

| assert_matches | Experimental

Unstable 模块包含不稳定的 assert_matches 宏。

|
| backtrace | Experimental

支持捕获 OS 线程的栈回溯

|
| intrinsics | Experimental

编译器内联函数。

|
| lazy | Experimental

惰性值和静态数据的一次性初始化。

|
| stream | Experimental

可组合的异步迭代。

|
| alloc |

内存分配 API。

|
| any |

该模块实现了 Any trait,它可以通过运行时反射来动态键入任何 'static 类型。

|
| array |

固定长度数组的辅助函数和类型。

|
| ascii |

对 ASCII 字符串和字符的操作。

|
| borrow |

用于处理借用数据的模块。

|
| boxed |

堆分配的指针类型。

|
| cell |

可共享的可变容器。

|
| char |

一个字符类型。

|
| clone |

不能隐式复制的类型的 Clone trait。

|
| cmp |

排序和比较的功能。

|
| collections |

集合类型。

|
| convert |

Traits 用于类型之间的转换。

|
| default |

Default trait 用于可能具有有意义的默认值的类型。

|
| env |

检查和操作进程的环境。

|
| error |

Traits 用于处理错误。

|
| f32 |

f32 单精度浮点类型专用的常量。

|
| f64 |

f64 双精度浮点类型专用的常量。

|
| ffi |

与 FFI 绑定有关的实用工具。

|
| fmt |

用于格式化和打印 Strings 的实用工具。

|
| fs |

文件系统操纵操作。

|
| future |

异步值。

|
| hash |

通用哈希支持。

|
| hint |

对编译器的提示,该提示会影响应如何发出或优化代码。 提示可能是编译时或运行时。

|
| i8 | Deprecation planned

8 位带符号整数类型的常量。

|
| i16 | Deprecation planned

16 位带符号整数类型的常量。

|
| i32 | Deprecation planned

32 位带符号整数类型的常量。

|
| i64 | Deprecation planned

64 位有符号整数类型的常量。

|
| i128 | Deprecation planned

128 位有符号整数类型的常量。

|
| io |

core I/O 功能的 Traits,助手和类型定义。

|
| isize | Deprecation planned

指针大小的有符号整数类型的常量。

|
| iter |

可组合的外部迭代。

|
| marker |

原始 traits 和类型表示类型的基本属性。

|
| mem |

处理内存的基本函数。

|
| net |

TCP/UDP 通信的网络原语。

|
| num |

数字的附加功能。

|
| ops |

可重载的运算符。

|
| option |

可选值。

|
| os |

特定于操作系统的功能。

|
| panic |

标准库中的 Panic 支持。

|
| path |

跨平台路径操纵。

|
| pin |

键入将数据固定到其在内存中的位置的类型。

|
| prelude |

Rust Prelude

|
| primitive |

此模块重导出基本类型,以允许其他声明的类型不可能掩盖的用法。

|
| process |

用于处理进程的模块。

|
| ptr |

通过裸指针手动管理内存。

|
| rc |

单线程引用计数指针。Rc 代表引用计数。

|
| result |

Result 类型的错误处理。

|
| slice |

动态大小的视图到一个连续的序列, [T].

|
| str |

Unicode 字符串片。

|
| string |

一个 UTF-8 编码的可增长字符串。

|
| sync |

有用的同步原语。

|
| task |

类型和 Traits 用于处理异步任务。

|
| thread |

原生线程。

|
| time |

时间量化。

|
| u8 | Deprecation planned

8 位无符号整数类型的常量。

|
| u16 | Deprecation planned

16 位无符号整数类型的常量。

|
| u32 | Deprecation planned

32 位无符号整数类型的常量。

|
| u64 | Deprecation planned

64 位无符号整数类型的常量。

|
| u128 | Deprecation planned

128 位无符号整数类型的常量。

|
| usize | Deprecation planned

指针大小的无符号整数类型的常量。

|
| vec |

具有堆已分配内容的连续可增长数组类型,写为 Vec<T>

|

Macros

| concat_idents | Experimental

将标识符串联为一个标识符。

|
| format_args_nl | Experimental

format_args 相同,但最后添加一个换行符。

|
| is_aarch64_feature_detected | Experimental

如果在 aarch64 目标以外的其他地方使用 is_aarch64_feature_detected,则阻止编译。

|
| is_arm_feature_detected | Experimental

如果在 ARM 目标以外的其他地方使用 is_arm_feature_detected,则阻止编译。

|
| is_mips64_feature_detected | Experimental

如果在 MIPS64 目标以外的其他地方使用 is_mips64_feature_detected,则阻止编译。

|
| is_mips_feature_detected | Experimental

如果在 MIPS 目标以外的其他地方使用 is_mips_feature_detected,则阻止编译。

|
| is_powerpc64_feature_detected | Experimental

如果在 PowerPC64 目标以外的其他地方使用 is_powerpc64_feature_detected,则阻止编译。

|
| is_powerpc_feature_detected | Experimental

如果在 PowerPC 目标以外的其他地方使用 is_powerpc_feature_detected,则阻止编译。

|
| llvm_asm | Experimental

LLVM 样式的内联汇编。

|
| log_syntax | Experimental

将传递的 tokens 打印到标准输出中。

|
| trace_macros | Experimental

启用或禁用用于调试其他宏的跟踪功能。

|
| assert |

声明在运行时布尔表达式为 true

|
| assert_eq |

断言两个表达式彼此相等 (使用 PartialEq)。

|
| assert_ne |

断言两个表达式彼此不相等 (使用 PartialEq)。

|
| cfg |

在编译时评估配置标志的布尔组合。

|
| column |

扩展到调用它的列号。

|
| compile_error |

导致编译失败,并遇到给定的错误消息。

|
| concat |

将字面量串联成一个静态字符串切片。

|
| dbg |

打印并返回给定表达式的值,以进行快速而肮脏的调试。

|
| debug_assert |

声明在运行时布尔表达式为 true

|
| debug_assert_eq |

断言两个表达式彼此相等。

|
| debug_assert_ne |

断言两个表达式彼此不相等。

|
| env |

在编译时检查环境变量。

|
| eprint |

打印到标准错误。

|
| eprintln |

用换行符打印到标准错误。

|
| file |

扩展为调用该文件的文件名。

|
| format |

使用运行时表达式的插值创建 String

|
| format_args |

构造其他字符串格式宏的参数。

|
| include |

根据上下文将文件解析为表达式或项。

|
| include_bytes |

包含一个文件作为对字节数组的引用。

|
| include_str |

包含 UTF-8 编码的文件作为字符串。

|
| is_x86_feature_detected |

一个在 运行时 测试 x86/x86-64 平台上是否具有 CPU 功能的宏。

|
| line |

扩展为在其上被调用的行号。

|
| matches |

返回给定表达式是否与任何给定模式匹配。

|
| module_path |

扩展为代表当前模块路径的字符串。

|
| option_env |

(可选) 在编译时检查环境变量。

|
| panic |

Panics 当前线程。

|
| print |

打印到标准输出。

|
| println |

用换行符打印到标准输出。

|
| stringify |

对其参数进行字符串化。

|
| thread_local |

声明一个新的 std::thread::LocalKey 类型的线程本地存储密钥。

|
| todo |

表示未完成的代码。

|
| try | Deprecated

解开结果或传播其错误。

|
| unimplemented |

通过恐慌并带有 “not implemented” 消息来指示未实现的代码。

|
| unreachable |

表示无法访问的代码。

|
| vec |

创建一个包含参数的 Vec

|
| write |

将格式化的数据写入缓冲区。

|
| writeln |

将格式化的数据写入缓冲区,并附加换行符。

|

Keywords

| SelfTy |

traitimpl 块中的实现类型,或类型定义中的当前类型。

|
| as |

在类型之间进行转换,或重命名导入。

|
| async |

返回 Future,而不是阻塞当前线程。

|
| await |

暂停执行,直到 Future 的结果准备就绪为止。

|
| break |

从循环中提前退出。

|
| const |

编译时常量和编译时可评估函数。

|
| continue |

跳到循环的下一个迭代。

|
| crate |

Rust 二进制或库。

|
| dyn |

dyn 是 [trait 对象] 类型的前缀。

|
| else |

if 条件评估为 false 时要评估的表达式。

|
| enum |

可以是几个成员中任何一个的类型。

|
| extern |

链接到或导入外部代码。

|
| false |

bool 类型的值,表示逻辑 false

|
| fn |

一个函数或函数指针。

|
| for |

使用 in 进行迭代,使用 implhigher-ranked trait bounds (for<'a>) 实现 trait。

|
| if |

如果条件成立,则评估一个块。

|
| impl |

为类型实现一些功能。

|
| in |

使用 for 迭代一系列值。

|
| let |

将值绑定到变量。

|
| loop |

无限循环。

|
| match |

基于模式匹配的控制流。

|
| mod |

将代码整理到 模块 中。

|
| move |

按值捕获 闭包 的环境。

|
| mut |

可变变量,引用或指针。

|
| pub |

使一个项目对其他人可见。

|
| ref |

在模式匹配期间由引用绑定。

|
| return |

从函数返回值。

|
| self |

方法的接收者,或当前模块。

|
| static |

静态项是在程序的整个持续时间 ('static 生命周期) 内有效的值。

|
| struct |

由其他类型组成的类型。

|
| super |

当前 模块 的父级。

|
| trait |

一组类型的通用接口。

|
| true |

bool 类型的值,表示逻辑 true

|
| type |

为现有类型定义别名。

|
| union |

Rust 等价于 c 风格的 union

|
| unsafe |

memory safety 不能由类型系统验证的代码或接口。

|
| use |

从其他 crates 或模块导入或重命名项。

|
| where |

添加使用项必须坚持的约束。

|
| while |

保持条件时循环播放。

|

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant