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ę?
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ę?
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.)