Зачем использовать inline без lambdas

Я пытаюсь понять, как правильно использовать inline модификатор. Я понимаю общий случай, когда мы встраиваем лямбду, чтобы предотвратить избыточное распределение, как описано в документах .

Я проверял kotlin stdlib и нашел в _Strings.kt следующий фрагмент кода:

 @kotlin.internal.InlineOnly public inline fun CharSequence.elementAtOrNull(index: Int): Char? { return this.getOrNull(index) } 

В чем причина использования inline здесь?

Эта конкретная функция и несколько других в kotlin-stdlib отмечены как @InlineOnly так что они не присутствуют в фактических файлах stdlib и доступны только для компилятора Kotlin для их встроенных. Цель, которая достигается таким образом, – уменьшить количество методов в артефактах, что важно для Android.

Кроме того, использование inline функций без lambdas полезно для переопределения параметров типа .

Все еще накладные расходы, как бы незначительны они ни были, можно избежать.

Аналогичное обсуждение свойств внутренних линий.

Сообщение о расширениях Kotlin, которые попадают в эффекты байт-кода

Я бы сказал, что это связано с эффективностью. Вместо вызова функций elementAtOrNull и, таким образом, getOrNull этот вызов вызывается напрямую.