плюс у них есть всегда есть однозначно привязанный модуль, куда можно еще какой-то дополнительной меты или кода написать.
например, вот у нас трифт, который в эрланге превращается в рекорд в hrl + модуль с метаинформацией, и есть в трифтовом протоколе самопальные union-ы - явный дискриминатор в отдельном поле и несколько взаимоисключающих полей, имя заполненного из которых лежит как раз в дискриминаторе.
это лучше стандартных юнионов трифта, потому что помимо взаимоисключающих полей в такую структурку можно положить еще несколько дополнительных сверху. с юнионами вроде бы так нельзя и в любом случае не стоит.
так вот, в эрланге, если писать обобщенную функцию "достать заполненное поле", в нее всегда нужно явно передавать имя модуля с метаинформацией. это не сказать, что удобно. эликсировские структуры эту проблему решают, если метаинформацию трифта положить прямо в модуль со структурой.