zoukankan      html  css  js  c++  java
  • 【Rust】trait迭代器

    环境

    • Rust 1.56.1
    • VSCode 1.61.2

    概念

    参考:https://doc.rust-lang.org/rust-by-example/trait/iter.html

    示例

    区间手动迭代

    fn main() {
        // `0..3` is an `Iterator` that generates: 0, 1, and 2.
        let mut sequence = 0..3;
    
        println!("Four consecutive `next` calls on 0..3");
        println!("> {:?}", sequence.next());
        println!("> {:?}", sequence.next());
        println!("> {:?}", sequence.next());
        println!("> {:?}", sequence.next());
    }
    

    区间自动迭代

    fn main() {
        println!("Iterate through 0..3 using `for`");
        for i in 0..3 {
            println!("> {}", i);
        }
    }
    

    Fibonacci

    struct Fibonacci {
        curr: u32,
        next: u32,
    }
    
    impl Iterator for Fibonacci {
        type Item = u32;
    
        fn next(&mut self) -> Option<Self::Item> {
            let new_next = self.curr + self.next;
    
            self.curr = self.next;
            self.next = new_next;
    
            Some(self.curr)
        }
    }
    
    fn fibonacci() -> Fibonacci {
        Fibonacci { curr: 0, next: 1 }
    }
    
    fn main() {
        // take 限制迭代次数
        println!("The first four terms of the Fibonacci sequence are: ");
        for i in fibonacci().take(4) {
            println!("> {}", i);
        }
    
        // skip 跳过迭代次数
        println!("The next four terms of the Fibonacci sequence are: ");
        for i in fibonacci().skip(4).take(4) {
            println!("> {}", i);
        }
    }
    

    数组迭代

    fn main() {
        let array = [1u32, 3, 3, 7];
        println!("Iterate the following array {:?}", &array);
        for i in array.iter() {
            println!("> {}", i);
        }
    }
    

    总结

    了解了 Rust 中的迭代器,可以通过 for 循环来遍历迭代器。

    附录

  • 相关阅读:
    训练1-J
    训练1-K
    训练1-P
    二分查找法详解
    POJ:1094-Sorting It All Out(拓扑排序经典题型)
    POJ:2632-Crashing Robots
    POJ:1086-Parencodings
    POJ:2586-Y2K Accounting Bug
    POJ:2109-Power of Cryptography(关于double的误差)
    POJ:1328-Radar Installation
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/15726660.html
Copyright © 2011-2022 走看看