fn parse_arguments<I, R, F>(args: I, f: F) -> Result<(), Error> where
    I: Iterator<Item = R>,
    R: AsRef<str>,
    F: FnMut(&str, Option<&str>) -> Result<(), Error>,