{
    match segments.next() {
        Some(seg) => T::parse(ctx, msg, seg).await.map(Some).map_err(ArgumentError::Argument),
        None => Ok(None),
    }
}

/// Tries to parse many arguments from a list of segments using the [std::str::FromStr] trait.
///
/// Each segment in the list is parsed into a vector of arguments. If parsing