Avatar ·

Diferença entre == e === em Rust

Olá a todos! Recentemente comecei a estudar Rust e me deparei com um problema inesperado ao comparar valores. Em algumas linguagens (por exemplo, JavaScript), existem dois operadores de comparação: == (com coerção de tipos) e === (comparação estrita sem coerção).

Tentei usar === em Rust para comparar strings, mas o compilador gerou um erro:

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

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

Esperava que === funcionasse como uma comparação estrita sem coerção de tipos, mas aparentemente esse operador não existe em Rust. Enquanto isso, o == normal funciona perfeitamente:

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

Pergunta: qual é a diferença entre == e === em Rust?