Challenge 2: Finding the First Even Number — Possible Solution ==================================================================== fn find_first_even(numbers: &[i32]) -> Option { for &n in numbers { if n % 2 == 0 { return Some(n); } } None } fn main() { let nums = [1, 3, 7, 8, 9]; match find_first_even(&nums) { Some(n) => println!("First even number: {}", n), None => println!("No even number found"), } } WHY THIS WORKS AS AN ANSWER ------------------------------ find_first_even returns Option rather than a plain i32, because there genuinely might not be an even number in the slice — exactly the "value might be absent" situation this chapter's Option section described. Returning Some(n) the moment an even number is found wraps the real value; falling through the entire loop without finding one returns None instead — there is no way to accidentally return "nothing" without it being explicitly represented as one of these two variants. The calling code's match forces handling BOTH possibilities: Some(n) extracts and prints the found number, None prints a fallback message — the compiler would refuse to compile this match if either arm were missing, guaranteeing the "no even number" case can never be silently ignored the way a Go function returning a zero-value int (0) could be mistaken for a genuinely found value of 0.