Rust 学习笔记(24)-迭代器

参考章节《Rust 程序设计语言》第13.2章 使用迭代器处理元素序列

迭代器是遍历数据的一种方式

迭代器模式允许你对一个序列的项进行某些处理。
迭代器(iterator)负责遍历序列中的每一项和决定序列何时结束的逻辑。当使用迭代器时,我们无需重新实现这些逻辑。
在 Rust 中,迭代器是 惰性的(lazy),这意味着在调用方法使用迭代器之前它都不会有效果。

先看一个例子

  1. 迭代器的第一种使用方法
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
fn main() {
    let v1 = vec![1, 2, 3];

    let v1_iter = v1.iter(); // 创建一个迭代器

    // 通过 for 循环的方式来使用迭代器
    for val in v1_iter {
        println!("Got: {}", val);
    }
}

Rust 学习笔记(21)-生命周期

参考章节《Rust 程序设计语言》第10.3章 生命周期确保引用有效

生命周期有什么用?答:避免出现悬垂引用问题,那么问题来了,什么是悬垂引用

1
引用的对象已经被释放,但指针依然指向它,这会导致程序引用非预期的数据。

先说说看完书中这一章我自己的理解

  1. 生命周期是给谁看的?答:编译器!
  2. 生命周期就好像一套规则,告诉编译器以这个规则给我检查代码是否满足要求

Rust 学习笔记(20)-trait

参考章节《Rust 程序设计语言》第10.2章 Trait:定义共同行为

trait 类似其他语言中的 接口 的概念,我们可以通过 trait 以一种抽象的方式定义共享的行为。

书中这一段解释得很好,建议多读几次

一个类型的行为由其可供调用的方法构成。如果可以对不同类型调用相同的方法的话,这些类型就可以共享相同的行为了。
trait 定义是一种将方法签名组合起来的方法,目的是定义一个实现某些目的所必需的行为的集合。