Skip to content
เข้าสู่ระบบ

Comparison - เปรียบเทียบค่า

std::cmp มี traits สำหรับเปรียบเทียบค่าต่างๆ! เป็น module ที่สำคัญมากเพราะใช้ในการ sort, search, และเปรียบเทียบข้อมูล

Traitใช้ทำอะไรต้องการ
PartialEq==, !=-
Eqequality สมบูรณ์PartialEq
PartialOrd<, >, <=, >=PartialEq
Ordtotal orderingEq + PartialOrd

Partial vs Full - ทำไมต้องแยก?

Section titled “Partial vs Full - ทำไมต้องแยก?”
fn main() {
// ============================================
// Partial = บาง values เปรียบเทียบไม่ได้
// ============================================
// NaN (Not a Number) ไม่สามารถเปรียบเทียบได้
let nan = f64::NAN;
println!("=== NaN behavior ===");
println!("NaN == NaN: {}", nan == nan); // false!
println!("NaN != NaN: {}", nan != nan); // true!
println!("NaN < 0.0: {}", nan < 0.0); // false
println!("NaN > 0.0: {}", nan > 0.0); // false
println!("NaN >= NaN: {}", nan >= nan); // false
// partial_cmp return None สำหรับ NaN
println!("partial_cmp: {:?}", nan.partial_cmp(&1.0)); // None
// ============================================
// Full (Eq/Ord) = ทุก values เปรียบเทียบได้
// ============================================
// Integers เปรียบเทียบได้ทุกค่า
let a = 5i32;
let b = 10i32;
println!("\n=== Integer behavior ===");
println!("5 == 5: {}", a == a); // true (reflexive)
println!("cmp: {:?}", a.cmp(&b)); // Less (always Some)
}

เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม

ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด