Получение связанного выходного типа реализации Add с учетом типов LHS и RHS
В Rust есть ли способ на уровне типов вызвать реализацию Add
с помощью типов LHS (Self
) и RHS, чтобы использовать ее тип Output
(скажем, возвращаемый тип универсальной функции)?
1 ответ:
Есть, хотя это действительно похоже на черную магию.
Вам нужно объединить 3 бита синтаксиса:
- реализация признака типа доступна через
<Type as Trait>
- указание
RHS
просто требует передачи его в качестве параметраAdd<???>
- и, наконец, получение ассоциированного типа признака просто требует использования
Trait::OutputType
(что может быть неоднозначным)Комбинируя 3 вместе мы получаем
<Self as Add<RhsType>>::Output
.