Measure time elapsed to produce first item of an iterable

    :arg iterable: any iterable
    :arg function metric: f(name, 1, time)
    :arg str name: name for the metric

def first(iterable = None, *, name = None, metric = call_default):
    """Measure time elapsed to produce first item of an iterable

    :arg iterable: any iterable
    :arg function metric: f(name, 1, time)
    :arg str name: name for the metric
    """
    if iterable is None:
        return _first_decorator(name, metric)
    else:
        return _do_first(iterable, name, metric)