На поверхности tokio::run
ожидает a Future
со связанным Error
типом ()
, но фактический Future
импл Receiver
ассоциируется Error
тип RecvError
.
Однако вывод типа Rust работает в обоих направлениях, и ожидаемый и фактический типы иногда можно увидеть наоборот. Обычно формулировка сообщения соответствует вашим ожиданиям, но есть ситуации, подобные этой, когда она ощущается задом наперед. Конечно, не сложно понять, что происходит, и знать, где происходит несовпадение типов, даже если об этом не сообщается наилучшим образом.
Кодирование человеческой интерпретации того, какой тип "фактический" , а какой "ожидаемый" , может быть нелегкой задачей в общем случае, но я согласен, что это Сообщение об ошибке сбивает с толку в коде, который вы предоставили.
Я не мог найти проблему по этому поводу, но я уверен, что видел, как об этом говорили несколько раз раньше. Если об этом сообщалось раньше, не будет большого вреда, если сообщу об этом снова, поэтому я бы просто сделал это.