я примерно понимаю что такое трейты
Короч, в расте есть Debug, который автоматически выводится почти всегда — это позволяет быстро распечать рандомную структуру
Есть Display, который дает нужное тебе представление и реализуется руками в нужных местах.
Это и есть "любое форматирование методами", и полиморфизм по-растовски.
При этом Display никак не перекрывает Debug, и их можно использовать параллельно, что иногда лютый вин, в отличие от перегрузок с наследованием.