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