Проблема в том, что функция mean хочет вернуть тот же тип, что и в срезе. Если бы он допускал целые числа, вы могли бы вычислить среднее значение [0, 1], и он вернул бы 0 (1/2 как целое число). Вот почему статистика заставляет вас использовать плавающие типы.
На моей машине работает следующее
// cargo-deps: statistical
extern crate statistical;
use statistical::*;
fn main() {
let alist = [10, 20, 30, 40, 50];
let alist_f64: Vec<f64> = alist.iter().map(|x| f64::from(*x)).collect();
println!("mean of list: {}", mean(&alist_f64));
}
Это печатает это
mean of list: 30
Обратите внимание, что функция collect
сделает копию массива. Было бы лучше, если бы средняя функция принимала итератор в качестве параметра, но, похоже, это не так.