Синтаксис для Future, который вы описываете, происходит от объекта-компаньона trait.
Этот объект имеет следующий метод:
def apply[T](body: =>T)(implicit @deprecatedName('execctx) executor: ExecutionContext): Future[T] =
unit.map(_ => body)
Принятым аргументом является функция, возвращающая T, это прекрасноидиоматично передавать его через форму, которую вы видите, которая представляет собой блок кода в квадратных скобках.
При этом вы можете отчасти реализовать свои черты (создавая их анонимные подклассы) следующей компиляцией:
trait t {}
object MyApp extends App {
new t {
println("Test")
}
}
Я бы не рекомендовал это как общую хорошую практику, но он имеет свои применения.