2016-06-30 6 views
5

Załóżmy, że f() i g() return Option<T>.Czy z letnim parą zwarć?

if let (Some(x), Some(y)) = (f(), g()) { 
    h(); 
} 

If f() powraca None będą g() być oceniane? Czy ocena jest gwarantowana lub zabroniona przez specyfikację?

Odpowiedz

7

To nie jest skrót. Aby dopasować wzorce do pary, para musi być w pełni skonstruowana, co oznacza, że ​​zostały one wywołane zarówno jako f i g. Nie ma leniwej oceny, w której dopasowanie wzorca może się zdarzyć przed obliczeniem wartości.

(Nawiasem mówiąc, jest to łatwe do wypróbowania, a kompilator Rust dość dużo jest spec teraz.)

Powiązane problemy