extent<T> function
Returns the minimum and maximum values in i, according to the order
specified by the compare function, in an Extent instance. Always
returns an Extent, but Extent.min and Extent.max may be null if i
is empty.
The compare function must act as a Comparator. If compare is omitted,
Comparable.compare is used. If i contains null elements, an exception
will be thrown.
If i is empty, an Extent is returned with null values for min
and max, since there are no valid values for them.
Implementation
Extent<T> extent<T>(Iterable<T> i, [Comparator<T>? compare]) {
if (i.isEmpty) return Extent(null, null);
final Comparator<T> compare0 = compare ?? _compareAny;
var iterator = i.iterator;
var hasNext = iterator.moveNext();
if (!hasNext) return Extent(null, null);
var max = iterator.current;
var min = iterator.current;
while (iterator.moveNext()) {
if (compare0(max, iterator.current) < 0) max = iterator.current;
if (compare0(min, iterator.current) > 0) min = iterator.current;
}
return Extent(min, max);
}