Плейсхолдер {:?
Плейсхолдер {:?} применяется в макросах форматирования,
таких как println!, format! и других, для вывода
значений в отладочном формате. Он требует, чтобы тип значения
реализовывал типаж Debug. В отличие от плейсхолдера
{}, который использует типаж Display и предназначен
для пользовательского вывода, {:?} показывает внутреннее
представление значения, удобное для отладки. Параметром
плейсхолдер принимает значение, которое нужно вывести в
отладочном формате.
Синтаксис
println!("{:?}", value);
Пример
Давайте выведем строку "abcde" в отладочном формате:
fn main()
{
let res = "abcde";
println!("{:?}", res);
}
Результат выполнения кода:
"abcde"
Обратите внимание, что в отличие от плейсхолдера {},
плейсхолдер {:?} выводит строку вместе с кавычками.
Пример
Давайте выведем вектор чисел в отладочном формате:
fn main()
{
let res = vec![1, 2, 3, 4, 5];
println!("{:?}", res);
}
Результат выполнения кода:
[1, 2, 3, 4, 5]
Пример
Давайте выведем кортеж в отладочном формате:
fn main()
{
let res = (1, "abcde", 2.5);
println!("{:?}", res);
}
Результат выполнения кода:
(1, "abcde", 2.5)
Пример
Давайте выведем структуру в отладочном формате.
Для этого необходимо добавить атрибут #[derive(Debug)]:
#[derive(Debug)]
struct Point
{
x: i32,
y: i32,
}
fn main()
{
let res = Point { x: 1, y: 2 };
println!("{:?}", res);
}
Результат выполнения кода:
Point { x: 1, y: 2 }