2.6 模式匹配 模式匹配 经常出现在函数式编程里,用于为复杂的类型系统提供一个轻松的解构能力。 在枚举和流程控制那章,我们遗留了两个问题,都是关于 match 的, 第一个是如何对 Option 枚举进行进一步处理, 另外一个是如何用 match 来替代 else if 这种丑陋的多重分支使用方式。 2025-01-05 rust > rust圣经 > rust基础 #rust
2.5 流程控制 1. 流程控制 1.1 使用 if 来做分支控制 if else 表达式根据条件执行不同的代码分支: 12345if condition == true { // A...} else { // B...} 该代码读作:若 condition 的值为 true,则执行 A 代码,否则执行 B 代码。 先看下面代码: 123456 2025-01-05 rust > rust圣经 > rust基础 #rust
2.4.5 数组 1. 数组 在日常开发中,使用最广的数据结构之一就是数组,在 Rust 中,最常用的数组有两种,第一种是速度很快但是长度固定的 array,第二种是可动态增长的但是有性能损耗的 Vector,在本书中,我们称 array 为数组,Vector 为动态数组。 不知道你们发现没,这两个数组的关系跟 &str 与 String 的关系很像,前者是长度固定的字符串切片,后者是可动态 2025-01-05 rust > rust圣经 > rust基础 #rust
2.4.4 枚举 枚举 枚举(enum 或 enumeration)允许你通过列举可能的成员来定义一个枚举类型,例如扑克牌花色: 123456enum PokerSuit { Clubs, Spades, Diamonds, Hearts,} 再回到之前创建的 PokerSuit,扑克总共有四种花色,而这里我们枚举出所有的可能值,这也正是 枚举 名称的由来。 任何一张扑克, 2025-01-05 rust > rust圣经 > rust基础 #rust
2.4.3 结构体 结构体 1. 结构体语法 1.1 定义结构体 一个结构体由几部分组成: 通过关键字 struct 定义 一个清晰明确的结构体 名称 几个有名字的结构体 字段 例如, 以下结构体定义了某网站的用户: 123456struct User { active: bool, username: String, email: String, sign_ 2025-01-05 rust > rust圣经 > rust基础 #rust
2.4.2 元组 元组 元组是由多种类型组合到一起形成的,因此它是复合类型,元组的长度是固定的,元组中元素的顺序也是固定的。 可以通过以下语法创建一个元组: 123fn main() { let tup: (i32, f64, u8) = (500, 6.4, 1);} 变量 tup 被绑定了一个元组值 (500, 6.4, 1),该元组的类型是 (i32, f64, u8), 2025-01-05 rust > rust圣经 > rust基础 #rust
2.4.1 字符串与切片 1 字符串 1.1 切片(slice) 切片并不是 Rust 独有的概念,在 Go 语言中就非常流行,它允许你引用集合中部分连续的元素序列,而不是引用整个集合。 对于字符串而言,切片就是对 String 类型中某一部分的引用,它看起来像这样: 1234567#![allow(unused)]fn main() {let s = String::from("hello 2025-01-05 rust > rust圣经 > rust基础 #rust
2.4 复合类型 1 复合类型 本章的重点在复合类型上,顾名思义,复合类型是由其它类型组合而成的,最典型的就是结构体 struct 和枚举 enum。例如平面上的一个点 point(x, y),它由两个数值类型的值 x 和 y 组合而来。我们无法单独去维护这两个数值,因为单独一个 x 或者 y 是含义不完整的,无法标识平面上的一个点,应该把它们看作一个整体去理解和处理。 来看一段代码,它使用我们之前学 2025-01-05 rust > rust圣经 > rust基础 #rust
2.3.2 引用与借用 1 引用与借用 Rust 通过 借用(Borrowing) 这个概念来达成上述的目的,获取变量的引用,称之为借用(borrowing)。正如现实生活中,如果一个人拥有某样东西,你可以从他那里借来,当使用完毕后,也必须要物归原主。 1.1 引用与解引用 常规引用是一个指针类型,指向了对象存储的内存地址。在下面代码中,我们创建一个 i32 值的引用 y,然后使用解引用运算符来解出 y 所使 2025-01-05 rust > rust圣经 > rust基础 #rust
2.3.1 所有权 1 所有权 所有的程序都必须和计算机内存打交道,如何从内存中申请空间来存放程序的运行内容,如何在不需要的时候释放这些空间,成了重中之重,也是所有编程语言设计的难点之一。在计算机语言不断演变过程中,出现了三种流派: 垃圾回收机制(GC),在程序运行时不断寻找不再使用的内存,典型代表:Java、Go 手动管理内存的分配和释放, 在程序中,通过函数调用的方式来申请和释放内存,典型代表:C++ 2025-01-05 rust > rust圣经 > rust基础 #rust