Ясное дело, хочется его обобщить, чтобы обе ветки обрабатывались одинаково. Для этого делаю типаж:
Он сейчас не полон - например, нужен будет ещё Display в ограничениях, но суть ясна.
Уже на данном этапе вылезает проблема того, что у него есть два типа-параметра, которые для двух ветвей моего кода будут разными - Elf32_Half и Elf32_Off в одном случае, и Elf64_Half и Elf64_Off в другом. Это - псевдонимы для u16 и u32 / u16 и u64 соответственно.
Получается, в объявлении let ehdr: <Box<Elf_Ehdr_T<Elf32_Half, Elf32_Off>> = ... всё равно торчат нижележащие типы. И получается, что я не смогу через один объект ehdr работать с Ehdr обеих битностей.