Вы можете использовать синтаксис Item =
:
fn parse<I: ToString, T: Iterator<Item = I>>(mut args: T) -> Result<String, String>
Это позволяет еще больше упростить это с помощью синтаксиса impl
:
fn parse<T: Iterator<Item = impl ToString>>(mut args: T) -> Result<String, String>
и наконец:
fn parse(mut args: impl Iterator<Item = impl ToString>) -> Result<String, String>
Я бы посчитал эту альтернативу более читабельной.