この質問は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 では、イテレータのクロージャの本体で戻り値の型を宣言しないことは明示的に許可されていないのではないかと漠然と考えており、混乱しています。