2014-04-07 10 views
13

Czy istnieje sposób na zagnieżdżenie pętli for w Rust i złamanie zewnętrznej pętli wewnątrz wewnętrznej, tak jak można to zrobić np. w Javie? Wiem, że Rust obsługuje przerwane nazwy w loop, ale nie mogę znaleźć informacji o tym samym w odniesieniu do for.Nazwane przerwy dla pętli w Rust

+0

Nie dokładnie to, czego szukasz, ale zawsze możesz "wrócić" z wnętrza najbardziej wewnętrznej pętli. – ZunTzu

+0

Dziękuję. Jednak to nie jest to, czego potrzebuję, więc prawdopodobnie przeorganizuję kod. –

Odpowiedz

27

Tak. Używa tej samej składni co wcielenia.

fn main() { 
    'outer: for x in range(0u, 5) { 
     'inner: for y in range(0u, 5) { 
      println!("{},{}", x, y); 
      if y == 3 { 
       break 'outer; 
      } 
     } 
    } 
} 

Zobacz loop labels documentation.

+0

Dziękuję. Właśnie tego szukałem (chociaż nie mogłem go znaleźć w oficjalnym podręczniku, przynajmniej dla wersji 0.9). –

+2

@NoeticJun Wspomniano o tym w sekcji [Nieskończone pętle] (http://static.rust-lang.org/doc/0.9/rust.html#infinite-loops) (a następnie wyrażenia Break). Chociaż jest to nieco mylące, ponieważ przykładowy break to 'break foo' zamiast' break 'foo'. Wykorzystuje również zarówno "etykietę", jak i "czas życia", aby odnosić się do tej samej rzeczy. Powinien zostać przepisany. –