pub fn run(config: Config) -> Result<(), Box<dyn Error>>
The run function is the entry point for the program. It takes a Config instance and returns a Result.