Foreach文
forループは for <pattern> in <expression> { /* optional statements */ } という構造を持つ。 これは暗黙のうちに式の IntoIterator::into_iter メソッドを呼び出し、結果として得られる値を使用する。 これは Iterator trait を実装しなければならない。 式がそれ自体イテレータである場合、それは implementation of IntoIterator for all Iterator を通して for ループによって直接使用され、イテレータは変更されずに返される。 ループは、ループ本体を実行する前に、イテレータの Iterator::next メソッドを呼び出す。 Iterator::next が Some(_) を返した場合、内部の値が pattern に割り当てられ、ループ本体が実行される。 None を返した場合、ループは終了する。
let mut numbers = vec![1, 2, 3]; // Immutable reference: for number in &numbers { // calls IntoIterator::into_iter(&numbers) println!("{}", number); } for square in numbers.