Rust語言之GoF設計模式:迭代器模式
迭代器是一種行為設計模式,它允許順序遍歷複雜的資料結構而不暴露其內部細節。
標準迭代器
迭代器在Rust慣用語中被大量使用:
let array = &[1, 2, 3]; let iterator = array.iter(); // Traversal over each element of the vector. iterator.for_each(|e| print!("{}, ", e)); |
自定義迭代器
在 Rust 中,定義自定義迭代器的推薦方法是使用標準std::iter 的Iterator trait
impl Iterator for UserIterator<'_> { fn next(&mut self) -> Option<Self::Item>; } |
let users = UserCollection::new(); let mut iterator = users.iter(); iterator.next(); |
上述程式碼方法next是唯一Iterator必須實現的trait方法。它可以訪問大量的標準方法,例如fold、map、for_each。
Rust 迭代器是惰性的,這意味著它們在被告知之前不會執行。這意味著您可以在迭代器上新增任何一系列操作,並且在您使用它之前它永遠不會“執行”。
如果將職責鏈 責任鏈 中的過濾器組合成一個集合,那麼對這個集合需要迭代應用啟用一個個過濾器,Rust這種懶惰是有優勢的,只有在執行時才會啟用,而不會耗費大量預處理過程。
如果將命令模式中一個個命令組合成一個大集合,那麼也需要迭代器。
相關文章
- Rust語言之GoF設計模式: 模板方法模式RustGo設計模式
- Rust語言之GoF設計模式:原型模式RustGo設計模式原型
- Rust語言之GoF設計模式:工廠模式RustGo設計模式
- Rust語言之GoF設計模式:責任鏈模式RustGo設計模式
- Rust語言之GoF設計模式:中介者Mediator模式RustGo設計模式
- Rust語言之GoF設計模式:抽象工廠模式RustGo設計模式抽象
- Rust語言之GoF設計模式: 直譯器Interpreter模式RustGo設計模式
- Rust語言之GoF設計模式:Flyweight享元模式RustGo設計模式
- Rust語言之GoF設計模式:備忘錄Memento模式RustGo設計模式
- Rust語言之GoF設計模式:靜態工廠RustGo設計模式
- Rust語言之GoF設計模式:介面卡AdapterRustGo設計模式APT
- 設計模式_GoF設計模式Go
- GOF設計模式Go設計模式
- 設計模式(十七)迭代器模式設計模式
- js設計模式--迭代器模式JS設計模式
- JS設計模式(迭代器模式)JS設計模式
- 設計模式之迭代器模式設計模式
- golang設計模式之迭代器模式Golang設計模式
- Javascript設計模式之迭代器模式JavaScript設計模式
- 簡說設計模式——迭代器模式設計模式
- JavaScript 設計模式(六) 迭代器模式JavaScript設計模式
- 極簡設計模式-迭代器模式設計模式
- Java設計模式8:迭代器模式Java設計模式
- 設計模式(十六)迭代器設計模式
- Go語言實現GoF設計模式:介面卡模式Go設計模式
- 23天設計模式之迭代器模式設計模式
- javascript設計模式 之 4 迭代器模式JavaScript設計模式
- C#設計模式之迭代器模式C#設計模式
- 設計模式-行為篇(迭代器模式)設計模式
- 23種設計模式之迭代器模式設計模式
- 16.java設計模式之迭代器模式Java設計模式
- 17、Python與設計模式–迭代器模式Python設計模式
- 設計模式--迭代器模式Iterator(行為型)設計模式
- C#設計模式系列:迭代器模式(Iterator)C#設計模式
- JAVA設計模式之 迭代器模式【Iterator Pattern】Java設計模式
- PHP設計模式漫談之迭代器模式PHP設計模式
- 軟體設計模式學習(二十)迭代器模式設計模式
- 軟體設計模式系列之十八——迭代器模式設計模式