LINUX.ORG.RU

История изменений

Исправление 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);
  • уметь выводить на печать граф, в котором присутствуют рёбра с «непечатаемыми» данными — с прочерками вместо данных;
  • не дублировать код вывода на печать всего графа.