хитрость с .map(), не пойму, как оно.
.map(|_| DeadlineStatus::Timeout) это?
На 10 строчке мап вызывается с замыканием, которое игнорирует свой единственный аргумент и возвращает DeadlineStatus::Timeout. В 11 мап вызывается в функцией DeadlineStatus::Meet (подозреваю что это енам)
Ну а он что, получается, теряет объект Timeout? Который из токиё.
Почему теряется? Timeout имплементирует Future<Output = ...>, мап превращает выражение в Future<Output = DeadlineStatus>
Просто по результату фьючи будет не "какой-то не понятный тип" из Timeout, а конкретный вариант энама из DeadlineStatus. Позже, скорее всего, этот тайм-аут кладется куда-то и обрабатывается с другими источниками таких же событий (deadlinestatus). Короче это чисто замена одного результата фьючи на другой
Ничего не понял. Вот Timeout::new возвращает Result(Timeout), на который потом делают .map(|_| DeadlineStatus::Timeout) я так понимаю, что если аргумент просто пропускается, то он вместо объекта Timeout возвращает часть енама.
Там вопрос (?), map делается на Timeout, а не Result
Аа, ну да. И всё же, что делает map к Timeout?
Как и на всех фьючах — вызывает функцию, когда фьюча отрезолвится
Т.е. когда пройдёт данный промежуток времени, он выплюнет DeadlineStatus::Timeout?
Чудеса асинхронного программирования. Спасибо.
А на Option мапа чудес не делает?
В каком смысле?
Обсуждают сегодня