Например есть енам ошибки. Он реализует трейт фром для кучи других и есть обертка, к которой этот енам автоматом можно привести. В итоге я могу в коде сразу вызвать метод обертки. Компилер поймет, что ошибку А можно привести к Б, а Б к В, а у В есть метод context(). В итоге в коде написано только чтото.context() все остальное магия компилятора и автоматического дерефа и прочих конвертаций типа фром. Я привык к тому, что всю цепочку легко отследить и пройти по шагам...тут же иногда не так.
Если бы была кнопень "развернуть преобразования" в среде разработки, я был бы доволен. Надо поискать, может есть такая. Макросы можно разворачивать нередко.