学习笔记

42、Packages(包)

42、Packages(包)

Libraries and binaries(库和二进制文件)   上一节的练习,为TicketNewError实现Errortrait写了很多代码,手动实现Display,还有Error实现块。   我们可以使用thiserror删除一些boilerplate(样板代码,在编程

CN059 CN059 2025-09-17
33 0 0
41、Error trait

41、Error trait

Error reporting(错误报告)   在上一个练习中,我们必须解构TitleError变体以提取错误消息并将其传递给panic!宏。   这是错误报告的一个(基本)示例:将错误类型转换为可以向用户、开发者等显式的表示形式。   对于每个Rust开发人员来说,想

CN059 CN059 2025-09-17
36 0 0
40、Error enums(错误枚举)

40、Error enums(错误枚举)

Error enums(错误枚举)   神人RustRover,你自己也知道你的代码逆天。上一节的代码给我整不会了,你怎么直接用字符串硬编码匹配错误呢?   不过RustRover自己也知道上一节代码不行,这一节就要做出一些改善了。   在团队协作时,同事可能会重新处理

CN059 CN059 2025-09-17
26 0 0
39、Unwarp(拆封)

39、Unwarp(拆封)

Unwarpping   这个Unwarp,是Rust里面很重要的一个特性,中文可以翻译为拆封,不过我没见过有人用它的中文汉化的,还是保留英文名Unwarp。   回到正题上来,上一节的习题为Ticket::new实现了可处理异常的Result返回值,Ticket::new现在返

CN059 CN059 2025-09-16
28 0 0
38、可处理错误和Result枚举

38、可处理错误和Result枚举

Fallibility(可错性)   重新回顾之前练习中的Ticket::new函数 impl Ticket { pub fn new( title: String, description: String, status: St

CN059 CN059 2025-09-16
29 0 0
37、Nullability(可空性)和元组

37、Nullability(可空性)和元组

Nullability(可空性)   我们对assigned方法的实现相当直率,对to-do和done状态的ticket直接panic还是不太合适。   使用Rust中的Option类型可以做得更好。   Option   Option是一种可以表示为null

CN059 CN059 2025-09-16
42 0 0
36、if let和let-else(模式匹配)

36、if let和let-else(模式匹配)

Concise branching(简洁的分支)   上一节练习的代码可以写成这个样子: impl Ticket { pub fn assigned_to(&self) -> &str { match &self.status {

CN059 CN059 2025-09-16
33 0 0
35、携带数据的枚举变体

35、携带数据的枚举变体

枚举变体可以携带数据   enum Status { ToDo, InProgress, Done, } 我们的枚举通常称为C风格的枚举(C-Style enum)。 每个变体都是一个简单的标签,有点像命名常量。很多其他的语言也有这种枚举方式:比如C/C++,Ja

CN059 CN059 2025-09-16
34 1 0
34、match(模式匹配)

34、match(模式匹配)

match(模式匹配)   枚举类型比较常用的应用场景是用match语句来进行模式匹配。 enum Status { ToDo, InProgress, Done } impl Status { fn is_done(&self) -> bo

CN059 CN059 2025-09-16
38 0 0
33、枚举

33、枚举

枚举 上一个章节学Trait的时候,用的是Ticket这个结构体的例子,Ticket只有三个状态:To-Do,InProgress和Done。   但是Ticket结构体里的status字段,或new方法里参数的类型,并不能很好的体现这一点。 #[derive(Debug, Partial

CN059 CN059 2025-09-16
62 0 0
1 3 4 5 6 7 9