Разница между с и запустить в Kotlin

Делатьwith а такжеrun имеют одинаковую функциональность только с разным синтаксисом, или есть существенные различия междуwith а такжеrun?

Какой правильный путь?

adapter.run {
    notifyDataSetChanged()
    if (activityDetails.isEmpty())
        emptyText.visibility = View.VISIBLE
    else 
       emptyText.visibility = View.GONE
}


with(adapter){
   notifyDataSetChanged()
   if (activityDetails.isEmpty())
       emptyText.visibility = View.VISIBLE
   else 
       emptyText.visibility = View.GONE
}

Ответы на вопрос(2)

Ваш ответ на вопрос