One row functional solutions

Con gli interi il problema non sussiste, perché come la documentazione ci insegna, sono già presenti le funzioni:

// max
let a = [1, 2, 3];
let b: Vec<u32> = Vec::new();

assert_eq!(a.iter().max(), Some(&3));
assert_eq!(b.iter().max(), None);

// min
let a = [1, 2, 3];
let b: Vec<u32> = Vec::new();

assert_eq!(a.iter().min(), Some(&1));
assert_eq!(b.iter().min(), None);

Ora vediamo il caso di un vettore di floats, che è quello meno banale.

// Innanzitutto, generiamo un vettore
let vector = vec![0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 8.0, 9.0];

Ora cerchiamo il valore minimo.

// Find min
let x_min = vector.iter().fold(f64::INFINITY, |a, &b| a.min(b));

// Output -> 0.0

Infine, cerchiamo il valore massimo.

// Find max
let x_max = vector.iter().fold(0.0, |a: f64, &b| a.max(b));

// Output -> 9.0