#[derive(Debug, Eq, Ord, PartialEq, PartialOrd)]
struct Worker {
name: String,
company: String,
age:u32
}
impl Worker {
pub fn new(name: String, company: String, age: u32) -> Self {
Worker {
name,
company,
age
}
}
}
fn main() {
let mut workers = vec![
Worker::new("Dana".to_string(), "Google".to_string(), 71),
Worker::new("Avalonr".to_string(), "Microsoft".to_string(), 46),
Worker::new("R2D2".to_string(), "Apple".to_string(), 98),
Worker::new("Albus".to_string(), "OpenAI".to_string(), 67),
Worker::new("3PO".to_string(), "Google".to_string(), 46),
Worker::new("R1D1".to_string(), "Apple".to_string(), 98),
];
workers.sort_unstable_by_key(|item| (item.company.clone(), item.name.clone()));
dbg!(workers);
}
/*
run:
[example.rs:31] workers = [
Worker {
name: "R1D1",
company: "Apple",
age: 98,
},
Worker {
name: "R2D2",
company: "Apple",
age: 98,
},
Worker {
name: "3PO",
company: "Google",
age: 46,
},
Worker {
name: "Dana",
company: "Google",
age: 71,
},
Worker {
name: "Avalonr",
company: "Microsoft",
age: 46,
},
Worker {
name: "Albus",
company: "OpenAI",
age: 67,
},
]
*/