std 您所在的位置:网站首页 time标准库 std

std

2024-04-23 13:35| 来源: 网络整理| 查看: 265

Rust 标准库

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

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

如何阅读本文档

如果您已经知道要查找的内容的名称,找到它的最快方法是使用页面顶部的 search bar。

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

std::* modules Primitive types Standard macros The Rust Prelude

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

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

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

标准库文档中有什么?

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

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

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

例如,有一个 原始类型为 i32 的页面列出了可以调用的所有方法 32 位整数 (非常有用),并且有一个 std::i32 模块的页面 记录了常量值 MIN 和 MAX (很少有用)。

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

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

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

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

对文档的更改做出贡献

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

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

Rust 标准库之旅

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

容器和集合

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

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

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

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

&[T]- 共享切片 &mut [T]- 可变切片 Box - 拥有所有权的切片

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

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

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

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

平台抽象和 I/O

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

I/O 的常见类型,包括 files、TCP 和 UDP,在 io、fs 和 net 模块中定义。

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有