не знаю, как там в расте фьючи работают и кто их так называл. Смотри, если у тебя есть задача, которую надо выполнить — она так и называется — Task, задача ещё не выполняется, или уже выполняется, или она уже выполнена, но это само определение задачи — ЧТО надо сделать. Future — это результат отправки задачи на исполнение. Тоесть, когда у тебя есть задача и ты отправляешь её исполняться — с помощью этого хендла в момент 0+T от получения фьючи ты можешь получить результат. Имея только задачу — ты не получишь результат, пока не выполнишь её. Имея фьючу ты получишь результат тогда, когда он тебе нужен будет, не парясь, когда именно он исполнялся и исполнялся ли, мб его просто сразу тебе уже готовым отдали. Если тебе нжуно что-то ленивое — есть Callable. Просто вызываешь его, когда тебе нужно посчитать.
Терминология в разных языках это боль.
По сути в С# Task<T> это CompletionStage<T> в джавке, и Future в расте.
Но как говорил торт, футуры бывают poll бейзед, как в расте.
Я долго не мог понять зачем они в расте пол бейзед, кроме как защита от аллокаций в хипе.
Потом я просветлился и понял, что это гениально.