Avatar ·

Différence entre == et === en Rust

Bonjour à tous ! J'ai récemment commencé à étudier Rust et j'ai rencontré un problème inattendu lors de la comparaison de valeurs. Dans certains langages (par exemple, JavaScript), il existe deux opérateurs de comparaison : == (avec conversion de type) et === (comparaison stricte sans conversion).

J'ai essayé d'utiliser === en Rust pour comparer des chaînes, mais le compilateur a généré une erreur :

fn main() {
    let a = String::from("hello");
    let b = String::from("hello");
    
    if a === b {
        println!("Égaux");
    }
}

Erreur : expected one of ".", ";", "?", "}", or an operator, found "=="

Je m'attendais à ce que === fonctionne comme une comparaison stricte sans conversion de type, mais apparemment, cet opérateur n'existe pas en Rust. En revanche, le == normal fonctionne correctement :

if a == b {
    println!("Égaux");
}

Question : quelle est la différence entre == et === en Rust ?