fn extract_name(s: &str) -> &str {
let pos = s.rfind(' ').unwrap();
&s[..pos]
}
fn main() {
let mut v = vec![
"Python 4".to_string(),
"C 9".to_string(),
"C++ 5".to_string(),
"C# 6".to_string(),
"Java 1".to_string(),
"PHP 7".to_string(),
"Go 2".to_string(),
];
v.sort_by_key(|s| extract_name(s).to_string());
println!("{v:?}");
}
/*
run:
["C 9", "C# 6", "C++ 5", "Go 2", "Java 1", "PHP 7", "Python 4"]
*/