Como ordenar um vetor em Rust: crescente, decrescente e com lógica personalizada
Olá! Acabei de começar a aprender Rust e me deparei com um problema: não consigo entender como ordenar um vetor corretamente. Estou acostumado com Python, onde posso simplesmente chamar `sorted()`, mas aqui é diferente.
Digamos que eu tenha um vetor de números: `let mut numbers = vec![5, 2, 8, 1, 9];`. Quero ordená-lo em ordem crescente para obter `[1, 2, 5, 8, 9]`. Depois, talvez precise ordenar em ordem decrescente. Tentei escrever algo como `numbers.sort()` e parece funcionar, mas não tenho certeza se está correto.
Também tenho um vetor de strings: `let mut words = vec!["banana", "apple", "cherry", "date"];`. Como ordená-lo em ordem alfabética? E se eu quiser ordenar pelo comprimento da string (por exemplo, da mais curta para a mais longa)?
E por último: tenho uma struct `Person` com campos `name` e `age`. Criei um vetor `Vec`. Como ordená-lo primeiro por idade e depois por nome? Em Python eu usaria `lambda` ou `itemgetter`, e em Rust, o quê?
Por favor, explique com exemplos.