Печать структуры для отладки в Rust
Трейт печати для отладки задает, как значение показывают в текстовом виде с именами полей. Без выполнения этого трейта структуру в формате отладки не вывести: компилятор не знает, как собрать строку из полей.
Пометка печати позволяет вывести поля
структуры целиком. Компилятор сам допишет
выполнение трейта по списку полей, и в
программе останется только вызов печати
с форматом {:?}:
#[derive(Debug)]
struct User {
name: String,
age: i32,
}
fn main() {
let user = User {
name: String::from("ann"),
age: 20,
};
println!("{:?}", user);
}
На экране одна строка с именем типа и значениями полей. Так проще проверять содержимое без ручного вывода каждого поля отдельной командой.
Тот же формат работает и для вложенных значений, если у их типов тоже есть выполнение печати. Добавим второе поле и снова выведем структуру целиком:
#[derive(Debug)]
struct Pair {
left: i32,
right: i32,
}
fn main() {
let pair = Pair { left: 1, right: 2 };
println!("{:?}", pair);
}
Дана структура:
struct User {
name: String,
age: i32,
}
Добавьте пометку печати, соберите
пользователя с именем "kate" и
возрастом 19 и выведите значение
форматом {:?}.
Дана структура:
struct Tag {
code: i32,
label: String,
}
Подключите печать для отладки, создайте
значение с кодом 7 и подписью
"ok" и выведите его одной
командой println! с {:?}.
Скажите, какой формат в println!
нужен, чтобы напечатать структуру с
пометкой печати, и что будет на экране
у полей.