שימוש במערכים אסוציאטיביים

Rust:
שימוש במערכים אסוציאטיביים

איך עושים:

בראסט, הטיפוס HashMap מהמודול std::collections מספק את פונקציונליות המערכים האסוציאטיביים. הנה איך אפשר לעבוד איתם:

use std::collections::HashMap;

fn main() {
    // יצירת HashMap חדש
    let mut scores = HashMap::new();

    // הוספת ערכים
    scores.insert(String::from("Blue"), 10);
    scores.insert(String::from("Yellow"), 50);

    // גישה לערכים
    let team_name = String::from("Blue");
    if let Some(score) = scores.get(&team_name) {
        println!("ניקוד לקבוצת בלו: {}", score); // פלט: ניקוד לקבוצת בלו: 10
    }

    // עדכון ערך
    scores.entry(String::from("Blue")).and_modify(|e| *e += 5);

    // חיפוש מעבר על זוגות מפתח-ערך
    for (key, value) in &scores {
        println!("{}: {}", key, value); // פלט: Blue: 15, Yellow: 50
    }
}

ניתוח עמוק

הHashMap בראסט משתמש בפונקציה של גיבוב למיפוי מפתחות לערכים, מה שמאפשר חיפוש נתונים מהיר. עם זאת, יעילות זו באה עם מחיר: מפות גיבוב אינן שומרות על סדר האלמנטים שלהן. זה בניגוד ליישומי מערכים אסוציאטיביים אחרים, כמו אלה בפייתון (dict) או ברובי, שבגרסאות האחרונות מתחזקים את סדר ההכנסה כתכונה. למקרים שבהם סדר זוגות המפתח-ערך חשוב, מפתחי ראסט יכולים לשקול להשתמש בBTreeMap מהמודול std::collections, ששומר על סדר אך עשוי להציע הכנסה וחיפוש איטיים יותר לעומת HashMap. בסופו של דבר, הבחירה בין HashMap לBTreeMap תלויה בדרישות הספציפיות בנוגע לסדר וביצועים.