@file:kotlin.jvm.JvmMultifileClass @file:kotlin.jvm.JvmName("CollectionsKt") package kotlin.collections /** * Returns the given iterator itself. This allows to use an instance of iterator in a `for` loop. * @sample samples.collections.Iterators.iterator */ @kotlin.internal.InlineOnly public inline operator fun Iterator.iterator(): Iterator = this /** * Returns an [Iterator] wrapping each value produced by this [Iterator] with the [IndexedValue], * containing value and it's index. * @sample samples.collections.Iterators.withIndexIterator */ public fun Iterator.withIndex(): Iterator> = IndexingIterator(this) /** * Performs the given [operation] on each element of this [Iterator]. * @sample samples.collections.Iterators.forEachIterator */ public inline fun Iterator.forEach(operation: (T) -> Unit) : Unit { for (element in this) operation(element) } /** * Iterator transforming original `iterator` into iterator of [IndexedValue], counting index from zero. */ internal class IndexingIterator(private val iterator: Iterator) : Iterator> { private var index = 0 final override fun hasNext(): Boolean = iterator.hasNext() final override fun next(): IndexedValue = IndexedValue(index++, iterator.next()) }