الفرق بين == و === في 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؟