Единственный способ избавиться от Future и работать непосредственно с результатом это дождаться когда этот результат будет вычислен. Используйте concurrent.Await(f: Future[Any], duration) для этого.
Внимание: Эта функция кидает исключение если Future не выполнится за duration
val f = concurrent.Future.successful("myFutureString")
val notFuture = concurrent.Await(f, 1.second)
print(notFuture)
Использовать Await не рекомендуется, делать это нужно в крайних случаях. Я использую Await тогда когда работаю с внешними Api сервисами, чтобы не заддосить запросами, а внутри своего приложения использую map.
Вышеописанный пример можно выполнить и так(рекомендуется):
val f = concurrent.Future.successful("myFutureString")
f.map(res => print(res))