Undocumented if-let behavior with or-patterns
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 70/100
- Type d'issue
- Documentation
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- rust
- Domaine
- documentation
Piste de recherche
Le ticket donne un exemple Rust en deux parties : un if let avec un motif en alternative et une garde &&, et un match avec le même motif en alternative et la même garde. Exécute les deux pour confirmer la différence, puis trouve dans la Référence les chapitres sur les motifs en alternative, les gardes de match, if let et les chaînes de let. C'est terminé lorsque la Référence indique qu'une chaîne de let ne réessaie pas les alternatives du motif quand la condition suivante échoue, alors qu'une garde de match le fait.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Or-patterns in a match can cause a match guard to run multiple times, as each of the or'ed patterns gets tried after the previous one fails in the guard. However, with let-chains, there is no such "backtracking" behavior. This is not documented in the reference.
fn main() {
if let (x, _) | (_, x) = (1, 2)
&& x == 2
{
println!("This is NOT printed.");
}
match (1, 2) {
(x, _) | (_, x) if x == 2 => {
println!("This is printed.");
}
_ => {}
}
}
Relevant discussion: https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/Merging.20destructuring.20assignment.20and.20patterns/near/576565919
- Langage dominant
- Rust
- Étoiles
- 1.6k
- Forks
- 618
- Merge moyen
- 5 h 48 min
- PR mergées (30 j)
- 3
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de rust-lang/reference
-
Document the rules for const UBOuverteA-const-eval A-undefined-behavior
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
rust-lang/reference#2266 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
A-resolve
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 1 jour
-
A-coercions
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
rust-lang/reference#2094 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de rust-lang/reference
Issues similaires
-
good first issue help wanted program
Difficulté 2/5 1-3 heures Accessibilité débutants 83/100
hffgzktbcc-blip/ounce-core#297 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
nautechsystems/nautilus_trader#5631 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 69/100
bytecodealliance/rustix#1736 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
longbridge/gpui-kit#3871 ·
Les mainteneurs répondent en général sous 1 jour
-
area:models enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour