fn order_by_max_i32(lst: &[Vec]) -> Vec> { let mut sorted_lst = lst.to_vec(); sorted_lst.sort_by_key(|v| v.iter().max().cloned()); // stable sort by max element return sorted_lst } fn order_by_max_str<'a>(lst: &[&'a str]) -> Vec<&'a str> { let mut sorted_lst = lst.to_vec(); sorted_lst.sort_by_key(|s| s.chars().max()); // stable sort by max char return sorted_lst } fn main() { let check = vec![vec![3,2], vec![6,7,5], vec![1,4]]; println!("{:?}", order_by_max_i32(&check)); // [[3,2],[1,4],[6,7,5]] let check = vec![vec![1], vec![0,1]]; println!("{:?}", order_by_max_i32(&check)); // [[1],[0,1]] let check = vec![vec![0,1], vec![1]]; println!("{:?}", order_by_max_i32(&check)); // [[0,1],[1]] let check = vec!["este","es","el","primero"]; println!("{:?}", order_by_max_str(&check)); // ["el","primero","es","este"] }