摘要:
并发编程(concurrent programming):允许程序中的不同部分独立运行;并行编程(parallel programming):允许程序中的不同部分同时执行;无畏并发可以让你编写出没有诡异缺陷的代码,并且易于重构而不会引入新的缺陷。 # 一、使用线程同时运行代码 在大部分现代操作系统中 阅读全文
摘要:
指针(pointer)是一个通用概念,它指代那些包含内存地址的变量。这个地址被用于索引,被用于指向内存中的其他数据。引用是用`&`符号表示,会借用它所指向的值。引用除了指向数据外没有任何其他功能,也没有任何额外的开销,它是Rust中最为常见的一种指针。 而智能指针则是一些数据结构,它们的行为类似于指 阅读全文
摘要:
# 一、使用发布配置来定制构建 Rust中的发布配置是一系列预定义好的配置方案,它们的配置选项各有不同,都允许程序员对细节进行定制修改。 Cargo最常用的配置有两种: 执行`cargo build`时使用的dev配置,以及执行`cargo build --release`时使用的release配置 阅读全文
摘要:
# 一、闭包:能够捕获环境的匿名函数 Rust中的闭包是一种可以存入变量或作为参数传递给其他函数的匿名函数。你在可以在一个地方创建闭包,然后在不同的上下文环境中调用该闭包来完成运算。**和一般函数不同,闭包可以从定义它作用域中捕获值。** ## 1、使用闭包来创建抽象化的程序行为 假设有这样一个场景 阅读全文
摘要:
# 一、接收命令行参数 创建minigrep项目 ```Rust cargo new minigrep ``` 实现这一工具的首要任务是让minigrep接收两个命令行参数:文件名和用于搜索的字符串。因此,我们希望通过如下方式: ```Rust cargo run searchstring exam 阅读全文
摘要:
# 一、如何编写测试 测试函数的函数体中一般包含3个部分: 1. 准备所需的数据或状态; 2. 调用需要测试的代码; 3. 断言运行结果与我们所期望的一致; ## 1、测试函数的构成 在最简单的情形下,Rust中的测试说就是一个标注有test属性的函数。属性(attribute)是一种用于修饰Rus 阅读全文
摘要:
# 一、删减重复代码 ```Rust fn main() { let number_list = vec![34, 50, 25, 100, 65]; let mut largest = number_list[0]; for number in number_list { if number > 阅读全文
摘要:
Rust将错误分为两大类:可恢复错误与不可恢复错误。其他大部分变成语言都没有可以区分这两种错误,而是通过异常之类的机制来统一处理它们。虽然Rust没有类似的异常处理机制,但它提供了用于可恢复错误的类型`Result`,以及在程序出现不可恢复错误时中止运行的`panic!`宏。 # 一、不可恢复错误与 阅读全文
摘要:
Rust标准库包含了一系列非常有用的被称为**集合**(collections)的数据结构。大部分的数据结构都代表着某个特定的值,但集合却可以包含多个值。与内置的数组与元组类型不同,这些集合将自己持有的数据存储在堆上。不同的集合类型有着不同的性能特性与开销。 - 动态数组(Vector):可以让你连 阅读全文
摘要:
包(package):一个用于构建、测试并分享单元包的Cargo功能; 单元包(crate):一个用于生成库或可执行文件的树形模块结构; 模块(module)及use关键字:它们被用于控制文件结构、作用域及路径的私有性; 路径(path):一种用于命名条目的方法,这些条目包括结构体、函数和模块等; 阅读全文