Eugenio
10/09/2016, 11:05 AMinline fun <T, R> List<T>.binarySearch(
element: T,
comparator: Comparator<in T>,
result: (isContained: Boolean, indexOrWouldBeIndex: Int) -> R
): R {
val searchResult = Collections.binarySearch(this, element, comparator)
val isContained = searchResult >= 0
val indexOrWouldBeIndex = if (isContained) searchResult else -(searchResult + 1)
return result(isContained, indexOrWouldBeIndex)
}