История изменений
Исправление intelfx, (текущая версия) :
Анонимус, DarkEld3r и все-все-все: вот вы говорите, что решать эту задачу посредством специализации — это плохо, что использовать fmt::Display для получения текстового отображения сложных типов — это плохо, и так далее.
А как надо?
Вот у меня есть тип данных «граф», который реализован как матрица смежности. Есть тип данных «ребро» (то, что хранится в матрице смежности), и к нему могут быть приаттачены произвольные данные. Я хочу уметь распечатывать состояние графа. Использовать для этого fmt::Debug неудобно, т. к. будет слишком вербозно и нечитабельно.
При этом я хочу:
- уметь выводить на печать граф, в котором присутствуют рёбра с «печатаемыми» данными (в т. ч. с теми, где fmt::Display);
- уметь выводить на печать граф, в котором присутствуют рёбра с «непечатаемыми» данными — с прочерками вместо данных;
- не дублировать код вывода на печать всего графа;
- не имплементить какие-либо свои трейты для всех фундаментальных типов.
При этом я готов:
- явно указывать при выводе, как именно я хочу вывести граф (по первому или по второму пункту).
Как сделать это по феншую, с соблюдением этих ваших SOLID'ов и так далее?
Исправление intelfx, :
Анонимус, DarkEld3r и все-все-все: вот вы говорите, что решать эту задачу посредством специализации — это плохо, что использовать fmt::Display для получения текстового отображения сложных типов — это плохо, и так далее.
А как надо?
Вот у меня есть тип данных «граф», который реализован как матрица смежности. Есть тип данных «ребро» (то, что хранится в матрице смежности), и к нему могут быть приаттачены произвольные данные. Я хочу уметь распечатывать состояние графа. Использовать для этого fmt::Debug неудобно, т. к. будет слишком вербозно и нечитабельно.
При этом я хочу:
- уметь выводить на печать граф, в котором присутствуют рёбра с «печатаемыми» данными (в т. ч. с теми, где fmt::Display);
- уметь выводить на печать граф, в котором присутствуют рёбра с «непечатаемыми» данными — с прочерками вместо данных;
- я готов явно указывать при выводе, как именно я хочу вывести граф (по первому или по второму пункту);
- не дублировать код вывода на печать всего графа.
Исходная версия intelfx, :
Анонимус, DarkEld3r и все-все-все: вот вы говорите, что решать эту задачу посредством специализации — это плохо, что использовать fmt::Display для получения текстового отображения сложных типов — это плохо, и так далее.
А как надо?
Вот у меня есть тип данных «граф», который реализован как матрица смежности. Есть тип данных «ребро» (то, что хранится в матрице смежности), и к нему могут быть приаттачены произвольные данные. Я хочу уметь распечатывать состояние графа. Использовать для этого fmt::Debug неудобно, т. к. будет слишком вербозно и нечитабельно.
При этом я хочу:
- уметь выводить на печать граф, в котором присутствуют рёбра с «печатаемыми» данными (в т. ч. с теми, где fmt::Display);
- уметь выводить на печать граф, в котором присутствуют рёбра с «непечатаемыми» данными — с прочерками вместо данных;
- не дублировать код вывода на печать всего графа.