insertBy method

Iterable<T> insertBy(
  1. Order<T> order,
  2. T element
)

Insert element into the list at the first position where it is less than or equal to the next element based on order (Order).

Note: The element is added before an equal element already in the Iterable.

Implementation

Iterable<T> insertBy(Order<T> order, T element) sync* {
  var it = iterator;
  while (it.moveNext()) {
    if (order.compare(it.current, element) < 0) {
      yield it.current;
      continue;
    }
    yield element;
    do {
      yield it.current;
    } while (it.moveNext());
    return;
  }
  yield element;
}