快速查询入口

<<Rust 语言圣经>> 既然自诩为 Rust 日常开发工具书,那就得有工具书的样子,如果没有了快速索引查询的功能,也就没有了灵魂。

因此我们决定在这里提供一个对全书内容进行快速索引的途径。理论上来说,你想查的任何东西在这里都可以快速的被找到并能进入相应的章节查看详细的介绍

可能大家会有疑问,不是有站内搜索功能嘛?是的,但是尴尬的是:首先它不支持中文,其次就算支持了中文,也一样不好用,我们需要的是快速精准地找到内容而不是模糊的查询内容。

索引列表 doing

NNNNNNNNNNNNNNNNNN
#ABCDEFGH
IJKLMNOPQ
RSTUVWXYZ

NNNNNN
CargoNamingKeywords

bottom

Sym

名称关键字简介
?错误传播用于简化错误传播
()单元类型单元类型,无返回值
! : 1. 函数 2. 类型永不返回永不返回
&引用常规引用是一个指针类型,指向了对象存储的内存地址
*解引用解出引用所指向的值
@变量绑定为一个字段绑定另外一个变量
_ : 1. 忽略变量 2. 模式匹配忽略1. 忽略该值或者类型,否则编译器会给你一个 变量未使用的 的警告
2. 模式匹配通配符
'a: 'b生命周期约束用来说明两个生命周期的长短
{:?} {:#?}打印结构体信息使用 #[derive(Debug)] 派生实现 Debug 特征,另见 格式化输出
::关联函数定义在 impl 中且没有 self 的函数

back

A

名称关键字简介
array 数组数组长度固定
元素必须有相同的类型
依次线性排列
可以通过索引访问其中的元素
let a: [i32; 5] = [1, 2, 3, 4, 5];
array slice数组切片let slice: &[i32] = &a[1..3];
as 转换类型转换(x as T)
KWA

back

B

名称关键字简介
变量遮蔽shadowing允许声明相同的变量名,后者会遮蔽掉前者
变量覆盖模式匹配无论是是 match 还是 if let,他们都可以在模式匹配时覆盖掉老的值,绑定新的值
变量作用域所有权作用域是一个变量在程序中有效的范围
表达式语句表达式:进行求值,结尾无 ;,有返回值,如 x + 9 另见 附录 C
语句:完成一个操作,结尾有 ; ,无返回值,如 let x = 9;
bool 布尔布尔类型true false,占用 1 字节
break循环控制直接跳出当前整个循环
backtrace 栈展开不可恢复错误RUST_BACKTRACE=1 cargo run
KWB

back

C

名称关键字简介
char 字符字符类型使用 '' 表示,所有的 Unicode 值
const 常量constantconst MAX_POINTS: u32 = 100_000;
const 泛型泛型const N: usize 针对值的泛型,适合处理数组长度的问题
const 泛型表达式泛型
Copy 拷贝浅拷贝任何基本类型的组合可以 Copy,不需要分配内存或某种形式资源的类型是可以 Copy 的。
continue循环控制跳过当前当次的循环,开始下次的循环
Clone 克隆深拷贝需要复制堆上的数据时,可以使用 .clone() 方法
Closure闭包闭包是一种匿名函数,它可以赋值给变量也可以作为参数传递给其它函数,不同于函数的是,它允许捕获调用者作用域中的值
KWC

back

D

名称关键字简介
derive派生特征#[derive(Trait)],被标记的对象自动实现对应的默认特征代码
详见:附录-派生特征
点操作符类型转换方法调用的点操作符,在调用时,会发生很多魔法般的类型转换,例如:自动引用、自动解引用,强制类型转换直到类型能匹配
KWD

back

E

名称关键字简介
enum 枚举枚举类型允许通过列举可能的成员来定义一个枚举类型
enum 同一化类型枚举方法枚举实现方法
KWE

back

F

名称关键字简介
浮点数数值类型f32
f64(默认类型)
for 循环循环控制for item in &collection {}
'fn' 函数函数名和变量名使用 蛇形命名法(snake case)
函数的位置可以随便放
每个函数参数都需要标注类型
调用同名的方法1. 默认调用类型上的方法
Struct.function(receiver_if_method, next_arg, ...);
2. 显式调用特征上的方法
Trait::function(receiver_if_method, next_arg, ...);
3. 完全限定语法
<Type as Trait>::function(receiver_if_method, next_arg, ...);
三种 Fn 特征闭包闭包捕获变量有三种途径,恰好对应函数参数的三种传入方式:转移所有权、可变借用、不可变借用
三种 Fn 的关系闭包
KWF

back

G

名称关键字简介
Generics 泛型泛型用同一功能的函数处理不同类型的数据
KWG

back

H

名称关键字简介
[HashMap]哈希类型HashMap<K, V>,存储的是一一映射的 KV 键值对,并提供了平均复杂度为 O(1) 的查询方法
HashMap::new()创建 HashMap,需要手动通过 use std::collections::HashMap; 引入到我们当前的作用域中来
hash.insert(K, V)插入键值对,必须声明为 mut
元组创建 HashMap使用迭代器和 collect 方法创建
let teams_map: HashMap<_, _> = teams_list.into_iter().collect();
查询 HashMap通过 get 方法可以获取元素,返回一个 Option<&T> 类型
更新 HashMap 中的值
KWH

back

I

名称关键字简介
if else流程控制根据条件执行不同的代码分支
else if流程控制处理多重条件
if let 匹配模式匹配当你只要匹配一个条件,且忽略其他条件时就用 if let,否则都用 match
impl Trait 1. 函数参数 2. 函数返回类型
KWI

back

J

名称关键字简介
KWJ

back

K

名称关键字简介
KWK

back

L

名称关键字简介
let变量绑定let x : u32 = 5;
let mut可变变量let mut x : u32 = 5; x = 9;
loop 循环循环控制无限循环,注意要配合 break
KWL

back

M

名称关键字简介
模式绑定模式匹配从模式中取出绑定的值
全模式列表模式匹配列出了所有的模式匹配
Method 方法implRust 的方法往往跟结构体、枚举、特征一起使用
Method gettergetter方法名跟结构体的字段名相同
match 匹配模式匹配1. match 的匹配必须要穷举出所有可能,因此这里用 _ 来代表未列出的所有可能性
2. match 的每一个分支都必须是一个表达式,且所有分支的表达式最终返回值的类型必须相同
matches! 宏模式匹配将一个表达式跟模式进行匹配,然后返回匹配的结果 truefalse
match guard匹配守卫位于 match 分支模式之后的额外 if 条件,它能为分支模式提供更进一步的匹配条件
move 移动转移所有权let s2 = s1;
s1 所有权转移给了 s2s1 失效
KWM

back

N

名称关键字简介
newtype for Traitnewtype为一个元组结构体创建新类型。该元组结构体封装有一个字段,该字段就是希望实现特征的具体类型
newtype newtype深入 Rust 类型
KWN

back

O

名称关键字简介
OptionOption 枚举用于处理空值,一个变量要么有值:Some(T), 要么为空:None
Option 解构模式匹配可以通过 match 来实现
KWO

back

P

名称关键字简介
panic! 不可恢复错误不可恢复错误程序会打印出一个错误信息,展开报错点往前的函数调用堆栈,最后退出程序
panic 原理剖析不可恢复错误
println!格式化参数对输出内容格式有更多要求
KWP

back

Q

名称关键字简介
KWQ

back

R

名称关键字简介
Range 序列生成连续的数值
只允许用于数字或字符类型
.. 右半开区间
..= 闭合区间
Result 可恢复的错误可恢复错误enum Result<T, E> { Ok(T), Err(E), }
对返回的错误进行处理可恢复错误对返回的错误进行处理
KWR

back

S

名称关键字简介
所有权与堆栈Rust 所有权提供的强大保障
所有权原则Rust 中每一个值都 有且只有 一个所有者(变量)
当所有者(变量)离开作用域范围时,这个值将被丢弃(drop)
slice 切片&str允许你引用 String 中部分连续的元素序列,而不是引用整个 String
语法:[开始索引..终止索引]
字符串字面量是切片
String 字符串String 类型Rust 中的字符串是 UTF-8 编码,也就是字符串中的字符所占的字节数是变化的(1 - 4)
String 操作String 方法由于 String 是可变字符串,因此我们可以对它进行创建、增删操作
String 转义String 方法通过转义的方式 \ 输出 ASCII 和 Unicode 字符
struct 结构体结构体通过关键字 struct 定义
一个清晰明确的结构体 名称
几个有名字的结构体 字段
通过 . 访问字段
self &self &mut selfMethod 方法self 指代类型的实例
Self 与 selfself 指代当前的实例对象,Self 指代特征或者方法类型的别名
生命周期标注语法生命周期&'a i32
生命周期消除生命周期
生命周期消除规则补充生命周期
函数中的生命周期生命周期
结构体中的生命周期生命周期
方法中的生命周期生命周期
静态生命周期生命周期&'static 拥有该生命周期的引用可以和整个程序活得一样久,另见 &'static 和 T: 'static
KWS

back

T

名称关键字简介
Tuple 元组由多种类型组合一起,元组的长度是固定的,元组中元素的顺序也是固定的
用模式匹配解构元组:let (x, y, z) = (20, 19.2, 1)
. 来访问元组:tuple.0 索引从 0 开始
Tuple Struct元组结构体结构体必须要有名称,但字段可以没有名称
struct Color(i32, i32, i32);
Trait 特征特征一个可以被共享的行为,只要实现了特征,你就能使用该行为
T: Trait特征约束还可以有多重约束,T: Trait1 + Trait2
另见:where 约束
Trait Object特征对象特征对象指向实现了 Trait 特征的类型的实例,可以在运行时通过特征对象找到具体调用的类型方法
type 1. 关联类型 2. 默认泛型类型参数 3. 类型别名1. type Item;
Self 用来指代当前调用者的具体类型,那么 Self::em 就用来指代该类型实现中定义的 Item 类型
2. type Output = Struct;
指定一个默认值,返回一个关联类型 Output
特征定义中的特征约束特征用来说明一个特征需要实现另一个特征
TryInto 转换类型转换尝试进行一次转换,并返回一个 Result,可以对其进行相应的错误处理
KWT

back

U

名称关键字简介
Unit-like Struct单元结构体没有任何字段和属性
struct AlwaysEqual;
unwrap & expect可恢复错误如果返回成功,就将 Ok(T) 中的值取出来,如果失败,就直接 panic
KWU

back

V

名称关键字简介
Vector 动态数组动态数组Vec<T>,动态数组允许你存储多个值,这些值在内存中一个紧挨着另一个排列。只能存储相同类型的元素
Vec::new创建动态数组
vec![]创建动态数组,能在创建时给予初始化值
vec.push向数组尾部添加元素,必须声明为 mut
vec.get从 Vector 中读取元素,返回 Option<&T>
&vec[index]从 Vector 中读取元素,使用下标索引访问,从 0 开始
迭代遍历 Vector 中的元素如果想要依次访问数组中的元素,可以使用迭代的方式去遍历数组
存储不同类型的元素通过使用枚举类型和特征对象来实现不同类型元素的存储
KWV

back

W

名称关键字简介
while 循环循环控制当条件为 true 时,继续循环,条件为 false,跳出循环
where 约束特征约束当特征约束变多时,函数签名会很复杂,可以用 where 做形式上的改进
KWW

back

X

名称关键字简介
KWX

back

Y

名称关键字简介
KWY

back

Z

名称关键字简介
整数数值类型有符号整数,i8i16i32i64i128isize
无符号整数,u8u16u32u64u128usize
整形字面量进制书写十进制 98_222
十六进制 0xff
八进制 0o77
二进制 0b1111_0000
字节(仅限于u8) b'A'
KWZ

back

Cargo

名称关键字简介
CargoKWCG

back