21.16 Patterns in for
Loops and Function Parameters
21.16.1 for
Loops
A for
loop’s header can destructure each item from the iterator:
fn main() { let data = vec!["apple", "banana", "cherry"]; for (index, fruit) in data.iter().enumerate() { println!("{}: {}", index, fruit); } }
Here, (index, fruit)
destructures the (usize, &&str)
tuple from .enumerate()
.
21.16.2 Function Parameters
Function parameters can also be patterns:
fn sum_pair((a, b): (i32, i32)) -> i32 { a + b } fn main() { println!("{}", sum_pair((4, 5))); }
You can use _
to ignore unneeded parameters:
#![allow(unused)] fn main() { fn do_nothing(_: i32) { // This parameter is intentionally unused } }
Closures follow the same rules, allowing patterns in their parameter lists.