gpt4 book ai didi

rust - 为什么 for 循环不要求迭代器是可变的?

转载 作者:行者123 更新时间:2023-11-29 08:29:58 24 4
gpt4 key购买 nike

<分区>

我不明白 Rust 迭代器的可变性。为了弄清楚,我有以下内容:

struct Fibonacci {
curr: u32,
next: u32,
}

impl Iterator for Fibonacci {
type Item = u32;

fn next(&mut self) -> Option<u32> {
let new_next = self.curr + self.next;
self.curr = self.next;
self.next = new_next;
Some(self.curr)
}
}

fn fibonacci() -> Fibonacci {
Fibonacci { curr: 1, next: 1 }
}

fn main() {
let f: Fibonacci = fibonacci();
for i in f.take(5) {
println!("> {}", i);
}
}

非常简单,我有一个使用 fibonacci 返回的自定义迭代器。现在,当我创建它时,f 变量是不可变的。 for 循环中发生了什么使它起作用? for 循环不就是可变地使用了 f 吗?

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com