Esercizi di Rust

Sort Structs in Rust: Student Ranking

Sort a vector of structs by score and name with sort_by, then compute the average.

  • Principiante
  • 3 min di lettura
  • 1 esempio eseguibile
Cosa imparerai
  • sort_by with a closure
  • then for tie breaks
  • Average with iterators
Ranking
Leo95
Mia82
Zoe82
Ben67
Mia comes before Zoe because the scores are equal.

Sort by score, then by name

Real data is usually a list of records. Sort the students by score from high to low, break ties by name, and print the ranking.

sort_by takes a closure that compares two students. b.score.cmp(&a.score) sorts from high to low, and then falls back to the name when the scores are equal. The average converts the sum to f64 so the division keeps its fraction.

Punti chiave

  1. b.cmp(a) sorts from high to low.
  2. then breaks ties by name.
  3. Convert to f64 before dividing.

Esempio Rust eseguibile

Rust
Esegui il codice →
main.rs
struct Student {
    name: &'static str,
    score: u32,
}

fn main() {
    let mut students = vec![
        Student { name: "Mia", score: 82 },
        Student { name: "Leo", score: 95 },
        Student { name: "Zoe", score: 82 },
        Student { name: "Ben", score: 67 },
    ];

    students.sort_by(|a, b| b.score.cmp(&a.score).then(a.name.cmp(b.name)));
    for (rank, student) in students.iter().enumerate() {
        println!("{}. {} ({})", rank + 1, student.name, student.score);
    }

    let average = students.iter().map(|s| s.score).sum::<u32>() as f64 / students.len() as f64;
    println!("average: {average:.1}");
}
Crea un pulsante Run per questo esempio Risultato dell'esecuzione
1. Leo (95)
2. Mia (82)
3. Zoe (82)
4. Ben (67)
average: 81.5

Esercitati

Apri l'esempio nel compilatore online, cambia un valore o aggiungi una riga e prova a prevedere l'output prima di eseguirlo. Poi rompi il codice di proposito e leggi il messaggio del compilatore.

Hai finito questa lezione?

Segnala come imparata per tenere traccia dei tuoi progressi.

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide