使用repeat,我可以创建一个重复一个元素的迭代器。但是,如何无限重复多个值?
例如:

let repeat_1 = repeat(1); // 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
let repeat_123 = repeat([1, 2, 3]); // 1, 2, 3, 1, 2, 3, 1, 2, ... // or similar

最佳答案

您可以像这样使用 .cycle() :

fn main() {
    let values = [1, 2, 3];
    let repeat_123 = values.iter().cloned().cycle();
    for elt in repeat_123.take(10) {
        println!("{}", elt)
    }
}

它适用于任何可克隆的迭代器(迭代器,而不是其元素)。

请注意, .cloned() 适配器是附带的!它将切片的迭代器的按引用迭代器元素转换为值。

编写此特定序列的一种更简单的方法是:
let repeat_123 = (1..4).cycle();

关于iterator - 如何创建无限重复多个值的迭代器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28436240/

10-11 22:41
查看更多