fn parse_targets(v: &Value, field: &str) -> Result<Vec<Target>, String>Expand description
Parses a {targets: [{host, port}], ...} upstream object into a target
list. Entries missing host/port are skipped; an empty result is an
error (an upstream block must name at least one reachable target).