这个问题使用早于 Rust 1.0 的语法,但概念是通用的,并且许多答案已更新以反映稳定的 Rust 1.0。
这个问题是关于程序员在学习 Rust 时可能会尝试的一个非常基本的事情。
你不能问一个关于 Rust 语言的简单问题,我不认为,但我是一个有 30 年经验的程序员,我想不通。
我认为这int::range
与闭包有关。
这是我在 Rust 的早期版本(1.0 之前)中写的。
fn main() {
int::range(0, 100, {|i|
io::println(i);
});
}
这会产生可爱的错误消息,我不知道如何修复:
hello.rs:3:19: 5:2 error: mismatched types: expected `&fn(int) -> bool` but found `()` (expected fn but found ())
hello.rs:3 int::range(0, 100, {|i|
hello.rs:4 io::println(i);
hello.rs:5 });
它是如何打印出我的整个函数体的,这很有趣,但我仍然不知道那是&fn(int) ->b ool
什么意思。我隐约怀疑,在 Rust 中明确不允许迭代器闭包的主体不声明任何返回类型,这让我感到困惑。