Разница между == и === в 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. Заранее спасибо!