Usando max_by_key en un vector de flotadores

Quiero usarmax_by_key para obtener el valor máximo de un vector def64s basado en una determinada clave. Este es un ejemplo simple, con un pequeño vector yabs como la clave:

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

Sin embargo, desdef64 no implementaOrd, Yo obtengo

    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`

Similar,sort_by_key falla con el mismo error:

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

Sé que puedo sortear la restricción de ordenamiento parcial para ordenar un vector de flotadores consort_by

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

pero eso debería llamarse en un vectorb para lo cual he calculado la clave (en este casoabs) para cada elemento dea, y luego tendría que regresar y encontrar el elemento correspondiente dea, lo que parece complicado y lento. A medida que crece el número de elementos en la lista, me gustaría minimizar los pases a través de los datos.

¿Hay alguna solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta