指针是一个通用的概念,它指代那些包含内存地址的变量。Rust 中最常用的指针就是之前介绍过的 引用
。引用是用 &
符号表示的,会借用它所指向的值。引用除了指向数据之外没有任何其他功能,也没有任何开销,它是 Rust 中最常见的指针。而智能指针(smart pointer)则是一些数据结构,它们的行为类似于指针但是拥有额外的元数据和附件功能。Rust 标准库中不同的智能指针提供了比引用更为强大的功能。
Rust 权威指南(13):进一步认识 Cargo 及 crates.io
目前我们只是使用了一些基础的 Cargo 特性来构建、运行以及测试代码,但是其实它还有相当多的其他功能,这篇文章将讨论这些更为高级的特性。
Rust 权威指南(12):函数式语言特性:迭代器与闭包
Rust 在设计过程中从许多现有语言和技术中获得启发,函数式编程
理念就是其中之一,它对 Rust 产生了非常显著的影响。常见的函数式风格编程中包括:将函数当做参数、将函数作为其他函数的返回值、将函数赋值给变量等等。闭包和迭代器是 Rust 受函数式编程语言启发而实现的功能,它们帮助 Rust 在清晰地表达出高层次抽象概念的同时兼顾底层性能。
Rust 权威指南(11):I/O 项目:编写一个命令行程序
这里将开发一个能够和文件系统交互并处理命令行输入、输出的工具。Rust 非常适合编写命令行工具,因为它具有快速、安全、跨平台以及产出物为单一二进制文件的特点。
Rust 权威指南(10):编写自动化测试
程序的正确性用来衡量一段代码的实际行为与设计目标之间的一致程度。Rust 在语言层面内置了编写测试代码、执行自动化测试任务的功能。本章会讨论 Rust 测试工具的运行机制。
Rust 权威指南(09):泛型、trait 和生命周期
泛型是指具体类型或其他属性的抽象替代。在编写代码时,可以直接描述泛型的行为,或者它与其他泛型产生的联系,而无须知晓它在编译和运行代码时采用的具体类型。在定义泛型时,使用 trait 可以将其限制为拥有某些行为的类型,而不是任意类型。生命周期可以向编译器提供引用之间的相互关系,它允许我们在借用值时通过编译器来确保这些引用的有效性。
Rust 权威指南(08):错误处理
为了应对软件中那些几乎无法避免的错误,Rust 提供了许多特性来处理这类出了问题的场景。在大部分情况下,Rust 会迫使你意识到可能出现错误的地方,并在编译阶段确保它们得到妥善的处理。在 Rust 中,将错误分为两类:可恢复错误
与 不可恢复错误
。
Rust 权威指南(07):通用集合类型
Rust 标准库包含了一系列非常有用的、称为 集合
的数据结构。与内置的数组和元组类型不同,这些集合将持有的数据存储在堆上。这意味着数据的大小不需要在编译时确定,并且可以随着程序的运行按需扩大或缩小数据占用的空间。
Rust 权威指南(06):使用包、单元包及模块来管理日渐复杂的项目
按照不同的特性来组织或者分割相关功能的代码,能够让我们清晰地找到实现指定功能的代码片段。一个包(package)可以拥有多个二进制单元及一个可选的库单元包。代码也可以拆分到独立的单元包(crate)中,并将它作为外部依赖进行引用。除了对功能进行分组外,对实现细节进行封装可以让你在更高层次上复用代码。另一个与组织和封装密切相关的概念是作用域(scope)。
Rust 权威指南(05):枚举与模式匹配
枚举类型也称为 枚举
,允许我们列举所有可能的值来定义一个类型。在 Rust 的 match 表达式中使用模式匹配,可以根据不同的枚举值来执行不同的代码。