0Pricing
Learn Rust Coding · Leçon

Liaison avec @

Capturer et tester

Liaison avec @ est une leçon Learn Rust Coding gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Learn Rust Coding, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Learn Rust Coding comprend 4 leçons au total.

L'opérateur de liaison @

L'opérateur @ vous permet de tester une valeur par rapport à un motif et de l'associer à un nom en même temps. Vous obtenez à la fois la vérification et la valeur.

Le problème résolu

Avec un motif d'intervalle, vous savez qu'une valeur se trouve dans l'intervalle, mais vous perdez l'accès à sa valeur précise. @ la capture tout en vérifiant l'intervalle.

Liaison @ de base

Ici, nous faisons correspondre un nombre dans un intervalle et conservons sa valeur exacte grâce à id.

fn main() {
    let n = 5;
    match n {
        id @ 1..=5 => println!("got {id} in range"),
        _ => println!("out of range"),
    }
}

Sans @

Comparaison : un bras d'intervalle simple établit une correspondance, mais ne peut pas nommer la valeur ; vous ne pouvez donc pas afficher quel nombre a correspondu.

fn main() {
    let n = 5;
    match n {
        1..=5 => println!("in range (value unknown here)"),
        _ => println!("out of range"),
    }
}

@ avec des données d'énumération

Effectuez la liaison d'un champ tout en le contraignant. Ici, nous capturons l'identifiant uniquement s'il se trouve dans un intervalle valide.

enum Message {
    Hello { id: i32 },
}

fn main() {
    let msg = Message::Hello { id: 7 };
    match msg {
        Message::Hello { id: id @ 3..=10 } => {
            println!("valid id {id}");
        }
        Message::Hello { id } => {
            println!("other id {id}");
        }
    }
}

Lier la valeur entière

@ peut également lier une valeur structurée entière pendant qu'un motif imbriqué vérifie ses parties.

fn main() {
    let point = (3, 4);
    match point {
        p @ (x, _) if x > 0 => println!("{:?} has positive x", p),
        p => println!("{:?}", p),
    }
}

Combiner avec |

Vous pouvez effectuer une liaison dans plusieurs motifs alternatifs. Le nom doit apparaître dans chaque branche alternative.

fn main() {
    let code = 404;
    match code {
        c @ (400 | 404 | 500) => println!("error code {c}"),
        c => println!("code {c}"),
    }
}

@ dans if let

Les liaisons avec @ fonctionnent également dans if let.

fn main() {
    let value = Some(50);
    if let Some(n @ 1..=100) = value {
        println!("in range: {n}");
    }
}

Quand utiliser @

Utilisez @ lorsque vous avez besoin à la fois :

  • de restreindre une valeur avec un intervalle ou un sous-motif
  • d'utiliser cette valeur exacte dans le corps du bras

Sans ces deux besoins, une liaison ou un motif simple est plus approprié.

Lisibilité

La forme se lit name @ pattern : effectuer la liaison de name si la valeur correspond à pattern. Choisissez des noms explicites afin que l'intention soit claire.

Regrouper avec @

Une utilisation courante consiste à classer une valeur dans des catégories nommées tout en conservant le nombre d'origine pour les rapports.

fn classify(temp: i32) -> String {
    match temp {
        t @ ..=0 => format!("freezing ({t})"),
        t @ 1..=20 => format!("cool ({t})"),
        t @ 21..=30 => format!("warm ({t})"),
        t => format!("hot ({t})"),
    }
}

fn main() {
    println!("{}", classify(25));
}

Vérification rapide

Que fait l'opérateur @ dans un motif comme id @ 1..=5 ?

Récapitulatif

Vous avez appris l'opérateur de liaison @ :

  • Il lie une valeur à un nom tout en la testant par rapport à un motif
  • Il résout le problème de la valeur perdue avec les motifs d'intervalle
  • Il fonctionne avec les données d'énumération, les tuples, les alternatives | et if let
  • Utilisez-le lorsque vous avez besoin à la fois de la contrainte et de la valeur

Questions Fréquemment Posées

La leçon « Liaison avec @ » est-elle gratuite ?

Oui — le texte complet de « Liaison avec @ » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Learn Rust Coding, passe à CoddyKit PRO. Le cours Learn Rust Coding comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Liaison avec @ » ?

Capturer et tester Tu pratiques Learn Rust Coding avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Learn Rust Coding ?

Aucune expérience préalable n'est requise. Learn Rust Coding sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Liaison avec @ » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Learn Rust Coding ?

Oui. Chaque leçon Learn Rust Coding inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Analyse approfondie de match
  2. if let et while let
  3. Liaison avec @
  4. Déstructuration
← Retour à Learn Rust Coding