Rustで関数型のように書くなら

use std::env;
use std::fs::File;
use std::io::{self, BufRead, BufReader};

fn main() -> io::Result<()> {
 env::args()
  .skip(1)
  .inspect(|file_name| println!("{file_name}"))
  .map(|file_name| {
   File::open(file_name).and_then(|file| {
    BufReader::new(file)
     .lines()
     .enumerate()
     .map(|(i, line)| line.map(|line| println!("{}: {line}", i + 1)))
     .collect()
   })
  })
  .collect()
}