Avatar ·

Разница между == и === в Rust

Всем привет! Недавно начал изучать Rust, и столкнулся с неожиданной проблемой при сравнении значений. В некоторых языках (например, JavaScript) есть два оператора сравнения: == (с приведением типов) и === (строгое сравнение без приведения).

Я попробовал использовать === в Rust для сравнения строк, но компилятор выдал ошибку:

fn main() {
    let a = String::from("hello");
    let b = String::from("hello");
    
    if a === b {
        println!("Равны");
    }
}

Ошибка: expected one of ".", ";", "?", "}", or an operator, found "=="

Я ожидал, что === будет работать как строгое сравнение без приведения типов, но, видимо, в Rust такого оператора нет. При этом обычный == работает нормально:

if a == b {
    println!("Равны");
}

Вопрос: какая разница между == и === в Rust? Существует ли вообще оператор ===? Или в Rust все сравнения и так строгие из-за системы типов? Если === нет, то как правильно сравнивать значения с учётом типов? Буду благодарен за объяснение с примерами, особенно для сложных типов вроде Option и Result.

Пробовал гуглить, но нахожу только про JavaScript. Заранее спасибо!