> loop式はbreakで指定した値を返せるのに
> なぜwhile式やfor式は値を返せないの?
> Option型にしてbreakで値を指定した時だけSome(値)としてそれ以外はNoneとすれば便利なのに

そのloopと組み合わせればよい
(例)
let r = 'result: loop {
 for x in 1..100 {
  for y in 1..100 {
   if x * y > 1234 {
     break 'result Some((x, y));
   }
  }
 }
 break 'result None;
};
assert_eq!(r, Some((13, 95)));