作者:CN059

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
32、Traits总练习

32、Traits总练习

题目 定义一个SaturatingU16类型。 该类型有一个u16的值。 它支持从u16,u8,&u16,&u8转换。 它支持加法运算符重载。 确保SaturatingU16, u16, &u16和 &SaturatingU16加法达到u16::MAX时饱和。 确保

CN059 CN059 2025-09-16
38 0 0
31、The Drop trait

31、The Drop trait

The Drop trait 在学析构函数的时候,提到了drop函数: 回收类型占用的内存(即std::mem::size_of bytes) 清理值可能正在管理的任何其他资源(比如String的堆缓冲区) 第二点是Drop trait的用武之地 pub trait Drop { fn

CN059 CN059 2025-09-15
67 0 0
30、Copy trait

30、Copy trait

复制值(第二部分) 与上一节的例子一样,但是有点不同,使用u32而不是String作为类型。 fn consumer(s: u32) { /* */ } fn example() { let s: u32 = 5; consumer(s); let t = s + 1

CN059 CN059 2025-09-15
36 0 0
1 4 5 6 7 8 11