РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
757 of 1245 menu

Плейсхолдер {:#?

}

Плейсхолдер {:#?} используется в макросах форматирования для вывода отладочной информации в «красивом» виде. Он работает аналогично плейсхолдеру {:?}, но добавляет альтернативное форматирование: вложенные элементы структур, перечислений, массивов и векторов выводятся с отступами и переносами строк. Параметром плейсхолдер принимает значение, реализующее трейт Debug.

Такой вывод особенно удобен при отладке сложных вложенных структур данных, когда обычный {:?} выводит всё в одну длинную строку.

Синтаксис

println!("{:#?}", value);

Пример

Давайте выведем вектор чисел с помощью плейсхолдера {:#?}:

fn main() { let res = vec![1, 2, 3, 4, 5]; println!("{:#?}", res); }

Результат выполнения кода:

[ 1, 2, 3, 4, 5, ]

Пример

Сравните с обычным отладочным выводом через {:?}:

fn main() { let res = vec![1, 2, 3, 4, 5]; println!("{:?}", res); }

Результат выполнения кода:

[1, 2, 3, 4, 5]

Пример

Давайте выведем вектор строк с помощью плейсхолдера {:#?}:

fn main() { let res = vec!["a", "b", "c", "d", "e"]; println!("{:#?}", res); }

Результат выполнения кода:

[ "a", "b", "c", "d", "e", ]

Пример

Плейсхолдер {:#?} особенно полезен для вложенных структур. Давайте выведем вектор векторов:

fn main() { let res = vec![vec![1, 2], vec![3, 4]]; println!("{:#?}", res); }

Результат выполнения кода:

[ [ 1, 2, ], [ 3, 4, ], ]

Пример

Давайте применим плейсхолдер {:#?} к кортежу:

fn main() { let res = (1, "abcde", 3.14); println!("{:#?}", res); }

Результат выполнения кода:

( 1, "abcde", 3.14, )

Смотрите также

  • плейсхолдер {:?},
    который выполняет обычный отладочный вывод
  • плейсхолдер {},
    который выполняет пользовательский вывод через трейт Display
  • трейт Debug,
    который обеспечивает отладочное форматирование значений
  • макрос dbg!,
    который выводит значения в отладочном виде вместе с именем файла и строкой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить