Usando max_by_key em um vetor de carros alegóricos

Eu quero usarmax_by_key para obter o valor máximo de um vetor def64s com base em uma determinada chave. Este é um exemplo simples, com um pequeno vetor eabs como a chave:

let a: Vec<f64> = vec![-3.0, 0.2, 1.4];
*a.iter().max_by_key(|n| n.abs()).unwrap()

No entanto, desdef64 não implementaOrd, Eu recebo

    error[E0277]: the trait bound `f64: std::cmp::Ord` is not satisfied
 --> src/main.rs:3:15
  |
3 |     *a.iter().max_by_key(|n| n.abs()).unwrap();
  |               ^^^^^^^^^^ the trait `std::cmp::Ord` is not implemented for `f64`

Similarmente,sort_by_key falha com o mesmo erro:

a.sort_by_key(|n| n.abs())

Eu sei que posso contornar a restrição de pedidos parciais para classificar um vetor de carros alegóricos comsort_by

b.sort_by(|m, n| m.partial_cmp(n).unwrap_or(Less))

mas isso teria que ser chamado em um vetorb para o qual calculei a chave (neste casoabs) para cada elemento dea, e então eu teria que voltar e encontrar o elemento correspondente dea, o que parece complicado e lento. À medida que o número de itens na lista aumenta, eu gostaria de minimizar as passagens pelos dados.

Existem soluções alternativas?

questionAnswers(1)

yourAnswerToTheQuestion