use ccvl::image::*; pub fn process_image(f: F) -> std::process::ExitCode where F: FnOnce(Image) -> Image, { let args = std::env::args().collect::>(); if args.len() != 3 { println!("Usage: {} IN OUT", args[0].as_str()); return std::process::ExitCode::FAILURE; } let input_path = args[1].as_str(); let output_path = args[2].as_str(); match Image::load::(input_path) { Err(Error::Invalid) => { println!("{} is not a valid image", input_path); std::process::ExitCode::FAILURE } Err(Error::Io(err)) => { println!("I/O error loading image {}: {}", input_path, err); std::process::ExitCode::FAILURE } Ok(img) => match f(img).save::(output_path) { Err(err) => { println!("I/O error saving image {}: {}", output_path, err); std::process::ExitCode::FAILURE } Ok(()) => std::process::ExitCode::SUCCESS, }, } }