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؟