次のようなloop文のプログラム(可動)を
while文やfor文に書き換えてわかりやすくしたいのですが
上手く値をbreakできないので助けてください

fn main() {
 let a = [3, 5, 1, 6, 9, 4];
 print_first_even_else_zero(&a);
}
fn print_first_even_else_zero(a: &[i32]) {
 let mut i = a.iter();
 let even = loop {
  if let Some(&n) = i.next() {
   if n % 2 == 0 {
    break n;
   }
  } else {
   break 0; // not found
  }
 };
 println!("{}", even);
}

例えばwhile文なら let even = while let Some(&n) = i.next() { となりそうで
さらに可能ならfor文で let even = for &n in a { となるかと思うのですが