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

Трейт Debug

Трейт Debug из модуля std::fmt позволяет выводить значение в отладочном формате. Он используется совместно с плейсхолдером {:?} в макросах форматирования, таких как println!, format! и dbg!. Реализация этого трейта обычно выполняется автоматически с помощью атрибута #[derive(Debug)]. Параметром метод fmt принимает изменяемую ссылку на объект Formatter, который управляет процессом форматирования.

Синтаксис

#[derive(Debug)] struct MyStruct; impl fmt::Debug for MyStruct { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { // ... } }

Пример

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

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

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

(1, "abcde", 3.14)

Пример

Давайте создадим собственную структуру и автоматически реализуем для неё трейт Debug с помощью атрибута #[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 }

Пример

Давайте используем плейсхолдер {:#?} для красивого многострочного вывода структуры:

#[derive(Debug)] struct Point { x: i32, y: i32, } fn main() { let res = Point { x: 1, y: 2 }; println!("{:#?}", res); }

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

Point { x: 1, y: 2, }

Пример

Давайте реализуем трейт Debug вручную для собственной структуры:

use std::fmt; struct Point { x: i32, y: i32, } impl fmt::Debug for Point { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "Point({}, {})", self.x, self.y) } } fn main() { let res = Point { x: 1, y: 2 }; println!("{:?}", res); }

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

Point(1, 2)

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

  • плейсхолдер placeholder-debug,
    который используется для вывода в отладочном формате
  • плейсхолдер placeholder-pretty,
    который выводит значение в улучшенном отладочном формате
  • трейт Display,
    который отвечает за пользовательское форматирование вывода
  • макрос dbg!,
    который выводит отладочную информацию вместе с именем выражения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить