use std::fs::File;
use std::io::{self, BufRead};
use std::num::ParseIntError;
// 读取文件内容并返回字符串向量
fn read_file_lines(file_path: &str) -> Result<Vec<String>, io::Error> {
let file = File::open(file_path)?;
let reader = io::BufReader::new(file);
reader.lines().collect()
}
// 将字符串向量解析为整数向量
fn parse_lines_to_ints(lines: Vec<String>) -> Result<Vec<i32>, ParseIntError> {
lines.into_iter().map(|line| line.trim().parse()).collect()
}
// 计算整数向量的平均值
fn calculate_average(ints: Vec<i32>) -> Option<f64> {
if ints.is_empty() {
None
} else {
Some(ints.iter().sum::<i32>() as f64 / ints.len() as f64)
}
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let file_path = "example.txt";
let lines = read_file_lines(file_path)?;
let ints = parse_lines_to_ints(lines)?;
let average = calculate_average(ints);
match average {
Some(avg) => println!("Average: {}", avg),
None => println!("No numbers to calculate average."),
}
Ok(())
}