6
Można użyć if let
do wzorca meczu w zakresie:Wiele wzorców nie działa w razie niech
let n=1
if let 1...3 = n { println!("found in range") }
ale nie może to działać na wielu wzorach:
// this does not compile
if let 1 | 2 | 3 = n { println!("found in pattern") }
// -^ unexpected token
myślałem, że drugie if let
zostało zastąpione przez:
// this does compile and work
match n {
1 | 2 | 3 => println!("found in pattern"),
_ => {}
}
co daje? Czy używam niewłaściwej składni? Czy moje oczekiwania, że wiele wzorców powinno działać po prostu źle? Czy to po prostu nie jest realizowane?
https://github.com/rust-lang/rfcs/issues/935 – interjay
@interjay ah dzięki, więc to nie jest po prostu zaimplementowane. Problem github wspomina wiele wzorców, ale wtedy dyskusja skupia się na strażnikach. Z jakiegoś powodu (brzydka składnia wynikowa?) Byłem mniej zaskoczony, że strażnicy nie działają, jeśli pozwolili. Rangi działające wbrew wielokrotnym wzorom nie działają wydają mi się nieco mniej intuicyjne ... –